Java运算符详解及其优先级

1.Java运算符详解

1.1赋值运算符(=)

①对基本类型赋值

a=b;

当b改变时,a不改变

②对对象类型赋值

a=b;

当b改变时,a也跟着改变

1.2算数运算法

①加号运算符(+)

②减号运算符(-)

③乘号运算符(*)

④除号运算符(/)

⑤求模运算符(%):从整数除法中获得余数

⑥一元加号运算符(+):a=+b

⑦一元减号运算符(-):a=-b

1.3自增和自减运算符

它们是唯一具有“副作用”的运算符(除那些涉及赋值的以外)。也就是说,它们会改变运算对象,

而不仅仅是使用自己的值。

①前缀自增运算符(++):++a

②前缀自减运算符(--):--a

③后缀自增运算符(++):a++

④后缀自减运算符(--):a--

1.4关系运算符

关系运算符生成的是一个“布尔”(Boolean)结果。它们评价的是运算对象值之间的关系。

若关系是真实的,关系表达式会生成true(真);若关系不真实,则生成false(假)。

①小于(<)

②大于(>)

③等于(==)

可以比较基本类型的内容是否相同,但不可以比较对象的内容是否相同。

要比较对象内容是否相对,要使用所有对象都适用的特殊方法equals()。

④小于或等于(<=)

⑤大于或等于(>=)

⑥不等于(!=)

1.5逻辑运算符

能生成一个布尔值(true 或false)。

操作逻辑运算符时,我们会遇到一种名为“短路”的情况。

举例:(a)||(b&&c),当a为true时,该表达式为true,而不必计算(b&&c)的值

①与(&&)

②或(||)

③非(!)

1.6按位运算符

按位运算符允许我们操作一个整数主数据类型中的单个“比特”,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。

按位运算符可与等号(=)联合使用,以便合并运算及赋值:&=,|=和^=都是合法的(由于~是一元运算符,所以不可与=联合使用)。

我们将boolean(布尔)类型当作一种“单位”或“单比特”值对待,所以它多少有些独特的地方。我们可执行按位与,或和异或,但不能执行按位非(为了避免与逻辑非混淆)

①按位与运算符(&)

②按位或运算符(|)

③按位异或运算符(^)

④按位非运算符(~)

1.7移位运算符

左移可以看成乘以2,右移可以看成除以2。

①左移位运算符(<<)

能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。

②“有符号”右移位运算符(>>)

则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。

③“无符号”右移位运算符(>>>)

它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C 或C++没有的。

1.8三元if-else运算符

这种运算符比较罕见,因为它有三个运算对象。但它确实属于运算符的一种,因为它最终也会生成一个值。

这与本章后一节要讲述的普通if-else 语句是不同的。表达式采取下述形式:

布尔表达式 ? 值0:值1

若“布尔表达式”的结果为true,就计算“值0”,而且它的结果成为最终由运算符产生的值。但若“布尔

表达式”的结果为false,计算的就是“值1”,而且它的结果成为最终由运算符产生的值。

1.9逗号运算符(,)

需要用到逗号的唯一场所就是for 循环。

举例:(for i=1;i<10;i++,j=i+5)

1.10字串运算符(+)

这个运算符在Java 里有一项特殊用途:连接不同的字串

1.11造型运算符

“造型”(Cast)的作用是“与一个模型匹配”。

举例:long l = (long)i

Java 允许我们将任何主类型“造型”为其他任何一种主类型,但布尔值(bollean)要除外,后者根本不允许进行任何造型处理。

1.12instanceof运算法

确定某对象是否属于指定的类或指定类的子类

class Animal{}
class Bird extends Animal {}
Animal a= new Animal();
Animal b=new Bird();
System.out.println( b instanceof Animal);//输出true
System.out.println( a instanceof Animal);//输出true
System.out.println( a instanceof Bird);//输出true


2.Java运算符优先级

序列号(越小代表优先级越高) 符号 名称 结合性 操作目数 说明
1 . 成员运算符 从左到右 双目  
1 ( )   从左到右    
1 [ ] 索引运算符 从左到右    
2 + 正号 从右到左 单目  
2 - 负号 从右到左 单目  
2 ++ 自增 从右到左 单目 前缀自增,后缀自增
2 -- 自减 从右到左 单目 前缀自减,后缀自减
2 ~ 按位非(按位取反) 从右到左 单目  
2 ! 逻辑非 从右到左 单目  
3 * 从左到右 双目  
3 / 从左到右 双目  
3 % 求模 从左到右 双目  
4 + 从左到右 双目  
4 - 从左到右 双目  
5 << 左移位 从左到右 双目  
5 >> 带符号右移位 从左到右 双目  
5 >>> 无符号右移位 从左到右 双目  
6 < 小于 从左到右 双目  
6 <= 小于或等于 从左到右 双目  
6 > 大于 从左到右 双目  
6 >= 大于或等于 从左到右 双目  
6 instanceof 确定某对象是否属于指定的类 从左到右 双目  
7 == 等于 从左到右 双目  
7 != 不等于 从左到右 双目  
8 & 按位与 从左到右 双目  
9 | 按位或 从左到右 双目  
10 ^ 按位异或 从左到右 双目  
11 && 逻辑与 从左到右 双目  
12 || 逻辑或 从左到右 双目  
13 ? : if-else运算符 从左到右 三目 唯一的三目运算符
14 = 赋值运算符 从右到左 双目  
14 += 混合赋值运算符 从右到左 双目  
14 -+ 混合赋值运算符 从右到左 双目  
14 *= 混合赋值运算符 从右到左 双目  
14 /= 混合赋值运算符 从右到左 双目  
14 %= 混合赋值运算符 从右到左 双目  
14 &= 混合赋值运算符 从右到左 双目  
14 |= 混合赋值运算符 从右到左 双目  
14 ^= 混合赋值运算符 从右到左 双目  
14 <<= 混合赋值运算符 从右到左 双目  
14 >>= 混合赋值运算符 从右到左 双目  
14 >>>= 混合赋值运算符 从右到左 双目
相关文章
相关标签/搜索