Java运算符-Java快速入门教程
概述
运算符
用于执行程序代码运算符号,对一个或一个以上操作数项目来进行运算然后得到结果的一种操作。
所有运算符都能根据自己的运算对象生成一个值。除此以外,一些运算符可改变运算对象的值,这叫作“副作用”。运算符最常见的用途就是修改自己的运算对象,从而产生副作用。但要注意生成的值亦可由没有副作用的运算符生成。几乎所有运算符都只能操作基本类型(Primitives)。唯一的例外是=、== 和!=,它们能操作所有对象(这也是令人混淆的一个地方)。除此以外String 类比较特殊,它支持运算符+ 和+=进行连接操作。
优先级
运算符的优先级决定了存在多个运算符时一个表达式各部分的运算顺序。Java 对运算顺序作出了特别的规定(见表1)。其中,最简单的规则就是乘法和除法在加法和减法之前完成。程序员经常都会忘记其他优先级规则,所以应该用括号明确规定运算顺序
运算符的优先级(从高到低)-表1
优先级 |
描述 |
运算符 |
1 |
括号 |
()、[] |
2 |
正负号 |
+、- |
3 |
自增自减,非 |
++、--、! |
4 |
乘除,取余 |
*、/、% |
5 |
加减 |
+、- |
6 |
移位运算 |
<<、>>、>>> |
7 |
大小关系 |
>、>=、<、<= |
8 |
相等关系 |
==、!= |
9 |
按位与 |
& |
10 |
按位异或 |
^ |
11 |
按位或 |
| |
12 |
逻辑与 |
&& |
13 |
逻辑或 |
|| |
14 |
条件运算 |
?: |
15 |
赋值运算 |
=、+=、-=、*=、/=、%= |
16 |
位赋值运算 |
&=、|=、<<=、>>=、>>>= |
赋值
运算符的赋值是由符号= 完成的。它代表着获取= 右边的值并赋给左边的变量。右边可以是任何常量、变量或者可产生一个返回值的表达式。但左边必须是一个明确的、已命名的变量。也就是说,必须要有一个物理的空间来存放右边的值。举个例子来说,可将一个常数赋给一个变量(A = 4),但不可将任何东西赋给一个常数(比如不能4 =A)。基本类型的赋值都是直接的,而不像对象,赋予的只是其内存的引用。举个例子,a= b ,如果b 是基本类型,那么赋值操作会将b 的值复制一份给变量a,此后若a的值发生改变是不会影响到b 的。作为一名程序员,这应该成为我们的常识。如果是为对象赋值,那么结果就不一样了。对一个对象进行操作时,我们实际上操作的是它的引用。所以我们将右边的对象赋予给左边时,赋予的只是该对象的引用。此时,两者指向的堆中的对象还是同一个。