Java - 运算符,含if的选择结构

第三章 运算符

3.1、算术运算符

1)运算规则

*运算符* *运算规则* *范例* *结果*
+ 正号 +3 3
+ 2+3 5
+ 连接字符串 “中”+“国” “中国”
- 负号 int a=3;-a -3
- 3-1 2
* 2*3 6
/ 5/2 2
% 取模 5/2 1
++ 自增 int a=1;a++/++a 2
-- 自减 int b=3;a--/--a 2

2)案例演示

//算术运算符的使用
public class AirthmeticOperator {
    //编写一个main方法
    public static void main(String[] args) {
        int num1 = 12;
        int num2 = 14;
        //1. () 的优先级最高
        System.out.println("num1/(num2-num1)=" + num1 / (num2 - num1));
        //2. /的优先级比+要大
        System.out.println("num1+num2/num1=" + (num1 + num2 / num1)); //13,把()去除结果就变成121

        //自增自减
        //++a,a++单独出现都为 a = a + 1
        int a = 3;
//        ++a;
//        System.out.println("a =" + a); //a=4
        a++;
        System.out.println("a =" + a); //a=4
        
        int flag = 1;
        flag++; //2
        System.out.println("flag : " + flag);   //2
        ++flag; //3
        System.out.println("flag : " + flag);   //3
        flag--;     //2
        //(flag++)即为
        //int d = flag++;
        //System.out.println("flag++ :" + d);
        System.out.println("flag++ : " + (flag++)); //2
        --flag;
        System.out.println("++flag : " + (++flag)); //3
    }
}

3)注意

  1. 如果想要优先进行运算,可以考虑添加 ()号
  2. 运算结果的数据类型会取参与运算的数据中最大的数据类型
  3. 结果输出时注意 + 号和()号的使用,不然输出的可能是拼接的而不是运算结果,此时需要用 () 将运算表达式包裹

4)练习

从键盘输入一个5位数,拆分每一位并打印

//练习
import java.util.Scanner;
public class Practice01 {
    //编写一个main方法
    public static void main(String[] args) {

        //从键盘输入一个5位数,拆分每一位并打印
        System.out.println("请输入一个5位数:");
        Scanner scanner = new Scanner(System.in);
        //定义一个变量保存这个5位数
        int number = scanner.nextInt();
        //拆分这个5位数
        //万位
        int a,b,c,d,e;
        a = number / 10000;
        b = number / 1000 % 10;
        c = number / 100 % 10;
        d = number / 10 % 10;
        e = number % 10;
        //System.out.println(a + ',' + b + ',' + c + ',' + d + ',' + e);
        //单引号是字符,这里变成了','对应的unicode值参与运算
        System.out.println("拆分后变成:");
        System.out.println(a + "," + b + "," + c + "," + d + "," + e);
    }
}

3.2、赋值运算符

1)简单赋值运算

把 = 号右边的值/表达式,赋值给左边的变量

int num = 1;

2)复合赋值运算

*运算符* *运算规则* *范例* *结果*
= 赋值 int a=2 2
+= 加后赋值 int a=2,a+=2 4
-= 减后赋值 int a=2,a-=2 0
*= 乘后赋值 int a=2,a*=2 4
/= 整除后赋值 int a=2,a/=2 1
%= 取模后赋值 int a=2,a%=2 0

3)案例演示

//赋值运算符的使用
public class AssigningOperator {
    //编写一个main方法
    public static void main(String[] args) {
        //复合赋值运算
        int a = 10;
        a %= 9;
        System.out.println("a = " + a);
    }
}

3.3、比较运算符

1)介绍

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。

2)运算规则

*运算符* *运算规则* *范例* *结果*
== 相等于 4==3 False
!= 不等于 4!=3 True
< 小于 4<3 False
> 大于 4>3 True
<= 小于等于 4<=3 False
>= 大于等于 4>=3 True

3)案例演示

import java.util.Scanner;

public class Practice02 {
    //编写一个main方法
    public static void main(String[] args) {
        //键盘录入两个数据比较是否相等
        //引导输入数字
        System.out.println("请输入第一个数字");
        Scanner input = new Scanner(System.in);
        double num1 = input.nextDouble();
        System.out.println("请输入第二个数字");
        double num2 = input.nextDouble();
        boolean flag = (num1 == num2);
        System.out.println("flag = " + flag);
    }
}

3.4、逻辑运算符

1)介绍

逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false

作用:用来连接两个运算

例如:既要比较年龄,也要比较身高,等等。

2)运算规则

运算符 运算规则 范例 结果 简记
! 非,取反 !true Flase 是真则假
&& 短路与 false&&true False 有假则假
|| 短路或 false||true True 有真则真

3)短路与&&和逻辑与&的区别

&&短路与:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高

一般使用的都是短路与&&,效率高

短路或|| 和 逻辑或| 的区别

||短路或:如果第一个条件为 true ,则第二个条件不会判断,最终结果为 true ,效率高

一般使用||

4)案例演示

