条件语句
if语句
基本格式为:
if(){
//语句块;
}else{
//语句块;
}
if后的判断条件可以是true或者false,也可以是比较表达式,可以是boolean类型的变量,或者赋值表达式,要求赋的值是boolean类型。
switch语句
基本格式为:
switch(){
case 值:
//语句块;
break;
......
default:
//语句块;
}
case中的值必须要与switch表达式的值具有相同的数据类型;case后跟的值必须是常量,不能跟变量;不允许有重复的case取值。
switch表达式的值只接受byte、char、short、int、String类型的变量
int i=2;
switch(i){
case 1:
System.out.println("a");
break;
case 2:
System.out.println("b");
case 3:
System.out.println("c");
default:
System.out.println("d");
}
上述程序的执行结果为b、c、d
上述程序发生了“穿透现象”,也就是说如果case语句块中没有加break,程序就会连续执行,忽略掉后面的限制条件,加上break可以打断,停止,自动跳出switch语句。
需要注意的是switch语句中不能出现continue
循环语句
while语句
基本格式:
while(//条件表达式){
//执行语句块;
}
while语句先对条件表达式做出判断,再执行内部的语句块。
do...while语句
基本格式:
do{
//执行语句块;
}while(//条件表达式)
do...while语句先执行do内部的语句块,在对while后的条件表达式做出判断。
for语句
基本格式:
for(//1.初始化表达式;//2.循环条件表达式;//4.循环后的操作表达式){
//3.执行语句块;
}
for语句先执行第1步给一些变量赋值;第2步判断循环条件表达式,若为true,进行第3步执行语句块,若为false,直接跳出循环执行其他语句。
for循环的经典题型
1.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?(自由落体)
public void test1() {
double sum=100.00;
for(int i=1;i<=9;i++){
System.out.println("h="+h);
sum+=h/2*2;
h=h/2;
}
System.out.println("最终h="+h/2);
System.out.println("sum="+sum);
}
2.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。(水仙花数)
public void test1() {
for(int i=100;i<999;i++){
int bai=i/100%10;
int shi=i/10%10;
int ge=i%10;
if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i){
System.out.println(i);
}
}
}
break与continue的区别
先来看一个经典问题:
for (int i = 0; i < 4; i++) {
if (i == 1) {
continue;
}
if (i == 2) {
break;
}
i += i;
System.out.println(i);
}
上述执行结果为0,要明确的是continue跳出的是当次循环,而break跳出的是整个循环体。