声明/初始化基元与创建新对象相同?根据我所知,当我们创建基元时,我们也为它们创建包装类。我正在java btw上实现。
答案 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中的对象。