判断语句
if语句
三种格式:
-
if(条件表达式){ 执行语句; }
-
if(条件表达式){ 执行语句; } else{ 执行语句; }
-
if(条件表达式){ 执行语句; } else if(条件表达式){ 执行语句; } …… else{ 执行语句; }
-
需要执行的代码多于1条,必须加大括号,否则可以省略大括号
-
三种格式分别都是独立的整体结构
-
else总是和离它最近的、且没有对应的else的if对应
int a=5; if(a>10) { System.out.println("He11o"); a++; }else{ System.out.println("hehe"); a--; } if(a>6) if(a>20) System.out.print1n( "haha"); else System.out.println("ok");
-
执行效率
-
低效代码:执行四次判断
//score: >=90 A >=80 B >=60 C <60 D int score=88; if(score>=90 && score<=100) System. out. println("A"); if(score>=80 && score<90) System. out . print1n("B"); if(score>=60 && score<80) System. out . println("C"); if( score<60) System. out . print1n("D");
-
高效代码:执行两次判断
if(score>=0 && score<=100) { if(score>=90) System. out . println("A"); else if(score>=80) System. out. println("B"); else if(score>=60) System. out. println("C"); else System. out . println("D"); }
-
switch语句
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……………………
default:
执行语句;
break;
}
要点:
-
遇到break或 } 才会停止执行;
-
小括号里的数值,必须是byte、short、int、char、枚举或者字符串;
-
先计算小括号中的值,然后依次和case后面的值比较p和哪个case后面的值相同了,就执行哪个case后面的语句;
-
如果和所有case后面的值都不相同,则执行default后面的语句。
class Demo { public static void main(String[] args) { int i=3; switch(i) { default: i+=2; case 1: i+=1; case 4: i+=8; case 2: i+=4; } System.out.println("i="+i); //输出结果为18 } }
-
如果default语句在所有case最后,此时可以不加break 如果default语句之后还有case语句,如果不加break,则default语句执行过之后会继续下面的case语句,此时必须要在default之后加break语句,不过这种default用法是不推荐的,default顾名思义是缺省情况,只有任何条件都不匹配的情况下才会执行,所以应该将default语句放在所有case结束之后。
int age=13;
switch(age){
case 12:System.out.print1n("年龄为12");
break;
case 13:System.out.print1n("年龄为13");
break;
//若不写break则会执行case后面的语句,直到遇到break或右大括号
case 14:System.out.println("年龄为14");
break;
default:
System.out.print1n("年龄不合理");
break;
}
循环语句
while语句
步骤:
- 先判断条件是否成立,如果成立,则执行大括号中的代码;
- 执行完,再次判断条件是否成立 ,如果成立则执行大括号中的代码;
- 如此反复,直到条件不成立时,循环结束;
while(条件)
{
需要被重复执行的语句;
}
int num=1;
while(num<=5)//循环5次
{
System.out.print1n("Hello");
num++;
}
do while语句
步骤
- 先执行大括号中的语句;
- 判断条件是否成立,如果成立,则再次执行大括号中的语句;
- 执行完,再判断条件是否成立,如果成立,再执行卡括号中的代码;
- 如此反复,直到条件不成立时循环结束。
与while语句的异同
- do{……}while==;==
- 该循环至少执行一次。
- 条件成立时,循环次数一致(例子中,都循环了5次)。
do
{
需要被重复执行的语句
}while(条件);
int num=1;
do{
System.out.print1n("Hello");
num++;
}while(num<=5);//循环5次
for语句
格式
for(表达式1; 表达式2; 表达式3;)
{
需要被重复执行的语句;
}
表达式1:和循环相关的变量的初始化语句;
表达式2:循环需要满足的条件;
表达式3:改变和循环相关的变量值的语句;
步骤
- 先执行表达式1(只执行1次);
- 判断表达式2的条件是否成立,若成立,则执行大括号中的代码;
- 执行完,执行表达式3;
- 再判断表达式2的条件是否成立,若成立,则执行大括号中的代码;
- 如此反复,直到表达式2不成立。
重复执行的部分为:表达式3 → 表达式2 → 需要被重复执行的语句
for(int i=1;i<=5;i++)//循环5次
{
System.out.println("hel1o");
}
System.out.println(i);//找不到符号i
//变量的作用域:变量的有效范围,从这个变量定义的位置开始,到其所在的大括号结束.
//从内存方面看,for循环,更省内存,循环结束,释放i的内存
//如果循环结束后,不再需要使用变量,适合使用for循环
省略表达式
-
省略表达式1
int j=1; for(;j<=5;j++){ }
-
省略表达式2:死循环
for(int i=1;;i++) { System.out.println(i); }
-
省略表达式3
for(int i=1;i<5;) { System.out.println(i); i++; }
-
省略3个表达式
int j=1; for(;;) { System.out.println(i); i++; }
结束循环
break语句
作用及要点
-
结束所属的循环
-
后面不能再跟语句,会语法错误,无法访问的语句
//break:结束循环
for{int i=1;i<=5;i++)
{
if(i==3)
break;
System.out.println(i);
}
for(int i=1;i<=5;i++)
{
if(i==3)
{
break;
//System.out.println(i);//无法访问的语句,语法错误
}
System.out.println(i);
}
//
for(int i=1;i<=5;i++)
{
for(int j=1;j<=3;j++)
{
if(j==3)
break;//结束的是所属的循环
}
System.out.println(i);//12345
}
//结束指定循环
m:for(int i=1;i<=5;i++)
{
n:for(int j=1;j<=3;j++)
{
if(j==3)
break m;
}
System.out.println(i);//不打印
}
//用break结束无条件循环
int x=1;
for(;;)
{
X++ ;
if(x==50)
break;
}
continue语句
作用及要点
-
结束某一次循环,直接进入下一次循环
-
后面不能再跟语句,会语法错误,无法访问的语句
for(int i=1;i<=5;i++)
{
if(i==3)
continue;//结束某一次循环,直接进入下一次循环,也就是i++
System.out.println(i);
}
//输出:1 2 4 5