一、运算符

1、概述

执行特定的数学或逻辑等操作的符号,+,-,*,/,%,==,!=,&&,||,?:,=,>>,<<等等

按照参与运算元素的个数可以分为单目运算符、双目运算符、三目运算符

单目运算符、赋值运算符、三目运算符计算方向从右到左运算

/**
 * @document:运算符介绍
 * @Author:SmallG
 * @CreateTime:2023/7/20+10:47
 */

public class OperatorDemo {
    public static void main(String[] args) {
        //运算符的优先级
        int a = 4 + 6 / 2 + 8 * 2;
        System.out.println(a); //23 先算乘除后算加减

        //运算符的优先级相同,按照从左到右的顺序依次运算
        int b = 1 + 2 + 3 + 4;
        System.out.println(b); //10

        //采用括号调整运算顺序
        int c = 100 * (2 + 100);
        System.out.println(c); //10200
    }
}

2、算术运算符(7个)

  • 相同的数据类型参与运算,数据类型不变
  • 参与数学运算的数据类型不一致,会就近自动转换数据类型,然后进行计算
  • byte、short、int、long按照int类型进行数学计算

算术四则运算案例:

/**
 * @document:算术四则运算
 * @Author:SmallG
 * @CreateTime:2023/7/20+10:57
 */

public class ArithmeticDemo {
    public static void main(String[] args) {
        //一般情况
        int a = 50;
        int b = 100;
        int c = a + b;
        System.out.println(c); //150

        //溢出问题
        a = Integer.MAX_VALUE;
        b = 1;
        c = a + b;
        System.out.println(c); //-2147483648

        //解决溢出问题 采用更大范围的类型
        long l = a + b;
        System.out.println(l); //-2147483648
        //仍然会产生溢出,因为两个int类型的变量计算后还是int,计算后再赋值给l
        //解决措施:将两个int类型的变量其中之一转变为long类型即可

        //整除
        a = 9;
        b = 2;
        c = a / b;
        System.out.println(c); //4

        //浮点数除法
        double d = (double) a / b;
        System.out.println(d); //4.5

        //byte short char 在运算的过程中会自动转换为int类型
        byte b1 = 5;
        short s1 = 6;
        //short s2 = b1 + s1; //报错,计算结果是int类型
        int i1 = b1 + s1;
        System.out.println(i1); //11

        //单纯的byte类型不会报错,3和100的字面量是int类型
        // 计算结果没有超过byte的表示范围,允许赋值
        byte b2 = 3 + 100;
        System.out.println(b2);
        //byte b3 = 100 + 100; 报错 两个数的计算结果超出byte的范围
    }
}

取余数运算案例:

/**
 * @document: 取余运算(取模运算)
 * @Author:SmallG
 * @CreateTime:2023/7/20+11:30
 */

public class RemainderDemo {
    public static void main(String[] args) {
        System.out.println(5 % 3); //2
        System.out.println(-5 % 3);//-2
        System.out.println(0 % 3); //0
    }
}

自增/自减运算实例:

/**
 * @document: 自增/自减运算
 * @Author:SmallG
 * @CreateTime:2023/7/20+11:48
 */

public class IncrementDemo {
    public static void main(String[] args) {
        int i = 1;
        int b = i++;
        System.out.println(b); //1
        System.out.println(i); //2

        i = 1;
        int c = ++i;
        System.out.println(c); //2
        System.out.println(i); //2

        i =1;
        System.out.println(i--); //1
        System.out.println(i);  //0
    }
}

3、关系运算符(6个)

用于比较数值的大、小、相等关系,==,!=,>,>=,<,<=,结果是boolean类型

关系运算符案例:

/**
 * @document: 关系运算符 判断两个数的大小关系
 * @Author:SmallG
 * @CreateTime:2023/7/20+11:57
 */

public class RelationalDemo {
    public static void main(String[] args) {
        int age = 5;
        System.out.println(age > 12);  //false
        System.out.println(age >= 12); //false
        System.out.println(age < 12);  //true
        System.out.println(age <= 12); //true
        System.out.println(age == 5);  //true
        System.out.println(age != 5);  //false
    }
}

4、逻辑运算符(3个)

逻辑与&&,逻辑或||,逻辑非!

java的双目逻辑运算符&&和||都是按照短路规则执行(在逻辑与中第一个运算假直接跳过第二个运算)

闰年判断案例:

/**
 * @document: 闰年判断
 * @Author:SmallG
 * @CreateTime:2023/7/20+14:09
 */

public class LogicalDemo1 {
    public static void main(String[] args) {
        //创建组件的对象
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入年份:");
        //创建年份对象
        int year = scanner.nextInt();
        if (year % 400 == 0 || (year % 4 == 0) && (year % 100 != 0)) {
            System.out.println(true);
        }
        else{
            System.out.println(false);
        }
    }
}

短路与和短路或案例:

/**
 * @document: 短路与,第一个条件为假则第二个条件不执行
 * @Author:SmallG
 * @CreateTime:2023/7/20+14:35
 */

