一、三元运算符
三元运算符的格式:
(表达式)?执行语句1(具体的结果):执行语句2(具体的结果);1)先判断表达式的结果是否成立,如果结果为true,就执行成立的语句1;
否则不成立,则执行不成立的语句2;
需求:
1)定义两个变量,求两个变量中的最大值
2)定义三个变量,求三个变量中的最大值
3)定义两个变量,求两个变量是否相等 (boolean :true/false)
二、文本录入
1)导包 用哪个一类,就需要导入到当前Java文件中(只要不是java.lang包下的类,都需要导入) 固定写法: import java.util.Scanner; //用谁导谁 书写位置:在class的上面 2)固定格式:创建文本扫描器对象 Scanner 对象名 = new Scanner(System.in) ; //对象名:自己起名字 3)提示并录入数据 (默认录入int类型) System.out.println("请您输入数据:") ; int 变量名= 对象名.nextInt() ; //录入一个int类型的数据 4)完成自己的业务操作:使用这个变量名(求两个数据是否相等/比较数据最大值等等...)
三、流程控制语句
三个分类:
顺序结构语句 选择结构语句 循环结构语句 顺序结构语句: 当进入到类中之后,jvm调用main方法,代码由上而下依次加载 除非一种特例:当jvm退出了就不会进行执行了! 后期System类中有一个功能:exit(int status) 参数里面为0,表示正常终止jvm
四、if语句
1.if语句 有三种格式
if语句格式1: if(表达式){ 语句; } 执行流程: 1)首先表达式是否成立,成立,则执行该语句 2)不成立,不会进入if里面; 应用场景:针对一种情况判断 if语句格式注意事项: 1)有{括号的地方不能有分号; 2)当前if(表达式){ //{}可以省略不写,但是开始学习建议! 语句 ; }
If选择结构语句格式2: 开发中使用最多:针对两种情况进行判断! if(表达式){ 语句1; }else{ 语句2; } 执行流程: 1)先判断表达式是否成立,如果成立,执行执行语句1; 2)如果不成立,则执行语句2; 需求:键盘录入两个数据,比较两个数据是否相等
if语句格式3 针对多种情况进行判断
if(表达式1){ 语句1 ; }else if(表达式2){ 语句2; }else if(表达式3){ 语句3; ... ... ... }else{ 语句n+1; } 2.执行流程: 1)首先判断表达式1是否成立,如果成立,则执行语句1; 2)如果上面表达式1不成立,继续判断表达式2是否成立,如果成立,执行语句2 3)如果表达式2也不成立,继续判断表达式3是否成立,如果成立,执行语句3 ... ... 4)如果上面的条件表达式都不成立,则执行最终语句n+1 ;
3.if语句格式2和三元运算符有什么区别?
if是一个流程控制语句,不仅能够表示具体的结果,而且还可以一个输出语句体现; 但是三元运算符,一般情况:就是最终是具体的结果体现! if范围大于三元;能够使用三元运算符实现的一定能够使用if格式2;反之,不一定! if(表达式){ 语句1; }else{ 语句2; } (表达式)?执行true的结果:执行false的结果; 举例: 没有提示,int 1)键盘录入两个数据,获取两个数据中的最大值; 2)键盘录入一个数据,判断这个数据是否是偶数!(能够被2整除...)
五、switch
1.switch语句的格式:
switch(表达式){
case 值1:
语句1;
break ;
case 值2:
语句2;
break ;
...
...
...
default:
语句n+1 ;
break ;
}
2.执行流程:
1)switch中的表达式的结果值和case语句匹配,值1和结果匹配,
就执行语句1,遇见break,switch结束;
2) 值1和switch表达式结果不匹配,继续判断值2是否匹配,如果匹配,就执行语句2,switch语句结束
3)如果case语句后面值都不匹配,这个执行default语句,执行语句n+1,程序执行到末尾结束...break:属于跳转控制语句中的一种
结束,中断意思! (不能单独使用,只能在switch和循环语句中使用)
3.面试题
switch跟的表达式可以是什么数据类型?
能够跟的基本类型:int,byte,short,char
Jdk版本不同的跟的类型不一样
JDK5以后,可以 跟枚举: enum : 枚举类(引用类型,里面的都常量!)
JDK5以后新特性
JDK7以后:可以跟String类型
3.Switch语句的注意事项:
1)case语句后面只能是常量(Java是一个强类型语言: 语法,结构非常严谨)
相对来说:前端:javascript :简称"js",Switch语句的case中不仅可以常量,也可以是变量
是一个弱类型语言(语法结构非常不严谨)
2)case语句中beark 最好携带上,如果没有携带break语句,会造成"case穿透"
"case穿透": (要灵活使用,并不是说这个情况不好)
某个case语句中没有带break,此时当跟case的值匹配,这个时候继续就往下执行,不会在判断case!
3)default语句可以在switch语句中的任何位置,不会影响switch的执行流程
如果在语句中,
default里面的break千万不能省略;省略,造成case穿透(考点)
如果在语句末尾,break可以省略不写,前期不建议
4)switch语句的结束条件是什么?
a)遇见break结束
b)程序默认执行到末尾
六、for循环
1.for循环语句的格式
for(初始化语句;条件表达式;步长语句/控制体语句){ 循环体语句; }
2.执行流程
1)初始化语句对变量进行赋值 2)判断条件表达式是否成立; 如果是成立,执行循环体语句; 3)继续执行控制体语句 4)继续回到2)里面判断 如果是成立,执行循环体语句; 继续回到3) ... ... ... 一直执行到条件不成立结束;
七、while循环
1.格式
while循环的格式: 常用的格式 初始化语句; while(条件表达式){ 循环体语句; 控制体语句; }
2.执行流程
1)先初始化赋值 2)判断条件表达式是否成立,成立,则执行循环体语句- 3)执行控制体语句---继续判断条件是否成立,----循环,,, ... ... 4)执行到条件表达式不成立,while语句结束
3. while和for循环的区别
1)共同点:都时能够实现循环的效果; 2)从格式有些差异 通用格式: for循环:整个操作(初始化语句;条件表达式;控制体语句){ } 初始化语句; while(条件表达式){ 循环体 控制体语句 } a)从内存角度考虑:for循环结束之后,当前里面的局部变量被释放了,节省内存空间! 相对来说,while循环,结束之后,依然可以访问到这个变量, 整个main方法结束之后,才释放内存,使用过程中,消耗内存空间! for循环比while更好一些! b) 当前明确循环次数时候,优先使用for循环;不明确循环次数使用的while循环 for使用最多;
八、常见的两种死循环
for循环的死循环格式(开发中使用不多,jdk原码中会见到这种格式) for(;;){ //当满足某个条件的时候,结束 ----->break; 循环体语句; } 开发中,使用多:while循环:死循环格式 while(true){ //当满足某个条件的时候,结束 ----->break; 循环体语句; }
九、 for循环语句的嵌套:
1.格式
for(初始化语句;条件表达式;控制体语句){---外层循环 //循环体语句 for(初始化语句;条件表达式;控制体语句){--- 内层循环 循环体语句... } } 将一个for循环语句作为 "循环体"去执行;
2.举例//99乘法表
//为了表示有效数据:从1开始 for(int x = 1 ; x <= 9 ; x++){//控制行数 //内层循环:列数在变化 for(int y = 1; y <=x ; y++){ System.out.print( x+"*"+y+"="+(y*x)+"\t") ; //使用制表符号: //转义字符"\x" //\n :表示换行 //\t :制表符,类似于tab键的效果,缩进空格 } System.out.println() ; } } }
十、跳转控制语句
break ; continue ; return ; break:中断,结束 不能单独使用, 1)只能在switch或者循环语句中使用; 单循环for循环中使用 2)在for循环嵌套中使用 break 标签语句 ;(现在很少见) 给外层循环,或者内层循环起名字--->标签语句; 3) continue:继续---->结束当前循环,立即进入下次循环