• java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)


    基本运算符与位运算符

    算术运算符:两个操作数进行计算

    +  加

    -   减

    *  乘

    /  除(取整)

    %  取余

    例子:

    class ArrayTest{
    	public static void main(String[] args){	
    		int num1 = 12;
    		int num2 = 5;
    		int num3 = num1 / num2;
    		double num4 = num1 / num2 + 0.0;
    		double num5 = (num1 + 0.0) / (num2 + 0.0);
    		double num6 = num1 / (num2 + 0.0);
    		System.out.println("num3="+num3);//2
    		System.out.println("num4="+num4);//2.0
    		System.out.println("num5="+num5);//2.4
    		System.out.println("num6="+num6);//2.4
    		
    		//%取余运算
    		int m1 = 12;
    		int n1 =  5;
    		System.out.println("m1%n1="+m1%n1);//2
    		int m2 = -12;
    		int n2 =  5;
    		System.out.println("m2%n2="+m2%n2);//-2
    		int m3 = 12;
    		int n3 = -5;
    		System.out.println("m3%n3="+m3%n3);//2
    		int m4 = -12;
    		int n4 = -5;
    		System.out.println("m4%n4="+m4%n4);//-2	
    	}
    }

    编译运行:

    自增与自减

    ++  自增

    --  自减

    例子:

    class ArrayTest{
    	public static void main(String[] args){	
    		//前++
    		int a1 = 10;
    		int b1 = ++a1;//a1自加1后赋值给b1
    		System.out.println("a1="+a1+" "+"b1="+b1);
    		//后++
    		int a2 = 10;
    		int b2 = a2++;//a2赋值给b2后再自加1
    		System.out.println("a2="+a2+" "+"b2="+b2);
    		//前--
    		int a3 = 10;
    		int b3 = --a3;//a3自减1后赋值给b3
    		System.out.println("a3="+a3+" "+"b3="+b3);
    		//后--
    		int a4 = 10;
    		int b4 = a4--;//a4赋值给b4后再自减1
    		System.out.println("a4="+a4+" "+"b4="+b4);
    	}
    }

    编译运行:

       a++比++a在运行速度上快一点,a--比--a在行速度上快一点。

    赋值运算符:

    =

    扩展的赋值运算符:+=  *=   -=  /=   %=

    例子:

    class ArrayTest1{
    	public static void main(String[] args){	
    		//=
    		int i1 = 10;
    		int j1 = 10;
    		
    		//连续赋值
    		int i2,j2;
    		i2 = j2 = 10;
    		
    		int i3 = 10,j3 = 10;
    		
    		//*****************
    		int num1 = 10;
    		num1 +=2;//num1 = num1 + 2;
    		System.out.println(num1);
    		
    		int num2 = 12;
    		num2 %= 5;//num2 = num2 % 5;
    		System.out.println(num2);
    		
    		short s1 = 10;
    		//s1 = s1 + 2;编译失败   左边short   右边至少得用int接收
    		s1 += 2;//不会改变变量本身的数值类型
    		System.out.println(s1);
    		
    		//开发中,如果希望变量实现+2的操作,有几种方法?(int num = 10)
    		//1.num = num + 2
    		//2.num +=2(推荐)
    	}
    }
    

      编译运行:

    关系运算符(会形成布尔表达式)--比较运算符

    >

    <

    >=

    <=

    ==  a=b赋值  a==b表判断

    !=

    逻辑运算符

    短路逻辑运算符:

    当使用与逻辑运算符(短路与)时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

    当使用与逻辑运算符(短路或)时,在两个操作数只要有一个为true时,结果就为true,但是当得到第一个操作为true时,其结果就必定是true,这时候就不会再判断第二个操作了。

    && 短路与 ,与(并且), 都为真才为真  

    || 短路或,或(或者),只要有一个为真就为真

    ! 逻辑非(取反),  真变假,假变真

    三元运算符(可以嵌套使用)

    ? : 布尔表达式?结果1:结果2    布尔表达式为真(true),获得结果1,否则为结果2

    凡是有三元运算符的地方,都可以改写成if-else

    位运算符:

    &(非短路)   逻辑与,a&b按二进制求与

    |(非短路)  逻辑或,a|b按二进制求或

    ^  逻辑异或,a^b异或 相同时为0,不同时为1    任何一个数与0异或,还是原来的那个数

     ~ 按位置求反   按二进制求反 1变0,0变1

    a=27   16+8+2+1    00011011

    ~a=-27       11100101     符号位甩出去, 0011011   -27

    移位运算符

    a=26

    a=a>>1右移运算符

    整体往右移1位  00011010  右移后     0(符号位还是原来的)0001101 

    a=13

    结论:右移一位值为原来的一半,所以左移<<一位,值为原来的2倍。

    a=20

    a>>>1    a=10

    a>>1  a=10

    a=-20

    a>>>1    a=2147483638(符号位丢了,0补了上去)

    a>>1  a=-10

    运算符的优先级(在表中最上边的优先级最高,从上往下依次递减)

    后缀 () [] . (点操作符) 左到右
    一元 expr++ expr-- 从左到右
    一元 ++expr --expr + - ~ ! 从右到左
    乘性  * /% 左到右
    加性  + - 左到右
    移位  >> >>>  <<  左到右
    关系  > >= < <=  左到右
    相等  ==  != 左到右
    按位与 左到右
    按位异或 ^ 左到右
    按位或 | 左到右
    逻辑与 && 左到右
    逻辑或 | | 左到右
    条件 ?: 从右到左
    赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左
    逗号 左到右
  • 相关阅读:
    Canvas与Paint的0基础使用
    PHP经常使用功能
    java枚举在android项目应用
    POJ1833 &amp; POJ3187 &amp; POJ3785 next_permutation应用
    usb芯片调试经验
    Equals和==比較
    JSTL标准标签库具体解释
    零基础学python-3.3 标识符
    用react native 做的一个推酷client
    Linux异常关机后,Mysql启动出错ERROR 2002 (HY000)
  • 原文地址:https://www.cnblogs.com/SpringChuXin/p/13391126.html
Copyright © 2020-2023  润新知