上一期学习了运算符与数据转换,本期继续学习常用的几种逻辑语句。
学习目标
- 掌握所有常用逻辑语句的使用
本节内容比较简单,因此不做过多解释,读懂代码会用就好。
逻辑语句
if
public static void main(String[] args) {
int a = 9;
int b = 12;
if (a > b) {
System.out.println("a > b");
}else {
System.out.println("a <= b");
}
}
// 运行结果
// a > b
if后的小括号内需要传入一个布尔值,上一课我们学习了运算符,关系运算符返回的是布尔值,因此小括号内可以直接用一些运算符直接表示条件。
大括号内就是条件成立执行的代码,在大括号结尾可以继续套上else { … },代表条件不成立时执行的代码。
for
for (int i = 0; i < 9; i++) {
System.out.println("i的值为" + i);
}
System.out.println("for循环结束");
// 运行结果
// i的值为0
// i的值为1
// i的值为2
// i的值为3
// i的值为4
// i的值为5
// i的值为6
// i的值为7
// i的值为8
// for循环结束
for的括号内需要传入三个语句,并且用分号隔开。
第一个是初始化变量,既可以用声明变量的表达式声明一个,也可以直接使用已经存在的int变量。
第二个是循环条件,也就是说,当这个条件成立时,会执行代码块内的代码直到条件不成立。
第三个是每次执行完代码块后执行的代码,这里的i++意思就是执行完一次循环后让i自增1,这样才能保证循环可以一直到不满足条件跳出。
while
int whileCount = 6;
while (whileCount > 0) {
whileCount --;
}
System.out.println("此时whileCount的值为" + whileCount);
// 运行结果
// 此时whileCount的值为0
while比for更简单一些,它不需要初始化变量。
从代码与运行结果可以发现,当while内的条件成立时,就会执行代码块内的代码直到条件不成立。
switch
int switchCase = 1;
switch (switchCase) {
case 1:
System.out.println("选择 1");
break;
case 2:
System.out.println("选择 2");
break;
case 3:
System.out.println("选择 3");
break;
}
// 运行结果
// 选择 1
switch就是对小括号内的值进行选择,如上所示。
选择判断的值是switchCase,那么它就会在下面的case中寻找符合它的值并执行相应部分的代码,等同于if (switchCase == 1)条件成立时执行if代码块内的代码。
switch中break的作用
你可能已经注意到了,在每一个case之前都有一个break,他有什么用呢?
现在我们试着去掉break来看看效果。
int switchCase = 1;
switch (switchCase) {
case 1:
System.out.println("选择 1");
case 2:
System.out.println("选择 2");
break;
case 3:
System.out.println("选择 3");
break;
}
// 运行结果
// 选择 1
// 选择 2
现在在case2中没有了break,我们发现同时输出了1和2。
这是因为,当switch寻找到对应的case时,就会自动跳转到符合条件的case并且从那里开始执行下面的代码。若没有break,相当于没有阻止代码的进行,因此就直接从case1部分继续运行到下一个case2部分,由于case2结尾有break,因此switch在case2的结尾跳出了。
do while
int doWhileCount = 5;
do {
doWhileCount --;
System.out.println("do被执行了一次");
}while (doWhileCount < 0);
// 运行结果
// do被执行了一次
观察一下上面的代码,发现doWhileCount < 0并不成立,但是do内的代码依然被执行了一次。
跳转关键字
在上面的switch学习中我们了解了break的使用,下面我们再来深入一下,再认识一下continue的作用。
break
for (int i=0;i<9;i++) {
if (i == 5) {
System.out.println("i等于5 执行break跳出循环");
break;
}
System.out.println("i的值为" + i);
}
System.out.println("已跳出循环");
// 运行结果
// i的值为0
// i的值为1
// i的值为2
// i的值为3
// i的值为4
// i等于5 执行break跳出循环
// 已跳出循环
很明显看出,break可以跳出分支结构(循环、switch等)。
continue
顾名思义,就是不跳出循环继续运行,下面再次举一个例子来看一看。
for (int i=0;i<9;i++) {
if (i == 5) {
System.out.println("i等于5 不输出 i的值为5");
continue;
}
System.out.println("i的值为" + i);
}
System.out.println("已跳出循环");
现在,我们把上面的break改成了continue。
观察一下发现:当i == 5成立时执行if内的代码,当遇到了continue,就自动放弃了后面的代码,进入了下一次循环,也就是当i等于6时的那一次循环。
因此,continue不会跳出分支,而是直接进行下一次循环。
课后练习
- 成绩等级评定:给定一个浮点型变量作为成绩,用if语句判断,大于60及格,大于80优秀,并输出结果,若80>60则优先输出”优秀”。
- 打印一个等腰直角三角形,图像符号任意。
- 定义一个新方法,输入三个整数变量abc,利用余弦定理公式,判断角C是否是直角,并返回布尔结果。(cos B = a^2 + c^2 – b^2 / 2ac,cos 90° = 0)
- 用for写一个循环,并且将它改写成while,要求两种形式都输出正确结果。
- break和continue的区别是什么?
- 简述for和while的执行过程。