4.2 if-else
if(Boolean-expression)
statement
else或者else if
statement
4.3 迭代
while(Boolean-expression)
statement
4.3.1 do-while
do
statement
while(Boolean-expression)
4.3.2 for
for(initialization; Boolean-expression; step)
statement
4.3.3 逗号操作符
Java里唯一用到逗号操作符的地方就是for循环的控制表达式。通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
for(int i=1, j=i+10; i<5; i++, j=i*2){
statement
}
注意:定义多个变量的这种能力只限于for循环,在其他任何选择或迭代语句中都不能使用这种方式。
4.4 Foreach语法
folat[] f = new folat[10];
for(folat x : f){
}
4.5 return
return关键字用途:
- 指定一个方法返回什么值
- 导致当前的方法退出。
返回void的方法中如果没有return语句,在该方法的结尾处会有一个隐式的return。
4.6 break和continue
break和continue都用于迭代语句的主体部分。
- break:强行退出循环,不执行循环中剩余的语句。
- continue:停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
无限循环表达方式:
- while(true)
- for(;;)
4.7 臭名昭著的goto
标签:是后面跟着有冒号的标志符。在java中,标签当前仅当位于迭代语句之前。即如果在标签和迭代语句之间置入任何语句,标签将不起作用。而在java中需要使用标签的唯一理由就是因为有循环嵌套存在,而且想从多层嵌套中break或continue。这是由于break和continue关键词通常只中断当前循环,但若随同标签一起使用,它们就会中断循环,知道标签所在的地方。
lable1:
outer-iteration{
inner-iteration{
...
break; //(1)break中断内部迭代,回到外部迭代。
...
continue; //(2)continue使执行点移回内部迭代的起始处。
...
continue lable1;//(3)同时中断内部迭代以及外部迭代,直接转到lable1处;随后,它实际上是继续迭代过程,但却是从外部迭代开始。
...
break lable1;//(4)会中断所有迭代,并回到lable1处,但不重新进入迭代。也就是说,它实际是完全终止了两个迭代。
}
}
规则:
- 一般的continue会退回最内层循环的开头,并继续执行
- 带标签的continue会到达标签的位置,并重新进入紧接在哪个标签后面的循环
- 一般的break会中断并跳出当前循环
- 带标签的break会中断并跳出标签所指的循环
4.8 switch
switch(selector){
case value1 : statement; break;
case value2 : statement; break;
...
default : statement;
}
练习9 斐波那契数列
public static void finbonacci(int x){
int k;
for(int i=1,j=1; j<=x; i=j,j=k){
if(j<x && j==1){
System.out.println(i);
System.out.println(j);
k = i + j;
}else if(j == x && x == 1){
k = 1;
}else{
k = i + j;
}
if(k > x){
break;
}else{
System.out.println(k);
}
}
}
public static void finbonacci2(int x){
if(x < 2){
System.out.println(x);
}else{
int i = 1;
int j = 1;
System.out.println(i);
System.out.println(j);
int k = 1;
while (k<x){
k = i + j;
i = j;
j = k;
if(k > x){
break;
}else{
System.out.println(k);
}
}
}
}
练习10 吸血鬼数字
public static void vampireNumber(){
for(int i=10; i<100; i++){
for(int j=i; j<100; j++){
int k = i * j;
if(k%100 != 0){
String strIJ = "" + i + j;
String strK = String.valueOf(k);
char[] charIJ = strIJ.toCharArray();
Arrays.sort(charIJ);
char[] charK = strK.toCharArray();
Arrays.sort(charK);
if (Arrays.equals(charIJ, charK)){
System.out.println(i+"X"+j+"="+k);
}
}
}
}
}