public class LogicalDemo2 {
    public static void main(String[] args) {
        int i = 10;
        boolean b = i > 100 && i++ > 100;
        System.out.println(b); //false
        System.out.println(i); //10

        boolean b2 = i < 100 && i++ < 100;
        System.out.println(b2);//true
        System.out.println(i); //11 第一个条件满足,会执行第二个条件

        boolean b3 = i < 100 || i++ < 100;
        System.out.println(b3); //true
        System.out.println(i);  //11 短路或,第一个条件为真,不再运行第二个条件

        boolean b4 = i > 100 || i++ < 100;
        System.out.println(b4); //true
        System.out.println(i);  //12 第一个条件为假,执行第二个条件
    }
}

5、赋值运算符(=)

/**
 * @document: 赋值运算符
 * @Author:SmallG
 * @CreateTime:2023/7/20+15:06
 */

public class AssignmentDemo2 {
    public static void main(String[] args) {
        int a, b, c, d;
        a = b = c = d = 20;
        //从右到左依次执行
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

/**
 * @document: 复合赋值运算:+=,-=,*=,/=,%=
 * @Author:SmallG
 * @CreateTime:2023/7/20+15:12
 */

public class AssignmentDemo3 {
    public static void main(String[] args) {
        int i = 1;
        i += 5;
        System.out.println(i); //6

        i = 10;
        i -= 5;
        System.out.println(i); //5

        //自动执行强制类型转换
        i += 5.5;  //算出的结果是10.5,然后相当于 i =(int) i+5.5;变为整型
        System.out.println(i); //10
    }
}

6、字符串连接运算符

/**
 * @document: 字符串连接 +
 * @Author:SmallG
 * @CreateTime:2023/7/20+15:25
 */

public class StringDemo {
    public static void main(String[] args) {
        System.out.println(5 + 5.5); //执行加法运算 10.5
        System.out.println("5" + 5.5); //55.5字符串
        int i = 10;
        System.out.println("i + 10的和是:" + i + 10); //i + 10的和是:1010(从左到右)
    }
}

7、三目运算符(三元运算符)

/**
 * @document: 三目运算符
 * @Author:SmallG
 * @CreateTime:2023/7/20+15:32
 */

public class TernaryDemo {
    public static void main(String[] args) {
        /*
        三目运算符结构:
        boolean表达式? 表达式1 : 表达式2
        程序先执行boolean表达式 如果为true ->表达式1
                              如果为false ->表达式2
         */
        //键盘输入两个数字,选出最大值
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入两个数字:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int max = a > b ? a : b;
        System.out.println("两个数字的最大值为:"+max);
    }
}

二、分支流程控制

/**
 * @document: if单路分支,输入商品的总价,如果总价满足不小于500 八折优惠
 * @Author:SmallG
 * @CreateTime:2023/7/20+16:12
 */

public class IfDemo1 {
    public static void main(String[] args) {
        //输入总价
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入商品总价:");

        double total = scanner.nextDouble();
        System.out.println("原价:"+total);
        if (total >= 500) {
            total *= 0.8;
        }
        System.out.println("付款金额:"+total);
    }
}


/**
 * @document: 双路分支 if else
 * @Author:SmallG
 * @CreateTime:2023/7/20+16:24
 */

public class IfDemo2 {
    public static void main(String[] args) {
        /*
        输入商品总价
        如果商品总价不小于500  八折优惠  否则九折优惠
        输出付款金额
         */
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入总价:");
        double total = scanner.nextDouble();
        System.out.println("原价:" + total);
        if (total >= 500) {
            total *= 0.8;
        } else {
            total *= 0.9;
        }
        System.out.println("应付金额:" + total);
    }
}


/**
 * @document: if else if 多路分支
 * @Author:SmallG
 * @CreateTime:2023/7/20+16:32
 */

public class IfDemo3 {
    public static void main(String[] args) {
        /*
        输入商品的总价:
        如果商品总价大于等于800-----------7折
        如果商品总价小于800大于等于500-----8折
        如果商品总价小于500大于等于200-----9折
        如果总价小于200-------------------95折
         */
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入商品总价:");
        double total = scanner.nextDouble();
        if (total<0){
            System.out.println("输入有误,请输入正确的商品总价!");
        }else{
            System.out.println("原价:" + total);
            int index = -1;
            if (total >= 800) {
                total *= 0.7;
            } else if (total >= 500 && total < 800) {
                total *= 0.8;
            } else if (total >= 200 && total < 500) {
                total *= 0.9;
            } else if (total >= 0 && total < 200) {
                total *= 0.95;
            }
            System.out.println("应付金额:" + total);
        }
    }
}


/**
 * @document: switch case分支
 * @Author:SmallG
 * @CreateTime:2023/7/20+17:12
 */

public class SwitchDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入分数:");
        int score = scanner.nextInt();
        switch (score/10){
            case 10:
            case 9:
                System.out.println("A");
                break;
            case 8:
                System.out.println("B");
                break;
            case 7:
            case 6:
                System.out.println("C");
                break;
                //在switch里面default相当于if里面的else
            default:
                System.out.println("D");
        }
    }
}



/**
 * @document: switch表达式(java12新特性)
 * @Author:SmallG
 * @CreateTime:2023/7/20+17:35
 */

public class SwitchDemo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入分数:");
        int score = scanner.nextInt();
        switch (score / 10) {
            case 10, 9 -> System.out.println("A");
            case 8 -> System.out.println("B");
            case 7, 6 -> System.out.println("C");
            default -> System.out.println("D");
        }
    }
}
最后修改:2023 年 07 月 20 日
如果觉得我的文章对你有用,请随意赞赏