学习笔记day04
运算符
赋值运算
+= -= *= /= %=
ex:i+=1;等价于i=i+1;
但是赋值运算具有隐性的类型转换
ex:byte b = 126;b += 2;不会报错,但是 b = b+2;则会报错
byte b = 126; b += 2;//此行不会报错,但是结果超出byte取值范围,精度丢失 b = b + 2;//此行会报错,因为计算时默认会提升类型为int,而b是byte
比较运算
> < >= <= == !=
比较运算的最终结果是一个boolean类型
== 和=的区别
==:比较运算
=:赋值符号
比较运算一般用于选择和循环判断条件
三目运算
布尔型 ? 变量1 : 变量2
判断布尔值(可以是最终结果为布尔值的表达式),为true则输出变量1,为false则输出变量2;
注:三目运算的结果
直接打印时允许y和z的类型不一致
使用变量接收结果时y和z的类型必须一致
1 //声明一个int变量 2 int i = 46; 3 //使用三元运算判断i是奇数还是偶数,并用一个字符串接收 4 String numType = i%2 == 1 ? "奇数" : "偶数"; 5 //输出结果 6 System.out.println(numType);
逻辑运算
& | ! && ||
将多个比较运算汇聚最终结果,是一个boolean类型
&:两边同时为true才为true,否则为false
|:两边同时为false才为false,否则为true
!:取反,原本是true则为false,原本是false则为true
&&和||结果同&和|一样,&&和||具有短路效果,当左边已经能确定最终结果后,右边不再执行
1 int num = 78; 2 3 System.out.println(num < 60 && num++ < 80); 4 5 System.out.println(num); 6 7 //这里输出的num就是78,因为num<60已经能确定结果为false,则num++不会执行
选择结构
if结构
单分支结构:
if(boolean表达式){
//功能语句
}
效果:当boolean表达式的值为true的时候 ,执行内部功能语句
双分支结构:
if(boolean表达式){
//功能语句1
}else{
//功能语句2
}
效果:当boolean表达式的值为true的时候 ,执行内部功能语句1,为false的时候执行功能语句2
多分支结构:
if(boolean表达式1){
//功能语句1,判断boolean值为true,进入此代码块,后面的elseif不再执行
}else if(boolean表达式2){
//功能语句2
}else if(boolean表达式3){
//功能语句3
}else if(boolean表达式4){
//功能语句4
}else{
//当上面的条件都不满足的时候 执行此处的代码
}
switch结构
变量可以为:byte short int char String 枚举
switch(value){ //此处的value可以是byte、short、int、char、String、枚举
case 变量的可能值1:
功能语句1
break; //break用于中断当前的选择结构
case 变量的可能值2:
功能语句2
break;
case 变量的可能值3:
功能语句3
break;
case 变量的可能值4:
功能语句4
break;
default: //如果上面值都没匹配上,默认执行语句
功能语句5
break;
}
break可以省略,value匹配case的值
当break省略时,直到value匹配上case的值,进入功能语句,此时选择语句不会中断,而是会继续往下穿透,
执行下一个case的功能语句,直到遇到break或者所有switch选择执行完
default如果书写在最前面,一般情况都是添加break,如果不加,把所有的case语句都执行一次
default如果书写在最后面,一般可以省略break
1 //利用switch穿透特性可以做的事 2 //声明变量月份 3 String m = "七月"; 4 switch (m) { 5 case "一月": 6 case "三月": 7 case "五月": 8 case "七月": 9 case "八月": 10 case "十月": 11 case "十二月": 12 System.out.println(m + "有31天"); 13 break; 14 case "四月": 15 case "六月": 16 case "九月": 17 case "十一月": 18 System.out.println(m + "有30天"); 19 break; 20 case "二月": 21 System.out.println("平年" + m + "有28天"); 22 System.out.println("闰年" + m + "有29天"); 23 break; 24 }