JavaSE教程-03Java中分支语句与四种进制转换-思维导图

时间:2022-10-24 15:45:56

思维导图看不清楚时:

1)可以将图片另存为图片,保存在本地来查看

2)右击在新标签中打开放大查看

JavaSE教程-03Java中分支语句与四种进制转换-思维导图

if语句

a) if语句

基本语法结构:

if(关系表达式) {

基本语句体

}

执行流程:

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体

如果是false就不执行语句体

b) If else

语法结构:

if(关系表达式) {

语句体1;

}else {

语句体2;

}

执行流程

首先判断关系表达式看其结果是true还是false

如果是true就执行语句体1

如果是false就执行语句体2

c) 多重if

语法结构:

if(关系表达式1) {

语句体1;

}else if (关系表达式2) {

语句体2;

}



else {

语句体n+1;

}

与if…else类似,判断为true,执行对应语句;否则走下面的代码

d) 嵌套if

指在if中再嵌套if的条件语句

Switch结构语句

JavaSE教程-03Java中分支语句与四种进制转换-思维导图

细说语法

case后面跟的是要和表达式进行比较的值

语句体部分可以是一条或多条语句

break表示中断,结束的意思,用来结束switch语句

default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

思考

case的值可以相同吗?不可以

default可以省略吗?可以

break可以省略吗?不能,省略会发生break穿透

default的位置一定要在最后吗?不一定,不过一般默认放在后面

关于switch表达式的类型要求

JDK5以前表达式的取值:byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是String

if vs switch

switch 适用于等值判断,其他情况采用if

四种进制

二进制

由0,1组成。以0b开头

例如0b0001

八进制

由0,1,…7组成。以0开头

例如00001

十进制

由0,1,…9组成。整数默认是十进制的

十六进制

由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

例如0x0111

位运算符

1.<< 左移 将操作数的二进制数整体左移指定位数,左移之后的空使用“0”来补充

2.>> 右移 将操作数的二进制数整体右移指定位数,右移之后的空使用“符号位”来补充

如果是正数,使用“0”补充

如果是负数,使用“1”补充

3.>>> 无符号右移,将操作数的二进制码整体右移指定位数,

右移之后的空位使用“0”来补充

4.& 任何二进制位和0进行&运算,结果是0;和1进行&运算,结果是它本身

5.| 任何二进制位和0进行|运算,结果是原值,和1进行|运算,结果是1

6.^ 任何相同二进制位进行^运算,结果是0;不相同的二进制位运算结果是1

扩展:负数的二进制位运算

无论正负数位运算执行步骤

所有数据的位运算都是使用补码进行的,即进行位运算时,需要先得到补码

1.必须要先通过原码–反码–补码,生成补码

2.进行位运算

3.在通过补码–反码–原码,最后得到结果

原码:二进制表示法,即最高位为符号位

“0”表示正数,

“1”表示负数

反码:负数的反码就是对其原码逐个取反(即1变为0,0变为1),但符号位不变。

补码:负数的补码是在其反码的末位加1

正数:原码,反码,补码都相同,因此正数可以直接运算

正数10

原码00001010

反码00001010

补码00001010

负数:原码,反码,补码都不相同

负数-10

原码:10001010

反码:11110101 (符号位不变,其他位取反)

补码:11110110

由补码来求原码

补码-1得到反码

反码逐个取反,得到原码

-10>>2,结果是-3