java6——运算符

之前说过了算数运算符和关系运算符,今天这里说一说其他的常用运算符:
-赋值运算符
-逻辑运算符
-三目运算符
-位运算符(常规应用开发中使用较少)

赋值运算符

运算符 名称 作用 例子
= 赋值 将等式右边的值赋给左边的变量 a=5
+= 加等于 等式左边+右边的结果赋给左边的变量 a+=3相当于a=a+3
-=、*=、/=、%= 规律同上 作用同上 例子模式同上

赋值运算符的作用就是给变量赋值,示例代码如下:

public class TestFuZhi {

    public static void main(String[] args) {
        int a=5;
        System.out.println(a);//5
        a+=1;
        System.out.println(a);//6
        a=5;
        a-=1;
        System.out.println(a);//4
        a=5;
        a*=2;
        System.out.println(a);//10
        a=5;
        a/=2;
        System.out.println(a);//2(由于是两个int进行除法运算,其结果也是int,所以会损失精度)
        a=5;
        a%=3;
        System.out.println(a);//2

    }

}

逻辑运算符

运算符 名称 作用 例子
& 进行与运算 a & b(如果a和b都是true就返回true,否则返回false)
| 进行或运算 a | b(如果a和b中有一个为true就返回true,否则为false)
取反 !a(如果a为true,!a则为false)
^ 异或 a^b(如果a和b只有一个为true时,结果为true,否则为false)
&& 短路与 进行与运算 a && b && c(如果a为false,则结果直接为false,不继续运算)
|| 短路或 或运算 a || b || c(如果a为true则结果直接为true,不会继续运算下去)

逻辑运算符用来连接两个boolean类型的值,其结果也是一个boolean。测试代码如下:

public class TestLuoJi {

    public static void main(String[] args) {
        boolean a=true;
        boolean b=true;
        boolean c=false;
        boolean d=false;

        System.out.println(a&c);//false
        System.out.println(a&b);//true
        System.out.println(d&c);//false
        System.out.println(a|c);//true
        System.out.println(a|b);//true
        System.out.println(c|d);//false
        System.out.println(!a);//false
        System.out.println(!c);//true
        System.out.println(a^c);//true
        System.out.println(a^b);//false
        System.out.println(c^d);//false
    }

}

三目运算符

运算符 名称 作用 例子
a?b:c 三目运算符 如果a为true则b,否则c 3>2?5:6结果为5

三目运算符是一种简洁的判断用法,对于结果只有两种选择,且只输出一次时,通常选择三目运算符。

public class TestSanMu {

    public static void main(String[] args) {
        System.out.println(3>2?5:6);//5
        System.out.println(3>4?5:6);//6
    }

}

位运算符(应用并不是很多,不明白也无妨)

运算符 名称 作用 例子
& 与运算 4&5,结果是4
| 或运算 4|5,结果是5
~ 取反 ~4,结果是-5
^ 异或 异或运算 4^5,结果是1
<< 左移 左移运算 6<<2,结果是24
>> 右移 右移运算 6>>2,结果是1
>>> 无符号右移 无符号右移运算 6>>>2,结果为1

位运算符的运算过程都和操作数的二进制有关,也就是说,首先要将操作数转换成二进制数,然后再按照规则进行运算。其规则如下:
&:相同位都是1则为1,否则为0。 例如 4&5,4的二进制为1000,5是1001。
1000
1001
————————
1000 ——>第一位都是1则为1,第二位全是0位,第三位也是0,第四位只有一个1,也为0。所以其结果为1000,转换为十进制就是4。

| :相同位都是0则为0,否则为1。 运算方式同上,大家可自己行计算。

~:同位取反,如果是1则为0,是0则为1。 例如: ~4
0000 1000
——————
1111 0111 ——>取反后得到一个这样的二进制数,那么这个数是多少呢?
在数值表示中,第一位是符号位,0代表是正数,1代表负数。通过这个规则可以看出这是一个负数,负数取值的规则为:先将这个数的值(直接转换成十进制)-1,也就得到了11110110,再取反为0000 1001,十进制为5,加负号为-5
这里的表述如果看不懂,可以取百度一下,负数的表示方式。

^:两个操作数的位中,相同则结果为0,不同则结果为1。

>>: 将操作数的二进制数向右移动N位,如果操作数是正数,则在左侧补N个0;如果操作数是负数则补N个1

<<:规则同右移,

>>>:这里移动的规则和右移相同,只是补位时不考虑正负,都补0

你可能感兴趣的:(java)