小总结:
一、自加的陷阱
public static void main(String[] args){
int i = 20;
i = i ++; // ①先拿出i的值,取出的值为20 ②i自加,i变成21 ③把刚才取出的值20赋给i,i又变成了20
System.out.println("i的值为:" + i);
}
二、for
for( 初始化语句 ; 返回boolean值的表达式 ; 每次循环体执行完后执行的代码 )
{
}
“初始化语句”可以省略。
如果有“初始化语句”,只有循环开始之前,会执行一次“初始化语句”
“返回boolean值的表达式”可以省略,如果省略,意味着它的值永远是true。
“每次循环体执行完后执行的代码”可以省略。
如果有“每次循环体执行完后执行的代码”,
——将在每次循环体执行完成之后,开始下一次循环体之前,执行该代码。
只要两个分号中间的表达式返回true,程序将执行循环体。
条件表达式的计算次数,总是比循环体的执行此处要多一次。
for循环可以写成 for( ; ;){} 不过这个是一个死循环
三、while & do while
while(){
}
花括号可以省略,不过要是省略了就只控制if后面第一个 ';' 前的语句
do while (至少要执行一次)
do {
一定要执行的一段代码
}
while(再判断);
四、if
if(){
}
花括号可以省略,不过要是省略了就只控制if后面第一个 ';' 前的语句
public class IfError
{
public static void main(String[] args)
{
int age = 12;
if(age > 20); //如果你在if条件后添加分号,该if条件,就仅控制到该分号处。
{ System.out.println("成年人了!"); }
}
}
五、switch
switch(返回值是byte,char,short,int或String【Java1.7才有】或枚举的表达式){
case 值 1:
break;
case 值 2:
break;
case 值 3:
break;
default :当表达式的值与前面所有case块的值都不相等时,才会执行。
}
注意点:
省略break后的执行流程, 那switch表达式的值,依次与每个case块的值进行比较。
当遇到一个相等的值之后,将直接执行所有的执行性代码,
在遇到break语句之前,不会与case块的值进行比较,而是直接执行代码。
省略break几乎没有太大的价值。
建议:每次写了case之后,在写其他代码之前,立即写break。