java学习第三天——控制流程

java学习第三天

编译器的优化

对于byte、short、char三中数据类型来说,如果右侧的赋值数据没有超过范围,那么javac编译器将自动隐含的为我们补上(byte),(short),(char)

  1. 如果没有超过左侧的数据类型的数范围,那么编译器不上强转
  2. 如果超过了左侧的数据类型的数据范围,那么编译器直接报错
byte a = 30;//编译器自动在30加上(byte)
byte b = 128;//超过byte数据范围,直接报错

再给变量进行复制的时候,如果右侧的表达式当中全部是常量,没有任何变量,那么编译器javac会将直接将若干个常量表达式的结果计算。

short result = 5 = 8;//等于右边全是常量,没有任何变量参与运算,编译之后得到的。class文件中相当于直接就是short result = 13;右侧的常量结果数值没有超过左侧的范围,所以正确
这就是编译器的常量优化
但是注意,一旦表达式中有变量参与,那么就不进行有这种优化了

流程控制

顺序结构

按照从上到下循序执行语句

判断语句

if(){

}

执行流程图

if语句格式1

执行流程说明

首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体

if(){

} else {

}

执行流程

执行流程图

if语句格式2

执行流程说明

首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2

if(){

} else if(){

}…

执行流程图

if语句格式3

执行流程说明

首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1

Swich语句

swich(表达式){

case 常量值:

​ 语句体1:

break;

case 常量值:

​ 语句体2:

break;

default:

​ 语句体n+1;

​ break;

}

执行流程说明

首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

执行流程图

img

注意事项

1、swich(表达式)中表达式的返回值必须是以下几种类型之一:
  byte,short,char,int,枚举(jdk1.5),String字符串(jdk1.7)

2、case子句中的值必须是常量,且所有case子句中的值应是不同的;

3、default子句是可任选的,当没有匹配的case时,执行default;

4、break语句用来在执行完一个case分支后使程序跳出swich语句块;如果没有break程序会顺序执行到swich结尾;

if分支结构和switch分支结构区别

if和swich语句很想,如果判断的具体数值不多,而且复合byte、short、int、char这四种类型。建议使用swich语句,因为效率稍高;

其他情况:对区间进行判断,对结果为boolean类型进行判断,使用if,if的使用范围比较广泛。

循环语句

while循环

while(布尔表达式)({

​ 语句体

}

只要布尔表达式为 true,循环就会一直执行下去。

do…while循环

do{

​ 语句体

}while(布尔表达式);

  1. 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
  2. do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
  3. 布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
for循环

for(初始化语句;布尔表达式;语句){

​ 语句体

}

注意事项

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量。
  • 再次检测布尔表达式。循环执行上面的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值