一、true和false
java不允许将一个数字作为布尔值使用,可以使用所有关系操作符(>、<、>=、<=、==、!=)构造条件语句,将其转换为一个布尔值。
二、if-else
其中 else 是可选的。else if只是一个else后面紧跟另一个新的if语句。
public static void main(String[] args){
int x=55;
if(x>30){
System.out.println("x大于30");
}else if (x>40){
System.out.println("x大于40");
}else{
System.out.println("其他情况");
}
if(x>10){
System.out.println("x大于10");
}
System.out.println("X的值:x="+x);
}
结果:
x大于30
x大于10
X的值:x=55
说明:由 if [ else if | else ](可选)组成的语句中,如果满足其中一条,那剩下的语句不管是否满足,都不再继续执行,而是直接执行语句后面的剩余部分程序。
三、循环语句/迭代语句
使用while、do-while、for 用来控制循环。语句重复执行,直到布尔值为false为止。
public static void main(String[] args){
while(condition()){
System.out.println("循环while语句");
}
}
public static boolean condition(){
boolean result=Math.random()<0.99f;
return result;
}
结果:
循环while语句
循环while语句
循环while语句
循环while语句
循环while语句
while循环语句,满足条件后,才执行循环体里的语句。其中Math.random()方法产生0和1之间(包括0,不包括1)的double类型的随机数。
public static void main(String[]args){
int i=1;
do{
System.out.println("i的值,i="+i);
i++;
}while(i<5);
}
结果:
i的值,i=1
i的值,i=2
i的值,i=3
i的值,i=4
do-while语句至少执行一次,即便表达式第一次计算为false。
注意,不要忘记do while()后面的分号。
public static void main(String[] args) {
for(char c='a';c<128;c++){
System.out.println("c="+c);
}
}
结果:
c=a
c=b
c=c
c=d
c=e
c=f
for循环在迭代之前要进行初始化,进行条件测试,每次迭代结束后,进行步进。
初始化,布尔表达式、步进都可以为空。
例子中,变量c在for循环中被定义的,因此它的作用域就是for控制的表达式范围内。
逗号分隔符(,)可以用来分隔函数的不同参数。
逗号操作符(,)在for语句中,可以在初始化和步进中使用。这些语句均会独立执行
通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
public static void main(String[] args) {
for(int i=1,j=i+10;i<5;i++,j+=2){
System.out.println("i="+i+" ,j="+j);
}
}
结果:
i=1 ,j=11
i=2 ,j=13
i=3 ,j=15
i=4 ,j=17
forEach语法:不必创建int变量去对访问项构成的序列进行计数,foreach将自动产生每一项。
int[] array={132,32,3244,32232};
for(int a:array){
System.out.println("a="+a);
}
结果:
a=132
a=32
a=3244
a=32232
任何返回一个数组的方法都可以使用foreach。还可以用于Iterable对象、集合对象。foreach不能在序列中步进。除非提前在数组中步进。
四、Return关键字
两方面的作用:
a、指定方法返回值
b、导致当前的方法退出,不再执行方法后面的语句,而不是return后面的语句。
public static void main(String[] args) {
int x=50;
if(x>30){
return;
}
System.out.println("x大于30");
}
//结果没有打印语句。该语句不会被执行。
如果在返回void的方法中没有return语句,那么在该方法的结尾会有一个隐式的return。
一个方法声明将返回非void的其他东西,那么必须确保每一条代码路径都将返回一个值。
//如果没有else语句,那在末尾也要加一个return返回值。
public static String getName(int age){
if(age>10){
return "good";
}else if(age>20) {
return "bad";
}
return "test";
}
//如果有else语句,末尾不需要return语句
public static String getName(int age){
if(age>10){
return "good";
}else{
return "bad";
}
}
五、break 和continue 关键字
这两个关键字可以控制循环的流程:
break用于强行退出循环,不执行循环中剩余的语句。
continue停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
public static void main(String[] args) {
for(int i=0;i<100;i++){
if(i==44) break;
if(i%9!=0) continue;
System.out.print(i+" ");
}
}
结果:
0 9 18 27 36
六、switch语句
它是实现多路选择的方法,但是要求选择因子必须是int或char那样的整数值。case中使用单引号引起的字符也会产生用于比较的整数值。
public static void main(String[] args) {
int x=30;
switch(x){
case 20:x++;System.out.println("x="+x); break;
case 30:x++;System.out.println("x="+x);
case 10:x++;System.out.println("x="+x);
default:
System.out.println("x="+x);
}
}
//结果,继续执行后面的语句直达结尾或遇到break
x=31
x=32
x=32
选择因子可以是一个能够产生整数值的表达式,表达式的结果能够与每种case相比较。case的值也是能够产生整数值的表达式。
如果case是以break结尾,那可使执行流程跳转至switch主体的结尾,跳出switch语句,执行程序后面的语句。
如果没有break结尾,程序会继续执行后面的case语句,而不管是否满足条件,直到遇到一个break或 default结尾。