Java语法
关键字
transient
若类实现了Serilizable接口,那么该类的对象就可以被序列化。如果想要排除该类的某个字段,就可以给该字段加上transient关键字,该字段就不会被序列化(ObjectOutputStream)。需要注意的是,transient只能修饰类字段,不能修饰类和方法,也不能修饰方法的中间字段。另外,静态字段无论加不加transient都无法被序列化,因为静态字段属于类,不属于对象。
运算符
位运算符
&
:按位与(都为1才得1)|
:按位或(有1就得1)^
:按位异或(不一致则得1)~
:按位取反(1得0,0得1)<<
:按位左移(左移后符号可能变,也可能不变)1 2 3 4 5 6
// 10000000 00000000 00000000 00000001 int a = -2147483647 << 1; System.out.println(a); // 01000000 00000000 00000000 00000000 int a1 = 1073741824 << 1; System.out.println(a1);
运行结果
1 2 3 4
// 00000000 00000000 00000000 00000010 2 // 10000000 00000000 00000000 00000000 -2147483648
>>
:按位右移(右移后符号不变)解释:符号位(最高位)不变,然后所有位(包括符号位)右移
>>>
:符号位补零按位右移(右移后一定为正数)解释:符号位补零,然后所有位(包括符号位)右移,两种右移对比:
1 2 3 4 5 6 7 8 9 10 11
// 10000000 00000000 00000000 00000011 int b = -2147483645 >> 1; int c = -2147483645 >>> 1; System.out.println(b); System.out.println(c); // 01000000 00000000 00000000 00000011 int d = 1073741827 >> 1; int e = 1073741827 >>> 1; System.out.println(d); System.out.println(e);
运行结果
1 2 3 4 5 6 7
// 11000000 00000000 00000000 00000001 -1073741823 // 01000000 00000000 00000000 00000001 1073741825 // 00100000 00000000 00000000 00000001 536870913 536870913
This post is licensed under CC BY 4.0 by the author.