学习笔记day04


运算符

赋值运算

+=  -=  *=  /=  %=

exi+=1;等价于i=i+1

但是赋值运算具有隐性的类型转换

exbyte b = 126b += 2;不会报错,但是 b = b+2;则会报错

byte b = 126;
b += 2;//此行不会报错,但是结果超出byte取值范围,精度丢失
b = b + 2;//此行会报错,因为计算时默认会提升类型为int,而b是byte

比较运算

>  <  >=  <=  ==  !=

比较运算的最终结果是一个boolean类型

== =的区别

==:比较运算

=:赋值符号

比较运算一般用于选择和循环判断条件

三目运算

布尔型 ? 变量1 : 变量2

判断布尔值(可以是最终结果为布尔值的表达式),为true则输出变量1,为false则输出变量2

注:三目运算的结果

直接打印允许yz的类型不一致

使用变量接收结果时yz的类型必须一致

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 = 782 
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可以是byteshortintcharString、枚举

   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 }