操作符分类:
1). 赋值,对于基本类型,因为存储的是实际的数值,并非指向一个对象的引用,所以其赋值,是将内容从一个地方复制到另一个地方。
而对对象赋值时,是将对对象的引用从一个地方复制到另一个地方。
当一个实际对象有多个引用时,就出现了“别名现象”。
2). 算术操作符。有+、-、/、*、%
3). 自动递增和递减。--i、++i、i--、i++
4). 关系操作符。关系操作符的结果是一个boolean值。有<、 >、 <=、 >=、== 和 !=。
等于和不等于适用于所有的基本数据类型,而其他比较符不适用于boolean类型。因为boolean没有大小之分
5). 逻辑操作符。与&&、 或||、 非!,它的操作数只能是boolean值,它生成的也是一个boolean值。
逻辑操作符存在“短路”现象。即一旦能够明确无误地确定整个表达式的值,就不再计算表达式的剩余部分。
6). 按位操作符。与&、 或|、 非~、 异或^。
按位操作符用来操作整数基本数据类型中的单个“比特”(bit),即二进制位。
与&, 1&1为1,其他情况为0
或|, 0|0为0,其他情况为1
非~, ~0为1,~1为0
异或^, 1^0为1,1^1为0,0^1为1,0^0为0
对于boolean型,按位操作符具有与逻辑运算符相同的效果,只是它们不会中途“短路”。
与&、 或|、 异或^可与=进行连接,即&=、 |=和^=都是合法的。
7). 移位操作符。操作对象也是整数类型的二进制的“位”。移位操作符只能处理整数类型。
左移位操作符<<,能按操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0)。
右移位操作符>>,按照操作符右侧指定的位数将操作符左边的操作数向右移位,最高位为0,则在最高位插入0;最高位为1,则在最高位插入1。
Java中还增加了C和C++没有的无符号右移位操作符>>>,即无论最高位正负,都在高位插入0。