Java Types:
Primitive Types: boolean, char, byte, short, int, long, float, double.
Reference Types
直接数:
整数, 浮点数, 单引号括起来的char, 双引号括起来的String, true, false, null;
所有的Primitive Types 在java.lang中都有对应的包装类. 如下:
int i = 1;
使用直接数赋值, 可理解为直接在栈区内使用int, 没有任何Object的创建. 而如果使用new int()进行创建, 则会创建额外无用的Object.
int i = new Integer(1);
在经过JVM编译后, 等同于下:
int i = (new Integer(1)).intValue();
此举将创建一个int的Object, 并将这个Object的intValue()传给i. 此后该对象将废弃不用,等待垃圾回收.
因此, 在多数情况下, 应使用直接数赋值.
private static Integer getInt() { return 1; } private static int getInitP() { return new Integer(1); }
以上代码在编译之后的Class文件反编译后的代码, 可立即理解Boxing 与Unboxing :
private static Integer getInt() { return Integer.valueOf(1); } private static int getInitP() { return (new Integer(1)).intValue(); }
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.