//逻辑运算符的使用
public class LogicalOperator {
    //编写一个main方法
    public static void main(String[] args) {
        //逻辑运算符
        //短路与
        System.out.println(19 >= 17 && 18 <= 54); //true
        System.out.println(25 >= 15 && 10 >= 20); //false
        //短路或
        System.out.println(19 >= 17 || 18 <= 54); //true
        System.out.println(25 >= 15 || 10 >= 20); //true
        System.out.println(10 >= 20 || 20 <= 10); //false
        //取反
        System.out.println(!false); //true

        System.out.println("-----------------");
        // && 和 & 的区别
        // &&:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高
        int a = 10;
        System.out.println(11 == 12 && ++a >= 12);
        System.out.println("a = " + a); //10
        int b = 10;
        System.out.println(11 == 12 & ++b >= 12);
        System.out.println("b = " + b); //11

    }
}

3.5、三元运算符

1)介绍

条件表达式?表达式1:表达式2;

  1. 如果条件表达式为true,运算后的结果是表达式1;
  2. 如果条件表达式为false,运算后的结果是表达式2;

2)案例演示

import java.util.Scanner;

//三元运算符的使用
public class TernaryOperator {
    //编写一个main方法
    public static void main(String[] args) {
        //三元运算符
        //键盘录入两个数据获取最大值
        Scanner input = new Scanner(System.in);
        //引导输入两个数字
        System.out.println("请输入第一个数字:");
        int num1 = input.nextInt();
        System.out.println("请输入第二个数字:");
        int num2 = input.nextInt();
        //三元运算符
        System.out.println(num1 > num2 ? "最大值是" + num1 : "最大值是" + num2);
    }
}

3.6、运算符的优先级

image

第四章 流程控制

4.1、顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

总的来说:写在前面的先执行,写在后面的后执行

4.2、选择结构

a. if 结构

一定会进行条件判断(布尔类型),如果满足条件,执行代码,如果不满足条件,就不执行代码,程序继续向后执行

注意:如果 if 或者 else 中,只有一条执行语句,那么可以不写 {} 号;

简单的 if...else 语句可以用三元运算符代替。

语法

if(判断条件) {
    执行语句;
}

流程图

image

演示

int age = 18;
        if(age >= 18) {
            System.out.println("恭喜你,成年了");
        }
        System.out.println("程序继续执行");

b. if...else 结构

如果满足某种条件,就进行某种处理,否则就进行另一种处理。

语法

if(判断条件) {
    执行语句1;
} else {
    执行语句2;
} 

流程图

image

案例

 int age = 18;
        if(age >= 18) {
            System.out.println("恭喜你,成年了");
        } else {
            System.out.println("真可惜,你还没成年");
        }
        System.out.println("程序继续执行");

c. 多重if...else if...else 语句

可以有多个选择,但只能选择一个

语法

if(判断条件1) {
    执行语句1;
} else if(判断条件2) {
    执行语句2;
} else if(判断条件3) {
    执行语句3;
    ......
} else if(判断条件n) {
    执行语句n;
} else {
    执行语句n+1;
}

流程图

image

案例

import java.util.Scanner;
public class Practice04 {
    //编写一个main方法
    public static void main(String[] args) {
        //从键盘录入一个成绩进行判断,根据要求打印
        //成绩在[0,60)打印该成绩为差
        //成绩在[60,70)打印该成绩为中
        //成绩在[70,80)打印该成绩为良
        //成绩在[80,100]打印该成绩为优
        //不满足条件,提示“成绩输入错误”
        System.out.println("请输入成绩:");
        Scanner input = new Scanner(System.in);
        int score = input.nextInt();
        //判断
        if (score >= 80 && score <= 100) {
            System.out.println("优");
        } else if (score >= 70) {
            System.out.println("良");
        } else if (score >= 60) {
            System.out.println("中");
        } else if (score <60 && score >=0){
            System.out.println("差");
        } else {
            System.out.println("成绩输入错误");
        }
    }
}

d. 嵌套 if...else 语句

选择条件是层级递进的,这样的结构叫嵌套结构

语法

if(条件1) {
	if(条件2) {
		代码块1
	} else {
		代码块2
	}
} else {
	代码块3
}

流程图

image

案例

public class Practice05 {
    //编写一个main方法
    public static void main(String[] args) {
        //案例:学校要举办选美大赛:
        /*报名条件:
        1、只能是女生,否则提示男士勿扰
        2、只能是年龄大于18岁,否则提示年龄不够
        3、身高大于一米六,否则提示身高不够
        4、如果条件都满足,就提示“欢迎进入海选!”
        */
        char sex = '女';
        int age = 20;
        double height = 1.67;
        //判断
        if(sex == '女') {
            //进入下一层的判断
            if(age >= 18) {
                //进入下一层的判断
                if(height >=1.6) {
                    System.out.println("欢迎进入海选!");
                } else {
                    System.out.println("身高不够");
                }
            } else {
                System.out.println("年龄不够");
            }
        } else {
            System.out.println("男士勿扰");
        }
    }
}

posted @ 2022-07-05 20:25  Thecong  阅读(70)  评论(0)    收藏  举报