为什么switch效率更高
当编译switch语句时,Java编译器会检查每个case常量,并创建一个"跳转表",该跳转表用于根据表达式的值选择执行路径。
空循环体while语句
class NoBody { public static void main(String args[]) { int i, j; i = 100; j = 200; while(++i < --j) {} System.out.println("Midpoint is " + i); } }
可以在while语句条件中写逻辑使代码简洁,再比如:
class DoWhile { public static void main(String args[]) { int n = 10; do { System.out.println("tick " + n); n--; } while(n > 0); } }
简化后:
do { System.out.println("tick " + n); } while(--n > 0);
for循环的一些版本
for循环的三个组成部分可以用于你所期望的任何其他目的。
例如for循环的条件可以是任何布尔表达式:
boolean done = false; for (int i = 0; !done; i++) { //... if (interrupted()) { done = true; } }
关于for-each风格的for循环
有重要的一点需要说明:迭代变量是"只读的",因为迭代变量与背后的数组关联在一起。对迭代变量的赋值不会影响背后的数组。换句话说,不能通过为迭代变量指定一个新值来改变数组的内容。
break语句
在一个循环中可以出现多条break语句,但是过多的break语句可能会破坏代码的结构。
Java定义了break语句的一种扩展形式,使用标签的break语句:
class Break { public static void main(String args[]) { boolean t = true; first: { second: { third: { System.out.println("Before the break."); if (t) { break second; System.out.println("This won't execute."); } System.out.println("This won't execute."); } System.out.println("This is after second block."); } } } }
带有标签的break语句,最常见的用途之一就是退出嵌套循环。