1.JDK9新特性
- JShell:轻量级的、便捷的小工具,极其简单轻量的时候采用JShell,脚本,一步一执行,退出脚本命令:/exit
- 编译器的两点优化:1.对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过左侧的范围,那么javac编译器会自动隐含地补上一个(byte)、(short)、(char),即编译器自动补上强转,例如byte a = 1;如果超过了左侧的范围,那么直接编译器报错,例如byte b = 128;2.编译器的常量优化:在给变量进行赋值的时候,如果右侧的表达式中全都是常量,没有任何变量,那么编译器javac会直接将若干个常量表达式计算得到结果,而不是程序运行的时候耗费资源计算,一旦表达式中有变量参与,那么就不能进行这种优化了,例如short result = 5 + 8; 不报错,而short a = 5; short b = 8; short result = a + b;报错,左侧需要是int类型的。
2.流程控制
- 顺序结构
- 判断(选择)结构:单if语句、标准的if…else、复合的扩展的if…else语句、switch,使用if语句可以替换三元运算符。
if (判断条件1) {
语句体1;
} else if (判断条件2) {
语句体2;
}
……
} else if (判断条件n) {
语句体n;
} else {
语句体n+1;
}
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
……
default:
语句体n+1;
break;
}
注意:满足哪一个case就从哪一个位置向下执行,直到遇到了break语句或者整体结束为止,各case是并列关系;case后边的常量值不能重复;所有的case和表达式的值都不匹配,就会执行default,default用于收尾,相当于if…else中的else;最后一个break语句可以省略,但是强烈推建不要省略,因为这样看着格式更加清晰;switch后边的小括号中只能是下列数据类型:基本数据类型(byte/short/char/int)、引用数据类型(String字符串、enum枚举);switch语句格式可以很灵活,先后顺序可以颠倒,而且break语句还可以省略。
- 循环结构:for、while、do-while,包括初始化语句、条件判断、循环体、步进语句。do-while的第一次执行是无脑执行。
初始化语句;
do{
循环体;
步进语句;
} while(条件判断);
三种循环的区别:如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一 次;for循环的变量在小括号当中定义,只有循环内部才可以使用,while和do-while循环初始化语句本就在外边,所以出了循环之后还可以继续使用;如果次数确定多用for循环,否则多用while循环。
循环控制语句:
- break:可以用于switch语句中,一旦执行,整个switch语句立刻结束;还可以用于循环语句中,一旦执行,整个循环语句立刻结束,打断循环。
- continue:一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
永远停不下来的循环,叫做死循,死循环后的语句永远不会执行。