2010-05-20 58 views

回答

5

没有,分配的原始值不创建任何对象。

什么你可能被提及的是,原始值可以自动装箱到相应的包装,当他们在需要引用类型(又名“对象”)的上下文中使用:

int i = 13;  // this line does not create an object 
Integer i2 = i; // at this line 13 is auto-boxed into an Integer object 

char c = 'x'; // again: no object created: 
List<Character> l = new ArrayList<Character>(); 
l.add(c);  // c is auto-boxed into a Character object 

而且,我会尽力来形容声明之间的区别和初始化:

int i;   // an int-variable is declared 
int j = 0;  // an int-variable is declared and initialized 
i = 1;   // an int-variable is assigned a value, this is *not* initialization 

一个变量被“申报”首次创建(当它即指定类型和名称的变化iable)。它在声明期间被赋值为时被初始化。

0

编号基元不是java中的对象。

3

不,声明和初始化一个基本变量不是创建一个对象。我们来看一个带有两个整数值的类 - 一个使用包装类型,另一个不使用。

public class Foo 
{ 
    private int primitive = 10; 
    private Integer wrapper = new Integer(10); 
} 

primitive变量的只是数字10的wrapper变量的值是一个参考Integer对象又包含数字10因此的Foo一个实例将请保留primitive中的号码以及wrapper中的参考号。

There are Java中所有基元类型的包装类,但不会自动使用它们。

2

创建原语不是也为它们创建包装类。

至于你的原始问题:声明/初始化一个原语将在堆栈上创建它,而声明一个对象将分配一个变量来保存对一个对象的引用。初始化对象将在堆上分配它。