今天内容:
(1)运算符
(2)分支结构
(3)循环结构
1运算符
1.1赋值运算符
(1)简单赋值
= 表示赋值运算符,用于将=右边的数据赋值给=左边的变量来覆盖原来的数值。
笔试题:
ia == 5; - 用于判断变量ia的数值是否等于5
5 == ia; - 用于判断5是否等于ia的数值,推荐使用该方式
ia = 5; - 用于使用数据5给变量ia赋值,覆盖ia原来的数值
5 = ia; - 编译报错
(2)复合赋值
+= -= *= /= ...
笔试题:
byte b1 = 3;
与b1 += 2真正等价的是b1 = (byte)(b1 + 2);
1.2 移位运算符
<< 表示左移运算符,用于将变量的二进制位向左移动,右边用0填充。
>> 表示右移运算符,用于将变量的二进制位向右移动,左边用符号位填充。
>>> 表示无符号右移运算符,用于将变量的二进制位向右移动,左边用0填充。
1.3 位运算符
& 表示按位与运算符,用于按照二进制位进行与运算,同1为1,一0为0(1-真 0-假)
| 表示按位或运算符,用于按照二进制位进行或运算,一1为1,同0为0.
~ 表示按位取反运算符,1为0,0为1.
^ 表示按位异或运算符,用于按照二进制位进行异或运算,相同为0,不同为1.
1.4 运算符的优先级
a.()的优先级极高
b. =的优先级极低
c. * / %的优先级高于+ -,同级的运算符哪个在前先算哪个
2.分支结构
2.1 基本概念
当需要在程序进行条件判断来决定是否执行后面代码的场合中,可以使用分支结构。
2.2 if分支结构
(1)语法格式
if(条件表达式){
语句块;
}
(2)执行流程
判断条件表达式是否成立
=> 若成立,则执行语句块;
=> 若不成立,则跳过语句块;
2.3 if-else分支结构
(1)语法格式
if(条件表达式){
语句块1;
}
else{
语句块2;
}
(2)执行流程
判断条件表达式是否成立
=> 若成立,则执行语句块1;
=> 若不成立,则执行语句块2;
2.4 if-else if-else分支结构
(1)语法格式
if(条件表达式1){
语句块1;
}
else if(条件表达式2){
语句块2;
}
...
else{
语句块n;
}
(2)执行流程
判断条件表达式1是否成立
=> 若成立,则执行语句块1
=> 若不成立,则判断条件表达式2是否成立
=> 若成立,则执行语句块2
=> 若不成立,则执行语句块n
2.5 switch-case分支结构
(1)语法格式
switch(变量/表达式){
case 字面值1: 语句块1; break;
case 字面值2: 语句块2; break;
...
default:语句块n;
}
(2)执行流程
计算变量/表达式的结果 => 判断是否匹配字面值1
=> 若匹配,则执行语句块1 => 执行break跳出当前结构
=> 若不匹配,则判断是否匹配字面值2
=> 若匹配,则执行语句块2 => 执行break跳出当前结构
=> 若不匹配,则执行语句块n
(3)注意事项
switch()中支持的类型有:byte、short、char以及int类型,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型。
3.循环结构
3.1 基本概念
在某些特殊场合中需要重复着执行一段代码时,则借助循环结构。
3.2 for循环
(1)语法格式
for(初始化表达式; 条件表达式; 修改初始值表达式){
循环体;
}
(2)执行流程
执行初始化表达式 => 判断条件表达式是否成立
=> 若成立,则执行循环体 => 执行修改初始值表达式 => 判断条件表达式是否成立
=> 若不成立,则循环结束
3.3 break和continue
break关键字可以使用在switch-case分支结构和循环结构中,用于跳出当前结构。
continue关键字只能使用在循环结构中,用于结束本次循环继续下一次循环(会用即可)。
3.4 特殊的循环
for(;;) - 像这种没有任何循环条件的循环叫做无限循环,俗称"死循环"。
该循环通常与break关键字搭配使用。