声明/初始化基元等于创建新对象

时间:2010-05-20 15:16:39

标签: java object initialization primitive declare

声明/初始化基元与创建新对象相同?根据我所知,当我们创建基元时,我们也为它们创建包装类。我正在java btw上实现。

5 个答案:

答案 0 :(得分: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

另外,我将尝试描述declare和initialize之间的区别:

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

变量在第一次创建时被“声明”(即您指定变量的类型和名称)。在声明期间为其分配值时,它会被初始化。

答案 1 :(得分:3)

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

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

primitive变量的只是数字10. wrapper变量的值是{em>引用到{{ 1}}对象又包含数字10.因此,Integer的实例将保留Foo中的数字和primitive中的引用的状态。

是Java中所有基本类型的 包装类,但您不会自动使用它们。

答案 2 :(得分:2)

创建原语 DOES NOT 也为它们创建一个包装类。

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

答案 3 :(得分:1)

答案 4 :(得分:0)

没有。基元不是java中的对象。