4

声明/初始化原语与创建新对象相同吗?据我所知,当我们创建原语时,我们还为它们创建包装类。我在java btw上实现。

4

5 回答 5

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

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

于 2010-05-20T15:22:00.917 回答
3

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

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

变量的primitive只是数字 10。wrapper变量的值是对一个对象的引用Integer,而该对象又包含数字 10。因此 的实例Foo将保持数字 inprimitive和引用 in 的状态wrapper

Java中的所有原始类型都有包装类,但您不会自动使用它们。

于 2010-05-20T15:20:39.907 回答
2

创建原语不会同时为它们创建包装类。

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

于 2010-05-20T15:21:00.017 回答
1

回答:没有。

看看这个:http: //java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

于 2010-05-20T15:21:01.967 回答
0

不,原语不是 java 中的对象。

于 2010-05-20T15:20:33.260 回答