Java的运算符

Java语言中的运算符

Java语言中的运算符包括:
赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符以及条件运算,接下来一类一类的看

1、赋值运算符

 =
        int a = 10;//给一个变量赋值

2、算术运算符

 基本四则运算符:+  -  *  /  %
 + - * / 很简单,在写代码的时候要注意类型转换和数值提升问题,在进行 / 运算的时候,0不能作为除数
        int a = 1;
        int b = 0;
        System.out.println(a/b);//会报异常,ArithmeticException

% 取余运算,就是求一个数除以另一个数的余数,可以对整型和浮点型进行计算

        int c = 3;
        int d = 2;
        float e = 11.5f;
        float f = 2f;
        System.out.println(c % d);//输出1
        System.out.println(e % f);//输出1.5
      

负数求余还是负数
增量赋值运算符:+= -= *= /= %=

        int a = 1;
        a += 1;//相当于 a = a + 1;
        System.out.println(a);//结果为2
        int b = 2;
        b -= 1;//相当于 b = b-1;
        System.out.println(b);//结果为1

其他的也以此类推

自增、自减运算符:++ –

        int a = 1;
        a++;//相当于a = a + 1;
        System.out.println(a);//结果为2
        int b = ++a;//相当于 b = a + 1;
        System.out.println(b);//结果为3

3、关系运算符

==  !=   <  >    <=    >= 
关系运算符的表达式返回值都是 boolean 类型的数据
        int a = 10;
        int b = 20;
        System.out.println(a == b);//输出false
        System.out.println(a != b);//输出true
        System.out.println(a < b );//输出true 
        System.out.println(a > b);//输出false
        System.out.println(a <= b);//输出 true
        System.out.println(a >= b);//输出 false

4、逻辑与算符

&&    ||     !
逻辑运算符的操作数和返回值都是boolean类型(操作数一般是关系运算符的结果)
&&(与):两个表达式结果都为 true ,结果才是 true, 否则结果为 false
        int a = 10;
        int b = 20;
        int c = 30;
        //a<b 结果为 true, b<c 结果也为 true, 所以输出结果为 true
        System.out.println(a<b && b<c);
        //a<b 结果为 true, b>c 结果为false, 所以输出结果为 false
        System.out.println(a<b && b>c);
        //a>b 结果为 false, b>c 结果为false, 所以输出结果为 false
        System.out.println(a>b && b>c);
||(或):两个操作数都是 false 结果才为 false ,否则结果为 true
        int a = 10;
        int b = 20;
        int c = 30;
        //a<b 结果为 true, b<c 结果也为 true, 所以输出结果为 true
        System.out.println(a<b || b<c);
        //a<b 结果为 true, b>c 结果为false, 所以输出结果为 true
        System.out.println(a<b || b>c);
        //a>b 结果为 false, b>c 结果为false, 所以输出结果为 false
        System.out.println(a>b || b>c);

!(非):操作数为 false ,输出结果为 true,操作数为 true ,输出结果为 false

        int a = 10;
        int b = 20;
        int c = 30;
        //a<b 结果为 true,所以输出结果为 false
        System.out.println(!(a<b));

&& 和 || 遵守短路求值的规则
举个例子:

        System.out.println(10>20 && 10/0 == 0);//输出false,且没有抛异常

我们知道 0 做除数,系统会抛出ArithmeticException,但是打印时系统并没有抛出异常,这说明 10/0 根本没有执行呀,所以系统判定10>20 为false之后整体的结果一定为false,就没有执行右侧的表达式。

所以在通过左侧表达式的结果就能判定整体结果时,就不会执行右侧表达式,这就是短路求值
& 和 | 这俩运算符在操作数值为 boolean 类型时,也是逻辑运算符,但是不遵守短路求值

        System.out.println(10>20 & 10/0 == 0);//抛异常

5、位运算符

& | ~ ^
位操作表示按二进制位计算
&(按位与):如果两个二进制位都是1,结果为1,否则结果为0(见0为0)

        int a = 10;
        int b = 20;
        //先把10和20 转成 01010  和 10100,再进行计算
        //见0为0,所以输出结果为0
        System.out.println(a & b);

|(按位或):如果两个二进制位都为0,结果为0,否则结果为1(见1为1)

        int a = 10;
        int b = 20;
        //先把10和20转成01010和10100,见1为1,结果为11110
        //输出结果为30
        System.out.println(a | b);

~(按位取反):如果该二进制位为0,结果为1,如果该二进制位为1,结果为0

        int a = 10;
        //先把10转化为01010,再取反 10101,结果为-11
        System.out.println( ~a);

^(按位异或):如果两个数字的二进制位相同,结果为0, 否则结果为1(相同为0,相异为1)
a^0 = a
a ^ b ^ b=a

        int a = 10;
        int b = 20;
        //先把10 20转化为 01010 和 10100,进行异或运算
        //相同为0 ,相异为1,结果为11110,输出结果为30
        System.out.println(a ^ b);
        //不使用临时变量交换两个数
//        a = a + b;
//        b = a - b;
//        a = a - b;
//        System.out.println("a = " + a);
//        System.out.println("b = " + b);
        //方法2(可读性很差)
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("a = " + a);
        System.out.println("b = " + b);

6、移位运算符

左移运算符: <<,最左侧的位去掉,最右侧补0
左移一位相当于 * 2
右移运算符: >>,最右侧的位不要,最左侧补符号位
右移一位相当于 / 2

        int a = 10;
        int b = 20;
        System.out.println(a << 1);//输出20
        System.out.println(a << 2);//输出40
        System.out.println(a >> 1);//输出5

逻辑右移:>>>,最右侧的位去掉,最左侧补0

7、条件运算符

? :
cond ? exp1 : exp2
如果cond为true,表达式的返回结果为exp1的值;
如果cond为false,表达式返回结果为exp2的值
? :的运算优先级较低

        int a = 10;
        int b = 20;
        //先算 a + 20
        int ret = a > b ? b : a + 20;
        System.out.println(ret);//输出30
        //先算 () 里面的
        int ret1 = (a > b ? a : b) + 20;
        System.out.println(ret1);//输出40
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值