上接:Java复习总结一
三元运算符
-
格式
比较表达式?表达式1:表达式2;
-
执行流程:
首先计算比较表达式的值,看是true还是false。 如果是true,表达式1就是结果。 如果是false,表达式2就是结果。
-
案例
int a = 10; int b = 30; int max = (a > b) ? a : b; //获取两个变量的最大值 int min = (a < b) ? a : b; //获取两个变量的最小值 String s = (a == b) ? "等于" : "不等于"; //判断是否相等
-
注意
比较表达式?表达式1:表达式2; 表达式并不是只能是整数,还有String类型,只不过要注意接收类型。 表达式是什么类型就是用什么类型接收。
键盘录入
-
实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。
-
实现:
1、导包 import java.util.Scanner; 位置:在class的上边 2、创建对象 Scanner sc = new Scanner(System.in); 3、获取数据 int a = sc.nextInt();
-
案例(键盘录入两个数,获取最大的数)
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int max = (a > b) ? a : b;
System.out.println("最大的数是:"+max);
}
}
流程控制语句
1、顺序结构 从上往下,从左往右,依次执行
2、选择结构 按照不同的选择,执行不同的代码
3、循环结构 循环执行一些代码
选择结构
if判断语句
-
格式
格式1: if(比较表达式) { 语句体; } 执行流程: 判断比较表达式的值,看是true还是false 如果是true,就执行语句体 如果是false,就不执行语句体 格式2: if(比较表达式) { 语句体1; }else { 语句体2; } 执行流程: 判断比较表达式的值,看是true还是false 如果是true,就执行语句体1 如果是false,就执行语句体2 格式3: if(比较表达式1) { 语句体1; }else if(比较表达式2){ 语句体2; } ... else { 语句体n+1; } 执行流程: 判断比较表达式1的值,看是true还是false 如果是true,就执行语句体1 如果是false,就继续判断比较表达式2的值,看是true还是false 如果是true,就执行语句体2 如果是false,就继续判断比较表达式3的值,看是true还是false ... 如果都不满足,就执行语句体n+1
if语句所控制的语句,是一条语句的话,大括号可以省略(不建议使用)
注意:
1、比较表达式无论简单还是复杂,结果是boolean类型
2、if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
建议:永远不要省略。
3、三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
4、一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
5、else后面如果没有if,是不会出现比较表达式的。
6、三元可以实现的if一定可以实现,如果是一条输出语句的话用三元就不太适用了,
因为三元是一个运算符,必须有一个结果返回的
switch
-
格式:
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; }
注意:
1. 接收的基本数据类型:byte,short,char,int
引用数据类型:
JDK5版本后可以接收枚举类型。
JDK7版本后可以接收String类型。
2. switch碰到break就会停止,跳出switch语句。
break可以省略写,但是会出现case穿透现象。
3. default如果所有情况不匹配,就执行这条语句。
不管放前面还是后面都是最后执行的,推荐放在最后面。
default可以省略但是不建议,因为它的作用是对不正确的情况给出提示。
4. caes的应用场景,如果switch语句中代码的语句体都是相同的就可以是用case。
5. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
应用场景:
if通常用于范围的匹配。
switch用于固定的选择匹配。
穿透现象,在switch语句中,每个case选项中都要加break,否则可能会出现穿透现象,键盘录入一个整数“1”,输出结果“1”,“2”,case 1执行完后没有break跳出switch,继续往下执行,在执行完case 2时,遇到break,跳出循环。
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i){
case 1:
System.out.println(1);
case 2:
System.out.println(2);
break;
default:
System.out.println("没这个数");
}
default不管放前面还是后面都是最后执行的,输入一个值0,程序会先走case然后走default,由于没有break跳出选择,穿透,继续由上往下执行,打印“没这个数”,“1”,“2”,到选择语句末结束。
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
switch (i){
default:
System.out.println("没这个数");
case 1:
System.out.println(1);
case 2:
System.out.println(2);
}
打印: