一、三目运算符(三元运算符)
语句定义格式:
(关系表达式)?表达式1:表达式2
运算流程:
1、计算关系表达式,由于是关系表达式,所以这里的结果只能是布尔类型,不能是其他类型
2、如果关系表达式的结果是true的话,执行表达式1,三目运算符的最终结果是表达式1的结果
3、如果关系表达式的结果是false的话,执行表达式2,三目运算符的最终结果是表达式2的结果
注意事项:
1、三目运算符的表达式一定是有一个返回值的(结果不能没有返回值)
2、三目运算符的最终结果的数据类型是由表达式1和表达式2中结果最大的那个数据类型决定的(否则会报错,程序无法运行)
二、键盘录入数据概述:
我们目前在写程序的时候,数据都是固定的,但是在实际开发中,数据值肯定是变化的
所以将数据改进为键盘录入,提高程序的灵活性
实现方法:(目前先记住使用就行)
1、导包:在class之上,backage之下进行导包
import java.util.Scanner;
2、创建对象
Scanner sc = new Scanner(System.in);
3、调用方法获取键盘上的数据
int a = sc.nextInt(); //获取键盘上的数据
String s = sc.next(); //获取键盘上所有的字符,组成字符串
如果输入的数据类型与接收的类型不匹配,会报错InputMismatchException,报输入未匹配异常
以后java程序报错的时候,看第一个报错,后面的报错往往是由于第一个报错引起的
三、顺序结构:
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
总的来说:写在前面的先执行,写在后面的后执行
四、选择结构:
也被称为分支结构。
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
五、if语句
语句定义格式1:
if(关系表达式){
语句体;
}
后续代码;
执行流程:
1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型
2、如果关系表达式的结果是true的话,就进入大括号内,执行语句体。
3、如果关系表达式的结果是false的话,就不进入大括号内,也就是不执行语句体。继续执行if后面的后续代码,直到程序结束。
if语句编写的注意事项:
1、关系表达式中的结果一定要严格遵循结果是boolean类型的规则
2、如果if语句体是由一条语句组成的时候,可以省略大括号,否则不能省略,如果省略,默认只拿语句体中的第一行作为if语句体
推荐,!!!!!永远不要省略大括号!!!!!
3、如果在小括号后面,大括号前面加上了分号,其实表示这个if语句有一个空语句体
后面大括号中的代码就当作一个普通的代码块去执行
if语句定义格式2:
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
1、先判断关系表达式中的结果值,注意无论这里的关系表达式是否复杂,结果一定要是boolean类型
2、如果关系表达式的值是true的话,执行语句体1,语句体2不会执行
3、如果关系表达式的值是false的话,执行语句体2,不执行语句体1
4、无论关系表达式中的值是true还是false,只执行if和else中语句的其中一个。
if语句定义格式3:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}else if(关系表达式3){
语句体3;
}
...
else{
语句体n+1;
}
执行流程:
1、首先判断关系表达式1中的值,如果是true,执行语句体1,执行完语句体1后结束整个if语句
2、如果关系表达式1的值是false的话,判断下一个关系表达式2,如果是true重复步骤1,如果是false一次类推
3、如果所有的关系表达式都不满足的话,最后执行else中的语句体n+1
(注意:
为了程序的严谨性,推荐给出一个默认的处理,当所有的关系表达式都是false的时候,就会执行这里的代码。)
六、选择结构第二种:switch
语句定义格式:
switch(表达式){
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
case 常量值3:
语句体3;
break;
...
default:
语句体n+1;
break;
}
名词解释:
1、switch:表示它是java中的一个选择结构语句
2、表达式:是进行选择匹配的内容,表达式具有一个结果值,而java中switch的表达式的值可以是byte,short,int,char
JDK1.5之后可以是枚举
JDK1.7之后可以是String
3、case:匹配的内容,后面跟上与表达式结果做比较的值,如果匹配到,就执行对应的case中的语句体。
4、常量值:这里只能是一个常量值,不可以是变量!!!!!!!
5、语句体:当有匹配的case的时候,执行对应的语句体。
6、break:
一般情况下,每一个语句体执行完后,都会跟上一个break,表示跳出整个switch选择
7、default:
如果所有的case都没有被匹配到的话,最终会执行default中的语句体内容。
执行流程:*****
1、首先会计算表达式中的结果值
2、拿着这个结果值,与case后面的常量值自上而下的做匹配,如果匹配到一样的值,就会执行对应case中的语句体内容
3、执行完语句体后,会紧接着执行后面的break语句,执行完break语句后,会结束整个switch选择
4、如果所有的case都没有匹配到对应的值后,会执行default中的语句体内容,执行完后执行break,跳出整个switch选择
switch语句使用的注意事项:
1、case后面只能是常量值,并且类型只能是byte,short,int,char,枚举,String当中的其中的一种
(并且多个case后面匹配的值不能重复。)
2、break可以省略吗?
可以省略,如果省略可能会发生选择穿透,case匹配穿透。
如果匹配到的case中的语句体省略了break语句,那么再执行完当前case中的语句体后,会执行下面的语句体,直到遇到break,结束switch选择。
3、default语句可以省略吗?
可以省略,但是一般情况下,不推荐省略。当匹配的值是固定的几个的时候,可以省略default
4、default语句一定要放在某尾吗?
不一定,经过测试发现,可以放在任意位置,default的执行是严格遵循在所有的case都不匹配的情况下,才会执行default
swicth结束条件:
1、遇到break语句
2、正常执到最后一行结束当前整个语句
七、for循环
for循环:
语句定义格式:
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
每一部分解释:
初始化语句:
一条或者多条语句,这些语句完成一些初始化操作。
注意:初始化语句在循环的整个过程中,只会执行一次
判断条件语句:
这是一个boolean表达式,这个表达式能决定是否执行循环体。
循环体语句:
这个部分是循环体语句,也就是我们要多次做的事情。
控制条件语句:
这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
执行流程:
A:执行初始化语句
B:执行判断条件语句,看其结果是true还是false
如果是false,循环结束。
如果是true,继续执行。
C:执行循环体语句
D:执行控制条件语句
E:回到B继续
(一直循环以上操作)
for循环使用的注意事项:
1、初始化语句一定要写在for循环内吗?
不一定,可以写在外面,但是一定要保证在for循环内要可以访问到这个变量
如果不写在循环内的话,for循环以外的语句无法访问到该变量
2、判断条件语句可以省略吗?
不可以省略,如果省略默认任何情况下都可以执行循环体内容,这样就成了死循环
3、控制条件语句可以省略吗?
不可以,因为控制条件语句决定了判断条件语句是否是true还是false,换句话说就是控制是否结束循环的间接条件
如果省略,可能会造成死循环。
4、for循环小括号后面不能加上分号,默认分号后面有个空语句体。
如果加上分号大括号的内容就与for循环无关了,只是一个简单的代码块只会执行一次
5、大括号可以省略吗?
当语句体内容只有一行的时候,可以省略大括号
但是当语句体内容有多行的时候,循环只针对第一个语句生效
推荐永远不要省略大括号!!!
6、控制条件语句不一定要写在小括号内,也可以与循环体内容写在一起,只要能控制循环的次数就可以了