javaSE-chapter5运算符

1.算数运算符(+,-,*,/)

注:1.1 两个char字符相加,得到的是对应的ASCII码表中的数值相加

       1.2 两个字符串相加,即拼接


2. 自增自减运算符(++, --)

  2.1 都只能操作变量,不能操作常量

  2.2 前置自增(减)和后置自增(减)

    2.2.1 前置自增(++a):先自增,再作运算

    2.2.2 后置自增(a++): 先作运算,再自增

    2.2.3 前置自减(--a):先自减,再作运算

扫描二维码关注公众号,回复: 1447040 查看本文章

    2.2.4 后置自减(a--): 先作运算,再自减

        @Test
	public void test() {
		int i = 0;
		while (i++ < 3) {//先运算,再自增
			System.out.println(i);
		}
		
		System.out.println("=======分隔符========");
		
		int j = 0;
		while (++j < 3) {//先自增,再运算
			System.out.println(j);
		}
	}

运算结果:

1
2
3
=======分隔符========
1
2

对于while(i++ < 3),先进行比较运算,i<3,i的初始值为0,0<3, 为true, 再对i进行自增,i = i +1, i = 1;

对于while(++j < 3),先对j进行自增,j = j + 1, j = 1, 再进行比较运算,1<3, 为true


3. 赋值运算符

  3.1 =  +=  -=  *=  /=

  3.2 自带隐式类型转换


4. 比较运算符

  4.1 ==   !=    >   >=   <   <=

  4.2 运算结果只能是true  和 false 


5. 三元运算符(三目运算符)

  5.1 格式:

    数据类型  变量 = 布尔表达式? 值1: 值2;


6. 逻辑运算符

  6.1 &  |  ^  !  &&  ||

  6.2 作用:用于操作两个boolean类型的变量或常量,或结果为boolean类型的表达式, 结果类型也是boolean。

  6.3 &与&&

    6.3.1 相同点:运算符左右两边的结果均为true,结果为true,否则为false

    6.3.1 不同点:&&为短路与,即当第一个结果为false时,右边的表达式将不再做处理,直接返回false。&会对两边都进行运算比较。

    所以在做逻辑运算时,一般用&&,效率更高,&一般用于计算位运算

  6.4 |与||

    6.4.1 相同点:运算符左右两边的结果有一个是true时,结果就位true,两边均为false才为false

    6.4.2 不同点: ||为短路或,即当第一个结果为true时,右边的表达式将不再做处理,直接返回true。|会对两边都进行运算比较。

    所以在做逻辑运算时,一般用||,效率较高

  6.5 ^

    6.5.1 ^为异或,即两边结果相同时为false,两边处理结果不相同时,为true。即两边处理结果都为true,或都为false,则结果为false,否则为true

  6.6 !

    6.6.1 取反


7. 位运算符(对二进制数进行计算)

  7.1 & |  ^  ~

    7.1.1 & 两个均为1,结果为1,否则为0

    7.1.2 | 两个有一个为1,结果为1,两边均为0,结果为0  

    7.1.3 ^ 两边数同为0或1时,结果为0,两边数不相同时,结果为1

    7.1.4 ~ 取反

  7.2 <<     >>    >>>

    7.2.1 << 左移

    7.2.2 >> 右移

      7.2.2.1 做二进制运算时操作的全是二进制的补码,正数的原码,反码,补码均相同,负数的不同

      7.2.2.2 对于右移>>操作,正数用0填充,负数用1填充

计算: -16 >> 3 (32位)

-16: 原码: 10000000_00000000_00000000_00010000
	  反码: 11111111_11111111_11111111_11101111
	  补码: 11111111_11111111_11111111_11110000
-16>>3	  右移3位: (因为是负数,所以以1补位)
	  补码: 11111111_11111111_11111111_11111110
	  反码: 11111111_11111111_11111111_11111101
	  原码: 10000000_00000000_00000000_00000010
结果为:-2

      7.2.3 >>> 无符号右移

        7.2.3.1 做二进制运算时操作的全是二进制的补码,正数的原码,反码,补码均相同,负数的不同

        7.2.3.2 对于无符号右移>>>操作,无论正数和负数,都用0补位

计算: -16 >>> 3 (32位)

-16: 原码: 10000000_00000000_00000000_00010000
	  反码: 11111111_11111111_11111111_11101111
	  补码: 11111111_11111111_11111111_11110000
-16>>>3	  无符号右移3位: (以0补位)
	  补码: 00011111_11111111_11111111_11111110(为正数)
	  反码: 00011111_11111111_11111111_11111110
	  原码: 00011111_11111111_11111111_11111110
结果为: 536870910

    7.2.4 利用异或(^)运算修改两个变量的值

a^=b;
b^=a;
a^=b;

猜你喜欢

转载自blog.csdn.net/tca0819/article/details/80369315
今日推荐