这节课给大家介绍流程控制语句中非常常用的关键字:for、if、break、continue、while、以及逻辑运算符||、&&、>、<、==、!=。
下面用代码演示一下打印0-9:
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.print(i);
}
}
}
解释:for后面的小括号里面一般会有三条语句,分别用“;”隔开。
第一条语句(int i = 0)是在for循环开始的时候执行一次,常用来定义变量。
第二条语句(i < 10(i小于10))是用来判断,当符合条件时候,循环继续,当不符合条件是,结束循环。
第三条(i++)是每次循环结束时执行的语句。i++含义是自增1,相当于i = i + 1。
这个for循环执行的顺序是:
1、定义变量i = 0,2。判断i < 10,结果为“真”,进入循环体。3、打印i(0)。4、执行i++,i自增了1,此时i等于1。(第1次循环)
1、判断i < 10,结果为“真”,进入循环体。2、打印i(1)。3、执行i++,i自增了1,此时i等于2。(第2次循环)
。。。。。。。。。。。省略若干次循环。。。。。。。。。。。。。
1、判断i < 10,结果为“真”,进入循环体。2、打印i(8)。3、执行i++,i自增了1,此时i等于9。(第9次循环)
1、判断i < 10,结果为“真”,进入循环体。2、打印i(9)。3、执行i++,i自增了1,此时i等于10。(第10次循环)
1、判断i < 10,结果为“假”,循环结束。(第11次循环,只判断了,结果为“假”时直接结束循环,没有进入循环体内)
如果我们不需要打印5、8,就需要用关键字continue了。
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i == 5 || i == 8) {
continue;
}
System.out.print(i);
}
}
}
上面的代码中的if是用来判断,如果返回true(真,以后不再用真和假汉字了),则执行if后面的大括号内容,如果返回false(假),则不执行大括号里面的内容。这句话用文字翻译为:如果i等于5或i等于8,就执行continue语句。这里面用到了一个逻辑运算符“||”,它的意思是“或”,当两边表达式的值至少有一个为true时,就返回true。如下代码解释了||、&&、>、<、==、!=的用法:
/**
* 学习||、&&、>、<、==、!=用法
* true:真
* false:假
*/
public class Test {
public static void main(String[] args) {
//>:大于
System.out.println("10 > 3.4:" + (10 > 3.4)); //判断10是否大于3.4,此处返回true
//<:小于
System.out.println("5 < 3:" + (5 < 3)); //判断5是否小于3,此处返回false
//==:等于
System.out.println("4.1 == 4.1:" + (4.1 == 4.1)); //判断4.1是否与4.1相等,此处返回true
//!=:不等于
System.out.println("4.1 != 4.1:" + (4.1 != 4.1)); //判断4.1是否与4.1不相等,此处返回false
//||:或的意思,当表达式两边至少有一个为true时,返回true
System.out.println("3 < 1 || 5 > 2:" + (3 < 1 || 5 > 2)); //3 < 1为false,5 > 2为true,有一个为真,此处返回true
System.out.println("3 < 10 || 5 > 2:" + (3 < 10 || 5 > 2)); //两边都为真,此处返回true
System.out.println("3 < 1 || 5 > 7:" + (3 < 1 || 20 < 15.55)); //两边都为false,此处返回true
//&&:并且的意思,只有当两边表达式都为true时,才会返回true
System.out.println("1 == 2 && 3 == 4:" + (1 == 2 && 3 == 4)); //两边都为false,此处返回false
System.out.println("1 == 1 && 3 == 4:" + (1 == 1 && 3 == 4)); //只有一边为true,此处返回false
System.out.println("1 == 1 && 2.3 == 2.3:" + (1 == 1 && 2.3 == 2.3)); //两边表达式都为true,此处返回true
}
}
continue一般用在循环中,如for、while,它的功能是不再继续执行下面的代码,直接结束(跳出)本次循环,执行下次循环,所以上面的代码当判断i是5或8时,就直接结束本次循环了。
如果想要代码打印到7的时候就结束程序就需要用到break了:
public class Test {
public static void main(String[] args) {
//打印0-9
for (int i = 0; i < 10; i++) {
//遇到7时结束循环
if (i == 7) {
break;
}
System.out.print(i);
}
System.out.println("\nfor循环结束,不代表整个java程序结束。");
}
}
break与continue类似,也是用于循环语句中,不同的是break表示不在执行循环了,结束整个循环,而continue仅仅是结束本次循环。
从上面的代码中,我们也看到了if的用法,if后面的小括号判断的是boolean(布尔类型,在第一章中有介绍),下面用代码详细的说下if的用法:
1、if单独使用
public class Test {
public static void main(String[] args) {
int a = 11;
float b = 11.0f;
//演示如何定义定义一个布尔类型的变量,boolean只能赋true和false两个值
boolean bool1 = true;
boolean bool2 = false;
boolean bool = a == b; //定义一个变量bool,并且把a == b的值赋值给bool。
if (bool) { //或者if (11 == 11.0),意思一样的
System.out.println("a与b相等");
}
}
}
2、if与else合用
public class Test {
public static void main(String[] args) {
int a = 23;
int b = 44;
if (a > b) {
System.out.println("a大于b");
}
else { //else相当于“否则”的意思,用法是如果if里面判断为false,就会走else里面的代码。执行if就不执行else,执行else就不执行if。
System.out.println("a小于b");
}
}
}
3、if、else、else if组合使用
public class Test {
public static void main(String[] args) {
int b = 3;
if (b == 1) {
System.out.println("b=1");
}
else if (b == 2) {
System.out.println("b=2");
}
else if (b == 3) {
System.out.println("b=3");
}
else if (b == 4) {
System.out.println("b=4");
}
else {
System.out.println("不符合任何条件");
}
}
}
这种if else if组合语句,其实就是一层一层的进行判断,符合哪个条件,就执行符合条件的代码,如果把b改为5,上面的条件都不符合,就会执行最后 一个else中的代码:
while也是用来循环的关键字,他与for相比,只需要传入一个表达式即可,我现在用while去写一个与本章第二段代码功能一模一样的代码:
public class Test {
public static void main(String[] args) {
//用while实现打印0-9,并且不打印5和8
int i = 0;
while (i < 10) {
if (i != 5 && i != 8 ) {
System.out.print(i);
}
i++;
}
System.out.println("\n循环结束!");
}
}
从上面可以看出,while里面只有一个判断语句,每次循环结束之后,i自增1,直到i等于10时循环结束。我这这个代码中用了不同于第二段代码的方法去判断实现类相同的结果,while中也可以使用continue、break,我仅仅是综合了本章所讲的内容起到了承上启下的作用。如果你忘记写了i++,则程序会陷入死循环,就是循环永远不会结束,这是你需要两个操作结束程序:
1、点击停止按钮
2、或者找到javaw.exe,结束进程(二选一即可)
你能看到死循环的进程占用了大量的cpu。
需要注意的是“==”与“=”的区别,“&&”与“&”的区别,初学者经常会弄错。“==”是逻辑运算符,“=”是赋值,“&&”是逻辑运算符,“&”是位运算符。
本章内容常多,必须要全部理解掌握之后再学习下一章。另外说一句,写程序不是生搬硬套的写,别人怎么写,你需要的只是领悟语法,然后用代码是实现你想要的功能。一个条语句、一个功能可能有几十种写法,举一反三才是程序员应有的素质,记住,我们是创造代码,不是代码的搬运工,我们需要写出属于自己独一无二的程序!
作业:
1、自行尝试学习“>=”与“<=”逻辑运算符。
2、根据“System.out.println(10 % 3)”自行尝试学习“% ”(取余)算数运算符的含义。
3、定义一个长度为100的数组,用for实现赋值,并用for实现打印数组中不能被4整除的每一个值。
4、定义一个长度为50的数组,用while实现赋值,值只能为奇数,并用while实现打印数组中每一个值。
上节作业答案:
public class Test {
public static void main(String[] args) {
//第一题答案
int a[] = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
float b[] = new float[]{1.1f, 2.2f, 3.3f, 4.4f, 5.5f, 6.6f, 7.7f, 8.8f};
boolean c[] = new boolean[]{true, true, true, false, false, false, false, false};
long d[] = {100000, 22, 32312, 4333, 544444444, 6123124, 7555, 823423423};
double e[] = {15e3, 213.222, 2.12e3, 4555232313235d, 52.67654355, 69876444444444444444444445d, 6.9874444445e11, 82342};
System.out.println(a[3] + "\t" + a[6]);
System.out.println(b[3] + "\t" + b[6]);
System.out.println(c[3] + "\t" + c[6]);
System.out.println(d[3] + "\t" + d[6]);
System.out.println(e[3] + "\t" + e[6]);
System.out.println("----------------");
//第二题答案
a[2] = 555;
b[2] = 3333;
c[2] = true;
d[2] = 6543234;
e[2] = 3.14e11;
System.out.println(a[3]);
System.out.println(b[3]);
System.out.println(c[3]);
System.out.println(d[3]);
System.out.println(e[3]);
}
}