前言
————————————————————————————————
版权声明:因为是基础内容,所以总结起来没有太大差异,所以本文大部分内容均参考自 CSDN博主「程序员cxuan」的原创文章,本人在复习知识的同时,做了一些补足和注释,原文很长,本人为部分参考,拆分细节化,原文非常优秀,补上链接
原文链接:https://blog.csdn.net/qq_36894974/article/details/106010941
上节内容↓
【Java从头开始到光头结束】No2.Eclipse下载及Java数据类型、基本语法、运算符
计算机语言逻辑化的重要标志就是对流程的控制使用,Java 中的控制流程其实和 C 几乎一样,早些年间,我也是从C学习起来的小朋友,算了往事不要再提,,,我们进入主题。
流程控制我把他大致分三个部分:
第一个部分为条件语句,具体为if-else、switch
第二个部分为循环语句,具体为while、do-while、for
第三个部分为循环控制语句,具体为return、break 、continue
1.条件语句
if 条件语句(常用)
if 语句可以单独判断表达式的结果,表示表达的执行结果,例如
int a = 10;
if(a > 10){
return true;
}
return false;
if…else 条件语句(常用)
if 语句还可以与 else 连用,通常表现为 如果满足某种条件,就进行某种处理,否则就进行另一种处理。
int a = 10;
int b = 11;
if(a >= b){
System.out.println("a >= b");
}else{
System.out.println("a < b");
}
if 后的 () 内的表达式必须是 boolean 型的。如果为 true,则执行 if 后的复合语句;如果为 false,则执行 else 后的复合语句。
if…else if 多分支语句(很常用)
上面中的 if…else 是单分支和两个分支的判断,如果有多个判断条件,就需要使用 if…else if
int x = 40;
if(x > 60) {
System.out.println("x的值大于60");
} else if (x > 30) {
System.out.println("x的值大于30但小于60");
} else if (x > 0) {
System.out.println("x的值大于0但小于30");
} else {
System.out.println("x的值小于等于0");
}
这都是很简单必须要会的内容了,这里我想补充的一点是,在你写代码的时候,因为进行了条件判断,所以希望你可以将所有可能会出现的条件控制写出来,即使是你觉得不可能跑到的分支,也就是建议尽量写上else。保证这一块逻辑分支的完整性。
下来还有一个小补充内容,就是,if(…)后边是可以不用加花括号的,可以直接跟上你的后续语句的,这个一般使用在你只有一个if()判断语句,但我们都不推荐你这么写,我们可以看一段ArrayList的源码。其中的if判断就没有跟上{}花括号。
switch 多分支语句(常用)
种比 if…else if 语句更优雅的方式是使用 switch 多分支语句,它的示例如下
switch (week) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("No Else");
break;
}
2.循环语句
循环语句就是在满足一定的条件下反复执行某一表达式的操作,直到满足循环语句的要求。使用的循环语句主要有 **for、do…while() 、 while **
while 循环语句(常用)
while 循环语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。while 循环语句的格式如下
while(布尔值){
表达式
}
它的含义是,当 (布尔值) 为 true 的时候,执行下面的表达式,布尔值为 false 的时候,结束循环,布尔值其实也是一个表达式,比如
int a = 10;
while(a > 5){
a--;
}
通常我们把while括号中的布尔值称为标志位,叫一个xxxFlag,表明其控制循环的意思。
do…while 循环(不常用)
while 与 do…while 循环的唯一区别是 do…while 循环语句比while 循环语句多了一个do,do,也就是做的意思,具体表现为在执行do…while 循环语句时,至少会执行一次do代码块中的内容,然后再去做while表达式的判断。在实际应用中,while 要比 do…while 应用的更广。它的一般形式如下
int b = 10;
// do···while循环语句
do {
System.out.println("b == " + b);
b--;
} while(b == 1);
总结一下就是,
do…while 循环语句,会先执行do代码块中的内容,再判断while表达式
while 循环语句会先判断while表达式,然后再执行while内部的代码
for 循环语句(很常用)
因为使用的频率非常多,所以我们把这个稍微多聊一下
首先第一个,
方法一:遍历数组或集合的传统方法
语法:
for(初始化; 布尔表达式; 步进){
}
举例:
//建立一个数组
int[] integers={
1,2,3,4};
//开始遍历
for(int j=0;j<integers.length;j++){
int i=integers[j];
System.out.println(i);
}
也可以这么写:
boolean forflag = true;
int i = 0;
for(;forflag;i++){
if (i > 3) {
forflag = false;
}
System.out.println(integers[i]);
}
传统方式就是通过一个变量自增,再与数组或集合的长度对比,取出对应的集合成员内容。
方法二:遍历Collection对象的传统方法
对于Collection集合对象,循环通常是采用如下的形式:
//建立一个Collection对象
String[] strings ={
"A","B","C","D"};
Collection stringList=java.util.Arrays.asList(strings);
//开始遍历
for(iterator itr=stringList.iterator();itr.hasNext();){
Object str = itr.next();
System.out.println(str);
}
我们将这种循环方式称之为迭代器循环,iterator这个类,我们叫做迭代器,集合对象都是拥有迭代器方法的,具体是实现了iterator接口,通过迭代器的itr.hasNext(),方法来判断集合中是否还有下一个元素。
这里有一个简单的小面试题,假如你有一个集合,里面有10个元素,用方法一进行遍历,假如在没遍历完之前,你使用remove方法,删除掉了集合中的某一个元素,但是因为你在遍历中,则集合长度暂时没有刷新,当你遍历到最后时,会出现数组下标越界,因为你现在集合中只有9个元素了,但是,当你使用迭代器遍历,就不会出现这种问题,因为**itr.hasNext()**方法,他会去判断下一个有没有值,没有的话就默认循环结束了,不会出现传统遍历的那种问题。(同时iterator接口是提供了获取当前遍历集合的下表方法的。)
方法三:增强for循环(1.5开始提供的for循环写法)
语法:
for(循环变量类型 循环变量名称:要被遍历的对象){
循环体;
}
举例:
//建立一个Collection
String[] strings = {
"A","B","C","D"};
Collection list=java.util,Arrays.asList(strings);
//开始遍历
for(Object str:list){
System.out.println(str);
}
这种循环写法相对简单,对我们屏蔽了底层的循环实现方法,如果你遍历的是一个数组,则加强for循环的底层就是方法一的原始遍历,假如你遍历的是一个集合,那底层的实现就是方法二,迭代器遍历。
加强for循环遍历方法,比较不人性化的一点就是,无法获得当前遍历成员的下标变量(顺序),只能获取到成员。
3.循环控制语句
首先呢,先说一下,其实这几个单词,也就是java语言中的保留字,我们也叫做关键字,其实算不上一个控制语句,他们作为一个循环的辅助关键字被我们熟知,下来我们就来依次了解。
return
首先啊,说明一下,return不是专用在循环中的控制词,他是用于说明方法的返回值,但是这个词可以起到退出循环的作用(方法返回,循环终止),所以在这里有一席之地。
String[] names = {
"aa","bb","cc","dd"};
public String getName() {
for(int j=0; j<names.length; j++){
if (names[j] == "bb") {
return names[j];
}
}
}
break
break 语句我们在 switch 中已经见到了,它是用于终止循环的操作,实际上 break 语句在for、while、do···while循环语句中,都用于退出当前循环,例如
for(int i = 0;i < 10;i++){
if(i == 5){
break;
}
}
continue
continue 在循环语句中,它的作用是跳过当前这次循环,并执行下一次循环,而不是退出当前循环,还以上面的例子为主
for(int i = 0;i < 10;i++){
System.out.printl(" i = " + i );
if(i == 5){
System.out.printl("continue ... ");
continue;
}
}
结果我手敲了
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
continue ...
i = 6
i = 7
i = 8
i = 9
这边流程控制语句的介绍就告一段落,我们下节再见。