java学习day02_运算符

java学习day02_运算符

Java语言支持如下运算符:

  • 算数运算符: + , - , * , / , % , ++ , - - ;

  • 赋值运算符: = ;

  • 关系运算符: > , < , >= , <= , == , != , instanceof ;

  • 逻辑运算符: && , || , ! ;

  • 位运算符: & , | , ^ , ~ , >> , << , >>> ( 了解! ! ! ) ;

  • 条件运算符(三目运算符或三元运算符): 条件? 语句一 : 语句二(条件为true执行语句一,反之执行语句二)

  • 扩展赋值运算符: += , -= , *= , /= ;

    package Operator;
    
    public class Demo01 {
        public static void main(String[] args) {
            //二元运算符
            int a = 10;
            int b = 20;
            int c = 30;
            int d = 40;
    
            System.out.println(a+b);//30
            System.out.println(a-b);//-10
            System.out.println(a*b);//200
            System.out.println(a/b);//0
            //注:在Java中a/b表示整除,所以在结果可能会产生小数的时候一定要转换为
            //double类型
    
            //以下两种方式都可以实现:
            System.out.println(1.0*a/b);//0.5
            System.out.println((double)a/b);//0.5
        }
    }
    
    
    package Operator;
    
    public class Demo02 {
        public static void main(String[] args) {
            long a = 12312313213213213L;
            int b = 123;
            short c = 10;
            byte d = 8;
            System.out.println(a+b+c+d);//12312313213213354,long
            System.out.println(b+c+d);//141,int
            System.out.println(c+d);//18,int
        }
    }
    
    
    package Operator;
    
    public class Demo03 {
        public static void main(String[] args) {
            //关系运算符返回的结果: true或者false
            int a = 10;
            int b = 20;
    
            System.out.println(a > b);//false
            System.out.println(a < b);//true
            System.out.println(a == b);//false
            System.out.println(a != b);//true
    
            int c = 21;
    
            System.out.println(c % a);//1
            //c%a表示:c除以a的余数(模运算)
        }
    }
    
    
    package Operator;
    
    public class Demo04 {
        public static void main(String[] args) {
            //++(自增)  --(自减)  一元运算符
            int a = 3;
            int b = a++;//a++:先赋值给b,在进行++运算
            //a = a + 1;  注:int b = a++;相当于后面隐藏了一行 a = a + 1;
            System.out.println(b);//结果为:3
            System.out.println(a);//结果为:4
            System.out.println("=============");
            //a = a + 1;
            int c = ++a;//++a先进行++运算再赋值
            //注:int c = ++a;相当于在前面一行隐藏了一行 a = a + 1;
            System.out.println(c);//结果为:5
            System.out.println(a);//结果为:5
            System.out.println("=============");
    
        }
    }
    
    

    result:
    以上代码的结果

package Operator;

public class Demo05 {
    public static void main(String[] args) {
        //幂运算:2^3  2*2*2
        double result1 = Math.pow(2,3);
        double result2 = Math.pow(3,2);
        System.out.println(result1);//8.0
        System.out.println(result2);//9.0

        //在Java中很多特殊的运算会用到常用工具类:Math

    }
}
package Operator;

//逻辑运算符
public class Demo06 {
    public static void main(String[] args) {
        //与(and):&&(短路与),&(非短路与):两个都为真结果才为真
        // 或(or):||(短路或),|(非短路或):其中一个为真结果就为真
        // 非(取反):!true = false, !false = true

        /*
        注:短路的意思就是:
        以&&(短路与为例):a&&b->当a为false时结果一定为false,此时程序不会
        继续向下执行
         */
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:"+(a&&b));//false
        System.out.println("a || b:"+(a||b));//true
        System.out.println("!(a && b):"+!(a&&b));//true

        //短路运算
        int c = 5;
        boolean d = (c < 4)||(c++ < 4);
        /*
        注意:c++ < 4相当于:
        c < 4;
        c = c + 1;
        这样两行代码
         */
        System.out.println(d);//false
        System.out.println(c);//5
        
    }
}

package Operator;

//位运算
public class Demo07 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ==================================================
        A&B = 0000 1100;//运算规则:1&1 = 1,1&0 = 0,0&0 = 0;
        A|B = 0011 1101;//运算规则:1|0 = 1,1&1 = 1,0|0 = 0;
        A^B(异或) = 0011 0001;//运算规则:相同为0.不相同为1
        ~B(按位取反) = 1111 0010//1->0 0->1

         面试题:2*8怎么运算最快?
         2*8 = 2*2*2*2;
         << 左移  左边的数字删除,末尾补充若干个0
         >> 右移  右边的数字删除,开头部分补充若干个0
         位运算是与底层打交道,运算效率极高
         0000 0000  -> 0
         0000 0001  -> 1
         0000 0010  -> 2
         0000 0011  -> 3
         0000 0100  -> 4
         0000 1000  -> 8
         0001 0000  -> 16
         */
        System.out.println(2<<3);
        
    }
}

package Operator;

//三元运算符
public class Demo09 {
    public static void main(String[] args) {
        //x? y:z
        //如果x为true,则结果为y否则结果为z

        int score = 80;
        String str = score < 60? "不及格":"及格";//必须掌握
        System.out.println(str);//及格
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_46654717/article/details/108495057