0. 基本数据类型的 size
- 8:
- Byte.SIZE == 8
- 32:
- Integer.SIZE == 32
- Float.SIZE == 32
- 64:
- Long.SIZE == 64
- Double.SIZE == 64
- boolean 的 sizeof 依赖于 java vm;
1. int
Java 对 -128-127 的整型值进行了缓存:
Integer a = 127;
Integer b = 127;
a == b // true,a 和 b 取自缓冲中的同一个对象
Integer c = 128;
Integer d = 128;
c == d // false,c 和 d 是不同的对象;
Integer.valueOf(127) == Integer.valueOf(127)
true
Integer.valueOf(128) == Integer.valueOf(128)
false
-
Integer.valueOf 源码:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
- IntegerCache 是静态私有内部类;
- low:为 -128,high:默认为 127,可通过配置(虚拟机参数)进行设置;
- IntegerCache.cache 是一个
Integer[]
数组;初始化为:cache = new Integer[high-low+1]
- IntegerCache 是静态私有内部类;
2. Integer
-
将字符串形式的十进制数转换为2进制形式:
int octet = Integer.parseInt(str, 10); String binOctet = Integer.toBinaryString(octet);
3. String
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
s1 == s2 // true
s1 == s3 // false
s1 == s3.intern() // true