语句
其实一直以来我都没有办法把语句和表达式明确的区分开,主要的原因是好像没有一个明确定义,类似汉语中一个词和一句话的区分一样。当然其实是有办法的,像下面的这种情况
//这种写法我们可以称为语句,而针对i=10这个一段我们是可以称为它是一个赋值表达式
int i=10;
2
3
4
在Java甚至于编程中的语句根据代码执行的流程(即先后顺序)进行了分类。程序从上到下逐行地执行,中间没有任何判断和跳转(这种方式也是程序的默认执行顺序)。除此之外还有一些可以改变代码执行顺序的关键字,这就是今天的要聊的内容
# 分支结构
根据条件,选择性地执行某段代码。
# if
格式一:
if(逻辑表达式){
当逻辑表达式的结果为true时执行的代码
}else{
当逻辑表达式的结果为false时执行的代码
}
2
3
4
5
6
7
8
注意:if语句块可以独立存在,但是else必须和if待在一起,同时当待执行的代码只有一行时是可以省略大括号的
格式二:
if(逻辑表达式1){
}else if(逻辑表达式2){
}else if(逻辑表达式3){
}else{
表示以上所有的逻辑表达式都不成立时执行的代码
}
2
3
4
5
6
7
8
9
10
11
曾经我看到过很多省略大括号的写法,我个人是极其不推荐这种写法,至少从代码阅读上来讲会增加阅读成本。难道省略一对括号就能体现出编码水平么
练习
定义三个变量,将该三个变量进行排序输出,要求顺序是从小到大
# switch
名词解释:
- case穿透:从某个符合情况的case开始一直向下执行直至遇到结束语句或者整体执行完成
整体的意思可以理解为当该变量的值等于某个case后面的值时,执行这个case对应的代码。同时在JDK1.8之后switch开始支持字符串类型
基础语法
switch(含有具体值的变量){
case 变量的某个值:
...
dfault:当以上所有的case都不成立时执行的代码,类似于if语句中的else
}
2
3
4
5
6
7
8
虽然case穿透在某些情况下能够给我们提供些便利,但是我们也应该知道如何避免case穿透,具体的玩法有以下几种
break:跳出它所在的语句块,它是语句级别的控制
return:它是方法级别的控制,终止它所在的方法的运行,向该方法的调用者提供一个值(返回值)
System.exit(0):退出Java虚拟机,一般不用
虽然同属于分支语句,但是if和switch有明显的不同,它们的使用场景如下
如果判断的具体数值不多,而且符合byte、 short 、int、 char、String这五种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
# 练习
1)对学生成绩大于60分的,输出“合格”。低于60分的,输出”不合格”。
2)根据用于指定月份,打印该月份所属的季节。3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
3)大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上;富:财富1千万以上;帅:是
- 如果这三个条件同时满足,则:”我一定要嫁给他!!!”
- 如果三个条件有为真的情况,则:”嫁吧,比上不足,比下有余。”
- 如果三个条件都不满足,则:”不嫁!”
4)打印输出闰年还是平年,每个月份的天数和所属季节
# 循环结构
根据循环条件,重复性的执行某段代码。循环语句本身并不难理解,难以理解是当这些语句遇到具体问题时,整体的逻辑会变的很复杂。而这个问题的解决需要大量的联系
# for语句
初涉循环语句可能很难理解,尤其是for循环,因为里面包含了三个表达式。但是只要梳理清楚其关系还是很容易理解的
基础语法
for(表达式1;表达式2;表达式3){
循环执行的语句
}
2
3
4
5
流程解析
- 表达式1:当for循环首次执行时它会被执行,后面循环则不执行该表达式
- 表达式2:作为循环的控制条件,该表达式会被反复执行一直到结果为false
- 表达式3:每次循环它都是最后执行,执行多次
退出循环
break:跳出它所在的语句块,它是语句级别的控制
return:它是方法级别的控制
System.exit(0):退出Java虚拟机,一般不用
continue:表示跳过本次执行
注意:将一个循环写到另一个循环里面这种情况称为嵌套循环。而这种情况下需要知道的是外层循环执行一次,内层循环执行多次
# 练习
1)求1~100所有整数的和1+2+3+4..+100=5050
2)打印1~100之间所有是7的倍数的整数的个数及总和(体会设置计数器的思想)
3)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。例如: 153 = 1 x 1x1 + 3 x 3 x 3 + 5 x 5 x 5
4)在控制台上打印输出一个直角三角形的图案(参考99乘法表)
5)在控制台上打印输出一个正三角形(选作)
# while
基础语法:
while(逻辑表达式){
循环执行的代码
}
2
3
4
# do-while
基础语法:
do{
循环执行的内容
}while(逻辑表达式);
2
3
4
# 三种循环语句的比较
相同点:
都是循环语句,可以循环执行特定的代码
不同点:
while、do-while:
while会先判断逻辑表达式是否成立,然后再决定是否执行循环
do-while先循环一次,然后再判断逻辑表达式,也就意味着该类型的循环及时表达式是false那么它也会运行一次
while、for
- for循环因为所有的表达式都是写在循环语句中,所以控制比较灵活,同时比while要节省机器资源
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
同理在循环语句中如果需要执行的代码只有一句也可以省略大括号,但是同样不推荐使用