1. 表达式和语句
1.1 表达式
表达式一共分为三种:
(1)变量或常量 + 运算符构成的计算表达式
(2)new 表达式,结果是一个数组或类的对象。(后面讲)
(3)方法调用表达式,结果是方法返回值或void(无返回值)。(后面讲)
1.2 语句
程序的功能是由语句来完成的,语句分为单语句和复合语句
1.2.1 单语句:
(1)空语句,什么功能都没有。它就是单独的一个分号;(==需要避免==)
(2)表达式语句,就是表达式后面加分号;
1.2.2 复合语句
(1)分支语句:if...else,switch...case
(2)循环语句:for,while,do...while
(3)跳转语句:break,continue,return,throw
(4)try语句:try...catch...finally(后面学习)
(5)同步语句:synchronized(后面学习)
流程控制的三大结构:顺序、分支、循环
2. 顺序结构
顺序结构就是程序从上到下逐行地执行。表达式语句都是顺序执行的。并且上一行对某个变量的修改对下一行会产生影响。
2.1 输出语句
System.out.println() //换行
System.out.print() //不换行
2.2 输入语句
键盘输入代码的四个步骤:
1、申请资源,创建Scanner类型的对象
2、提示输入xx
3、接收输入内容
4、全部输入完成之后,释放资源,归还资源
2.3 next与nextline的区别
next()与nextLine()的区别?
next(),读取输入的数据时,遇到空格等空白字符,就认为本次数据输入结束
nextLine(),读取输入的数据时,遇到回车换行才认为结束
上一个接收输入的语句是nextInt(),next(),nextDouble()....
下一个紧接着的接收输入的语句是nextLine()
这个时间发现第二个输入语句,还没有输入呢,就结束了。
因为:nextInt(),next(),nextDouble()....它没有读取 回车换行符,数据通道(IO流)中还有回车换行符,
那么下一个nextLine(),一看通道中有 回车换行符,就以为输入结束了。
结论:
如果字符串中不会包含空格,那么建议大家使用next()更好。
如果字符串中想要包含空格,那么nextLine()的前面还有其他输入的话,加一句input.nextLine()把前面的回车换行读取掉。
3. 分支结构
3.1 if
1. 单分支条件判断
if()
2. 双分支条件判断
if(){
}else{
}
3. 多分支条件判断
if(){
}else if(){
}else{
}
3.2 switch-case
switch(表达式){
case 常量值1:
语句块1;
【break;】
case 常量值2:
语句块2;
【break;】
。。。
【default:
语句块n+1;
【break;】
】
}
4. 循环结构
4.1 for循环
for(初始化语句①; 循环条件语句②; 迭代语句④){
循环体语句③
}
执行流程:
- 第一步:执行初始化语句①,完成循环变量的初始化;
- 第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
- 如果是true,执行第三步;
- 如果是false,循环语句中止,循环不再执行。
- 第三步:执行循环体语句③
- 第四步:执行迭代语句④,针对循环变量重新赋值
- 第五步:根据循环变量的新值,重新从第二步开始再执行一遍
4.2 while循环
while (循环条件语句①) {
循环体语句②;
}
执行流程:
* 第一步:执行循环条件语句①,看循环条件语句的值是true,还是false;
* 如果是true,执行第二步;
* 如果是false,循环语句中止,循环不再执行。
* 第二步:执行循环体语句②;
* 第三步:循环体语句执行完后,重新从第一步开始再执行一遍
4.3 do…while循环
do {
循环体语句①;
} while (循环条件语句②);
执行流程:
* 第一步:执行循环体语句①;
* 第二步:执行循环条件语句②,看循环条件语句的值是true,还是false;
* 如果是true,执行第三步;
* 如果是false,循环语句终止,循环不再执行。
* 第三步:循环条件语句执行完后,重新从第一步开始再执行一遍
4.4 break 与 continue
break:终止switch或者当前循环
- 在选择结构switch语句中
- 在循环语句中
- 离开使用场景的存在是没有意义的
continue:提前结束本次循环,继续下一次的循环