继续理解Java基本数据类型, 直接数, Boxing/UnBoxing

Categories: Java; Tagged with: ; @ February 5th, 2009 17:23

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,.