@
Java语言中的运算符可分为如下几种。
Java支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加、减、乘、除和求 余等。下面是7个基本的算术运算符。
+:加法运算符。
-: 减法运算符。
*: 乘法运算符
/: 除法运算符。
除法运算符有些特殊,如果除法运算符的两个操作数都是整数类型,则计算结果 也是整数,就是将自然除法的结果截断取整,例如19/4的结果是4,而不是5。如果除法运算符的两个操作数都是整数类型,则除数不可以是0,否则将引发除以零异常。
但如果除法运算符的两个操作数有一个是浮点数,或者两个都是浮点数,则计算结果也是浮点数, 这个结果就是自然除法的结果。而且此时允许除数是0,或者0.0,得到结果是正无穷大或负无穷大。
%: 求余运算符。
求余运算的结果不一定总是整数,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数。由于求余运算也需要进行除法运算,因此如果求余 运算的两个操作数都是整数类型,则求余运算的第二个操作数不能是0,否则将引发除以零异常。如果 求余运算的两个操作数中有一个或者两个都是浮点数,则允许第二个操作数是0或。.0,只是求余运算 的结果是非数:NaN= 0或0.0对零以外的任何数求余都将得到。
++:自加。
该运算符有两个要点:①自加是单目运算符,只能操作一个操作数;②自加运算符只能操作单个数值型(整型、浮点型都行)的变量,不能操作常量或表达式。运算符既可以出现在操作 数的左边,也可以出现在操作数的右边。但出现在左边和右边的效果是不一样的。如果把++放在左边, 则先把操作数加1,然后才把操作数放入表达式中运算;如果把++放在右边,则先把操作数放入表达式 中运算,然后才把操作数加1。
int a = 5;
//让a先执行算术运算,然后自加 ,b的值是11
int b = a++ + 6;
int a = 5;
//让a先自加,然后执行算术运算,b的值是12
int b = ++a + 6;
赋值运算符用于为变量指定变量值,与C类似,Java也使用 =作为赋值运算符。通常,使用赋值运 算符将一个直接量值赋给变量。
int a=5;
也可使用赋值运算符将一个变量的值赋给另一个变量。
int a=5;
int b=a;
Java支持的位运算符有如下7个。
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 | (A |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
? | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (?A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
比较运算符用于判断两个变量或常量的大小,比较运算的结果是一个布尔值(true或false),Java 支持的比较运算符如下:
int a = 5;//定义一个变量;
boolean b = (a>4)||(a++<10);
//使用短路逻辑运算符的结果为5
System.out.println(a);
boolean c = (a>4)&(a++<10);
System.out.println("a的结果为"+a);
boolean c = (a>4)&(a++<10);
//使用不短路逻辑运算符的结果为6
System.out.println("a的结果为"+a);
&与&&的区别与此类似:&总会计算前后两个操作数,而&&先计算左边的操作数,如果左边的操作数为false,则直接返回false,根本不会计算右边的操作数。
int a = 5;//定义一个变量;
boolean b = (a<4)&&(a++<10);
//使用短路逻辑运算符的结果为5
System.out.println(b);
//使用不短路逻辑运算符的结果为6
boolean c = (a<4)&(a++<10);
System.out.println("a的结果为"+a);
赋值运算符可与算术运算符、位移运算符结合,扩展成功能更加强大的运算符。扩展后的赋值运算
三目运算符只有一个?:,三目运算符的语法格式如下:
variable x = (expression) ? value if true : value if false
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( "Value of b is : " + b );
具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !? | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
参考:
【1】:《疯狂Java讲义》
【2】:《Java核心技术 第一卷》
【3】:https://www.runoob.com/java/java-operators.html
原文:https://www.cnblogs.com/three-fighter/p/13052474.html