复习:
1. 运算符
算术:
% - 取余 - 注意结果的正负号
++/--在变量之前需要先自增后运算;在变量之后先运算后自增;byte/short/char参与运算
赋值:
除了=,其他的符号都要求变量先有值才能使用
byte/short/char可以参与赋值运算
不允许连等定义但是允许连等赋值
比较:
不允许用比较运算符表示一个连续的范围 --- 3 < n < 5
逻辑:
^:相同为假不同为真
&&和||的短路特性
位:
针对整数的补码进行运算
交换值的方式:追尾法、加减法、异或法
三元:
执行顺序:先执行逻辑值,如果逻辑值为true则执行表达式1;反之执行表达式2
三元表达式中的两个式子的结果类型必须能够转化
流程控制
顺序结构:指代码从上到下从左到右依次编译运行
分支结构
判断结构
if(){}
if(){}else {}
if(){}else if(){}
练习:输入一个数字,然后输出这个数字表示星期几
3 -> 星期三
选择结构
switch(选择){
case 选项1:Code1;break;
case 选项2:Code2;break;
...
}
switch()中需要一个选项,选项只能是byte/short/char/int,从JDK1.7开始,允许使用String
如果每一个case之后都有break,case顺序不影响结果
如果有一个或者多个case之后没有break,那么这个时候case之间的顺序影响结果
练习:输入两个数字以及一个符号,输出这两个数字在这个符号下运算产生的结果
5 9 + -> 14
switch(){
case “+”:...
case “-”:...
}
练习:输入三个数字表示年月日,输出这一天在这一年是第几天
2012 3 5 ---> 65
2014 3 5 ---> 64
需要判断平年闰年:逢百整除400;不逢百整除4
2012 % 4 == 0 --- true
2100 % 400 == 0 --- false
循环结构
用于完成一些相同或者相似的重复的操作
while(逻辑值){
Code;
}
执行顺序:
练习:
1. 求1-100以内所有的奇数的和 --- i = 1; i += 2;
2. 打印100以内能被3整除而不能被7整除的数字 --- 先获取3的倍数 int i = 0; i += 3;
3. 输入一个数字,输出这个数字是一个几位数
4. 输入一个数字,输出这个数字的所有的因数 --- 从1开始,逐个数字取余这个输入的数字,看是否能够整除
20:1 2 4 5 10 20
定义一个循环,需要三个要素:定义一个变量来控制次数,利用判断条件决定循环结束;在循环过程中需要改变变量
do{
Code;
} while(逻辑值);
注意:无论条件是否满足,do-while的循环体必然至少执行一次。
for(定义循环变量; 控制条件; 改变循环变量){
Code;
}
习惯上如果变化不规律或者次数不确定一般使用while循环;如果变化规律或者是次数固定,一般是用for循环
求1-10的和 --- for循环
int sum = 0;
for(int i = 1; i <= 10; i++){
sum += i;
}
从控制台获取一个大于10的奇数
Scanner s = new Scanner(System.in);
int n = s.nextInt();
// 使用while循环
while(n < 10 || n % 2 == 0){
n = s.nextInt();
}
// 使用for循环
for(; n < 10 || n % 2 == 0; n = s.nextInt()){
}
练习:打印九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
。。。
练习:
百钱百鸡 --- 3文钱1只公鸡,2文钱1只母鸡,1文钱3只小鸡;100文钱如何买恰好100只鸡? --- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为100
break和continue
break:用于选择结构和循环结构,表示结束当前的一层结构
continue:只能用于循环结构,表示跳过本次循环继续下次循环(只能跳过一层循环)
扩展作业:一个循环打印九九乘法表
数组
存储同一类型的多个数据的容器---大小是固定的
数组会对放入其中的数据(元素)进行编号,编号是从0开始的 - 下标
数组的容量 --- 长度
定义格式
数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[5]; --- 表示定义一个能存储5个整型元素的数组
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3......};
int[] arr = new int[]{1,2,5,6,8,9,6};
int[] arr={1,5,8,6,3};
给定了数组的数据,也确定了数组的长度。
内存
Java将所占用的内存划分为了5块:栈内存、堆内存、方法区、本地方法栈、PC计数器(寄存器)
栈内存
用于存储变量的。变量在栈内存使用完成之后会立即移除出栈内存。
堆内存
用于存储对象(数组是一种特殊的对象)的。元素在存入堆内存中之后会自动的赋予默认值:
byte/short/int - 0 long - 0L float - 0.0f
double - 0.0 char - ‘\u0000’ boolean - false,其他类型的默认值都是null。
对象在用完之后是在不确定的某个时刻被回收。
预习: logab = logcb/logca logabn = nlogab logab = loga + logb