基础很重要,基础很重要,基础很重要。重要的事情说三遍,。java
程序设计中的控制语句主要有三种:顺序、分支和循环。咱们天天写的代码,除了业务相关,里面会包含大量的控制语句。可是控制语句的基本使用,是否有些坑咱们须要避免,以及一些常见的规范咱们是否遵照了呢,咱们来简单复习一下。c#
控制语句包含:设计模式
一、分支语句:if和switch单元测试
二、循环语句:while、for、do-while(使用较少),(在c#中还有一种语法糖foreach、linq的each等,这里不比较c#)测试
三、跳转语句:break、continue、return和throwspa
看到这些控制语句,这是咱们最熟悉的亲人啊,咱们天天敲的代码,有多少是if,说多了都是泪。设计
下面逐个展开,3d
分支语句:if和switch,分支语句是一种控制机制,使程序具备有限的判断能力,可能根据不一样的输入,执行不一样的操做。分支语句又称条件语句,使部分程序可根据某些表达式的值被有选择的执行。code
对于分支语句的单元测试比较麻烦,须要传递不一样的输入,来进行验证。blog
if语句:if 条件的值是true,就会执行if内部逻辑,不然会执行else。
注意:
一、对于if、else if、else的判断语句,只会且只会执行其中的一个逻辑。
二、if 中的条件表达式计算的结果必须为boolean类型,其余类型的编译会失败
三、alibab JAVA开发规范:【强制】if/for/while/switch/do 等保留字与左右括号之间都必须加空格。保存格式化代码,IDE会自动添加空格
四、alibab JAVA开发规范:【强制】在 if/else/for/while/do 语句中必须使用大括号,即便只有一行代码,避免使用下
面的形式:if (condition) statements。简单描述就是,if内的逻辑必须包含大括号,即便是空。
五、alibab JAVA开发规范:【推荐】推荐尽可能少用 else, if-else 的方式能够改写成:
if(condition){
…
return obj;
}
// 接着写 else 的业务逻辑代码;
说明:若是使用要 if-else if-else 方式表达逻辑,【强制】请勿超过 3 层,超过请使用状态设计模式。
经过代码简单回忆下,
1 String name = "郭志奇"; 2 if (name == "郭语晨") { 3 System.out.println("我闺女"); 4 } else if (name.contains("袁")) { 5 System.out.println("我媳妇"); 6 } else if (name.toUpperCase() == "GUO") { 7 System.out.println("个人姓"); 8 } else { 9 { 10 System.out.print("我也不知道是什么"); 11 } 12 }
switch语句:
1 name = "郭语晨"; 2 switch (name) { 3 case "郭语晨": 4 System.out.println("我闺女"); 5 case "袁": 6 System.out.println("我媳妇"); 7 break; 8 case "GUO": 9 System.out.println("个人姓"); 10 break; 11 default: 12 System.out.println("我也不知道是什么"); 13 break; 14 }
程序输出:
注意:
一、break是能够省略的,可是除了最后一个default语句对应的break,其余case的break尽可能别省略。最优解:全部的break都保留
二、若是去掉break,会出现什么?看上面你的代码,case “郭语晨”后边的break是没有的,输出了两行。这就表示,若是break去除,那么程序会继续匹配下面的case,而不会中止。
三、alibaba 开发规范:【强制】在一个 switch 块内,每一个 case 要么经过 break/return 来终止,要么注释说明程序
将继续执行到哪个 case 为止;在一个 switch 块内,都必须包含一个 default 语句而且放在
最后,即便它什么代码也没有
四、switch的表达式计算结果只能是int、bool、char、short、string等类型,不能是long。缘由:long表明的精度很大,存在偏差。
循环语句:循环语句使程序代码循环执行,有三种循环构造,while、do-while、for。java5以后有for-each
for和while循环在执行循环体以前测试循环条件,do-while在执行完循环体以后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,do-while将至少执行一次循环体。
while语句:
while每次执行都会判断循环条件,尽可能避免出现无限循环的状况。
1 int index = 0; 2 while (name == "郭志奇") { 3 index++; 4 System.out.println(index + ""); 5 System.out.println(String.valueOf(index)); 6 if (index == 3675) { 7 System.out.println("太累了,退出"); 8 break; 9 } 10 }
注意:
一、退出while循环有几种方式,break、更改循环判断条件、throw
二、总之 不要出现无限循环。
三、while循环条件语句只能写一个表达式,并且是衣蛾布尔型表达式。若是须要循环变量,必须在while以前对循环变量畸形初始化。
do-while 和while相似,来段代码结束。
1 index = 0; 2 do { 3 index++; 4 System.out.println(index); 5 if(index==564) 6 { 7 System.out.println("退出循环 太累了"); 8 break; 9 } 10 } while (name == "郭志奇");
注意:do-while循环会在判断循环体以前先执行一次
使用最普遍、最重要的for循环:
for(初始化;循环条件;迭代){}
for循环执行,首先会执行初始化语句,初始化循环变量和其余变量,而后会判断循环条件是否知足,若是知足,继续执行循环体并计算迭代语句,以后再次判断循环条件。 请注意各个语句的执行前后顺序,在特定状况下会用到。
来段代码结束
1 for (int i = 0; i <= 292; i++) { 2 System.out.println("当前数值为" + i); 3 if (i == 2) { 4 continue; 5 } 6 if (i == 43) { 7 break; 8 } 9 }
注意:
一、for循环不须要提早声明条件变量
二、执行顺序:初始化变量--》循环条件是否知足--》计算迭代语句。如此循环
三、break会跳出循环,continue会继续下次执行
特殊状况下,for实现无限循环,只需将判断及迭代语句删除
1 for (;; index++) { 2 System.out.println("无限循环"); 3 if (index == 4) { 4 System.out.println("退出无限循环"); 5 break; 6 } 7 }
for-each 语句:
for-each是for循环的一个变体,比起c#的foreach 语法接近。主要做用是用来遍历集合元素,对于集合的遍历,用for-each比较简单方便,不须要根据集合索引去定位。
1 List<String> conn = new ArrayList<String>(); 2 conn.add("ddd"); 3 conn.add("mmm"); 4 conn.add("eee"); 5 // 使用for循环执行遍历 6 for (int i = 0; i < conn.size(); i++) { 7 System.out.println("for循环:" + conn.get(i)); 8 } 9 10 for (var item : conn) { 11 System.out.println("foreach循环" + item); 12 }
我的感受for-each循环很只是提供一个语法糖。
虽然咱们每天在敲代码,可是基础知识仍是要偶尔复习下,也许能发现其中某个点咱们理解有错误。减小bug才是咱们的终极目标。