算数运算符

/*
    关于java编程中的算术运算符:
        + 求和
        - 相减
        * 乘积
        / 商
        % 求余数【取模】
        ++ 自加1
        -- 自减1
        注意:
            运算符有优先级,不确定的时候添加小括号
*/
public class OperatorTest01
{
    public static void main(String[] args){
        
        int i = 10;
        int j = 3;

        System.out.println(i + j); //13
        System.out.println(i - j); //7
        System.out.println(i * j); //30
        System.out.println(i / j); //3
        System.out.println(i % j); //1

        //++运算符可以出现在变量前面/后面【单目运算符】
        int k = 10;
        k ++;
        System.out.println(k);
        int y = 10;
        ++ y;
        System.out.println(y);

        //++出现在变量后
        //规则:先做赋值运算,再对变量中保存的值进行自加1
        int a = 100;
        int b = a ++;
        System.out.println(a); //101
        System.out.println(b); //100

        //++ 出现在变量前
        //规则:先进行自加1运算,然后再进行赋值操作
        int m = 20;
        int n = ++ m;
        System.out.println(m); //21
        System.out.println(n); //21

        int mm = 500;
        System.out.println(mm); //500

        int e = 100;
        System.out.println(e ++); //100
        System.out.println(e); //101

        int s = 100;
        System.out.println(++s); //101
        System.out.println(s); //101

        System.out.println("--------");
        System.out.println(--s); //100
        System.out.println(s++); //100
        System.out.println(s--); //101
        System.out.println(s--); //100
        System.out.println(s--); //99
        System.out.println(s); //98
    }
}
/*
    关系运算符:
        >    大于
        >=    大于等于
        <    小于
        <=    小于等于
        ==    等于
        !=    不等于

    = 是赋值运算符
    == 是关系运算符

    关系运算符的运算结果一定是布尔类型:true/false
*/
public class OperatorTest02
{
    public static void main(String[] args){
        
        int a = 10;
        int b = 10;

        System.out.println(a > b); //false
        System.out.println(a >= b); //true
    }
}

/*
    逻辑运算符:
        &    逻辑与
        |    逻辑或
        !    逻辑非(取反,!false就是true,!true就是false)
        ^    逻辑异或(两边的算子只要是不一样,结果就是true)

        &&    短路与
        !!    短路或

        短路与和逻辑与(短路或和逻辑或)的最终运算结果
        都是相同的,只不过短路与(或)存在短路现象
*/
public class OperatorTest03
{
    public static void main(String[] args){
        
        System.out.println(5 > 3 & 5 > 4); //true
        System.out.println(5 > 3 & 5 > 6); //false
        System.out.println(5 > 3 | 5 > 4); //true

        /*
        //逻辑与和短路与
        int x = 10;
        int y = 8;
        //逻辑与
        System.out.println( x < y & ++x < y);
        System.out.println(x); //11
        */

        //逻辑与和短路与
        int x = 10;
        int y = 8;
        //短路与
        //x < y 结果是false,整个表达式结果已经确定是false
        //所有后面的表达式没再执行,这种现象称为短路现象
        System.out.println( x < y && ++x < y);
        System.out.println(x); //10

        /*
            从某角度来看,短路与更智能。
            由于后面的表达式可能不执行,
            所以执行效率较高。这种方法在实际开发中使用较多

            但是,在某些特殊的业务逻辑当中,需要使用逻辑与
        */

        /*
            什么情况下发生短路或?
                在第一个表达式执行结果是true,会发生短路或
            什么情况下发生短路与?
                在第一个表达式执行结果是false,会发生短路与
        */
    }
}
/*
    关于java中的赋值运算符:

        赋值类运算符包括:
            
            基本的赋值运算符
                =
            扩展的赋值运算符
                += -= *= /= %=

        1、赋值类的运算符优先级:先执行等号右边的表达式,
            将执行结果赋值给左边的变量
        2、结论:扩展类型的赋值运算不改变运算结果类型,
            假设最初变量是byte类型,无论怎样追加或追减,
            最终该变量的数据类型还是byte类型
*/
public class OperatorTest04
{
    public static void main(String[] args){
        //基本的赋值运算符
        int i = 10;
        i = i + 5;
        System.out.println(i); //15

        //扩展的赋值运算符
        i += 5;
        System.out.println(i); //20

        byte b = 10;
        //编译错误,编译器发现b+5的类型是int类型,
        //b变量的数据类型是byte
        //大容量向小容量转换需添加强制类型转换符,报错
        //b = b + 5
        //错误纠正
        b = (byte)(b + 5);
        System.out.println(b); //15

        byte x = 10;
        x += 5; //等同于:x = (byte)(x + 5)
        System.out.println(x); //15

        byte z = 0;
        z += 128; //等同于:z = (byte)(z + 128)
        System.out.println(x); //-128【损失精度】
    }
}
/*
    关于java中的“+”运算符:
        1、+运算符在java语言当中有两个作用:
            加法运算,求和
            字符串的链接运算

        2、当“+”运算符两边的数据都是数字,进行加法运算

        3、当“+”运算符两边的数据只要有一个数据是字符串,
            一定会进行字符串连接运算,
            并且连接运算之后的结果还是一个字符串类型

        4、在一个表达式当中可以出现多个“+”,
            在没有添加小括号的前提下,
            遵循自左向右的顺序依次运算
*/
public class OperatorTest05
{
    public static void main(String[] args){
        
        System.out.println(10 + 20 + 30); //60
        System.out.println(10 + 20 + "30"); //"3030"
        System.out.println(10 + (20 + "30")); //102030

        int a = 10;
        int b = 20;

        //要求在控制台输出“10 + 20 = 30”
        System.out.println(a + " + " + b + " = " + (a + b));

        //定义一个String类型的变量,
        //起名username,赋值"zhangsan"
        String username = "zhangsan";
        System.out.println("欢迎" + username + "回来");
    }
}
/*
    三元运算符/三目运算符/条件运算符
        
        1、语法规则:
            布尔表达式 ? 表达式1 : 表达式2

        2、三元运算符的执行原理
            当布尔表达式的结果是true【false】的时候,
            选择表达式1【表达式2】作为整个表达式的执行结果
*/
public class OperatorTest06
{
    public static void main(String[] args){
        
        boolean sex = false;

        char c = sex ? '男' : '女';
        System.out.println(c);

        //语法错误,结果可能是String,也可能是char,
        //但前面不能用char来接收数据
        //char c1 = sex ? "男" : '女';
    }
}

 

 

 

posted @ 2020-08-09 23:56  Lerresino  阅读(106)  评论(0)    收藏  举报