操作符
3.4 赋值 =
基本类型:直接将内容赋值到另一个地方,a=b,之后修改a的值对b没有影响
对象:将一个对象的引用从一个地方复制到另一个地方,两个地方都指向一个对象
3.5 算术操作符
++和--
递增和递减
分为前缀递增a++,先计算再赋值
和后缀递增,先赋值再计算(后缀是唯一有副作用的操作符)
==和equels
public static void main(String[] args) {
Integer a = new Integer(47);
Integer b = new Integer(47);
System.out.println(a.equals(b));
}//true
public class Equals {
int value;
public static void main(String[] args) {
Equals eqa = new Equals();
Equals eqb = new Equals();
eqa.value=eqb.value=47;
System.out.println(eqa.equals(eqb));
}
}//flase
原因:equals默认是比较的对象的引用
看看两个equals()方法,
Integer
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
即比较的两个Integer对象的值
Equals
public boolean equals(Object obj) {
return (this == obj);
}
即比较两个对象的引用,对象不一样则两个引用则不同
3.10 按位操作符
用来操作整数基本数据类型中的单个“比特”(bit),即二进制
二元运算符
与(&)
或(|)
异或(^) 即相同为0,相异为1,1^1、0^0为0,1^0为1
一元运算符
非(~) 取反
3.11 位移操作符
用来操作整数基本数据类型中的单个“比特”(bit),即二进制
左移操作符<<
按照操作符右侧指定的位数将操作符左边的操作数向左移动,低位补0
右移操作符>>
符合位正:操作数右移,高位补0
符合为负:操作数右移,高位补0
无符号右移>>>
高位补0
3.12 三元操作符
boolean-exp ? value0:value1