java运算符例子_Java运算符

运算符分类:

算数运算符

关系运算符

位运算符

逻辑运算符

赋值运算符

其他运算符

算数运算符

操作符描述例子

+加法1+1=2

-减法3-2=1

*乘法2*3=6

/整除,当两边为整数时,取整3/2=1

3.0/2=1.5

%取余7%5=2

++自增,符号在前,先自增再输出,符号在后,先输出再自增a=3

System.out.println(a++); // 3

System.out.println(++a); // 5

--自减,符号在前,先自减再输出,符号在后,先输出再自减a=3

System.out.println(a--); // 3

System.out.println(--a); // 1

关系运算符

操作符描述例子

==检查如果两个操作数的值是否相等,如果相等则条件为真。1==1 true

!=检查如果两个操作数的值是否相等,如果值不相等则条件为真。1!=1 false

>检查左操作数的值是否大于右操作数的值,如果是那么条件为真。3>2 true

>=检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。3>=2 true

<=检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。3<=3 true

位运算符

在计算机中,有符号的数据的表示法通常分为 原码、反码和补码三种形式,所有的数据运算都是采用补码的是形式进行。

操作符描述

&如果相对应位都是1,则结果为1,否则为0

|如果相对应位都是 0,则结果为 0,否则为 1

^如果相对应位值相同,则结果为0,否则为1

~按位取反运算符翻转操作数的每一位,即0变成1,1变成0。

<

>>按位右移运算符。左操作数按位右移右操作数指定的位数。

>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

实例:

public class Test {

public static void main(String[] args) {

System.out.println(1&2);// 1:0001 / 2:0010 / 0000 1&2=0

System.out.println(1|2);// 0011 1|2=3

System.out.println(20 << 6);

// 补码:0001 0100 / 移位:00 0101 0000 0000 / 20<<6=1280

System.out.println(-20 >> 6);

// 原码:1001 0100 / 反码:1110 1011 / 补码:1110 1100 / 移位:1111 1111 / 反码:1111 1110 / 原码:1000 0001 / -20>>6=-1

System.out.println(20 >> 3);

// 补码:0001 0100 / 移位:0000 0010 / 20>>3=2

System.out.println(-20 << 3);

// 补码:1110 1100 / 移位:111 0110 0000 / 反码:111 0101 1111 / 原码:100 1010 0000 / -20<<3=-160

System.out.println(-20 >>> 3);

// 32位的补码:1111 1111 1111 1111 1111 1111 1110 1100 / 移位:0001 1111 1111 1111 1111 1111 1111 1101 / -20>>>3=536870909

}

}

注意:

右移位运算符>> 若操作值为正,则在高位插入0,若为负,则在高位插1。

右移补零运算符>>>无论操作值正负,均在高位插入0。

右移补零运算符>>>和右移位运算符>>若操作值为正,则结果相同。

无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位  无符号右移运算符>>> 只是对32位和64位的值有意义。

逻辑运算符

A为true,B为false

操作符描述例子

&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。A && B false

||称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。A || B true

!称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!A false

赋值运算符

操作符描述例子

=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C

+=加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A

-=减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A

*=乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A

/=除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A

(%)=取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数C%= A等价于C = C%A

<<=左移位赋值运算符C << = 2等价于C = C << 2

>>=右移位赋值运算符C >> = 2等价于C = C >> 2

&=按位与赋值运算符C&= 2等价于C = C&2

^=按位异或赋值操作符C ^ = 2等价于C = C ^ 2

|=按位或赋值操作符C | = 2等价于C = C | 2

条件运算符( ? : )

条件运算符也被称为三元运算符,该运算符有3个操作数,并且需要判断布尔表达式的值,该运算符的主要是决定哪个值应该赋值给变量。

int a = 3>2 ? 1:0;

判断条件是否成立,若成立将返回第一个值,反之返回第二个值。

instanceof运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或者接口类型)。

String name = "zs";

boolean result = name instanceof String; // true

Java运算符优先级

下表中具有最高优先级的运算符在表的最上面,最低优先级在表的底部。

类别操作符关联性

后缀() 、 [] 、 . (点操作符)从左到右

一元expr++ 、 expr--从左到右

一元++expr 、 --expr 、 ~ 、 !从右到左

乘性* 、 / 、 %从左到右

加性+ 、 -从左到右

移位>> 、 >>> 、 <

关系> 、 >= 、 < 、 <=从左到右

相等== 、 !=从左到右

按位与&从左到右

按位异或^从左到右

按位或|从左到右

逻辑与&&从左到右

逻辑或||从左到右

条件? :从右到左

赋值= 、 += 、 -= 、 *= 、 /= 、 %= 、 >>= 、 <<= 、 &= 、 |= 、 ^=从右到左

逗号,从左到右

Java运算符括号和自增优先级问题:遇到括号时,默认从左到右计算,遇到括号立即执行括号里的内容。

例题:

1.

byte n = 5;

System.out.println(n++ + n++ * n++); // 5 + 6 * 7 / 47

2.

byte n1 = 5, n2 = 6;

System.out.println(n1-- + n1 << 2 + n1++ * --n2 >>2); // 5 + 4 << 2 + 4 * 5 >> 2 / 9 << 22 >> 2 / 9 << 20 / 9 * 2的20次方 / 9437184

3.

byte b1 = 8, b2 = 3;

int num = b1-- - b2++ * (++b1 * b1 << 2);// 8 - 3 * (8 * 8 << 2) / 8 - 3 * (64 << 2) / 8 - 3 * 256 / -760

System.out.println(num);

4.

byte b1 = 7;

byte b2 = 9;

byte b3 = 10;

byte b4 = 12;

System.out.println(b1 | b2 ^ b3 & b4);

// 7 | 9 ^ 10 & 12

// 10 & 12 : 1010 & 1100 / 1000

// 1000 ^ 9 : 1000 ^ 1001 / 0001

// 0001 | 7 : 0001 | 0111 / 0111

//7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值