声明/初始化基元等于创建新对象
答
没有,分配的原始值不不创建任何对象。
什么你可能被提及的是,原始值可以自动装箱到相应的包装,当他们在需要引用类型(又名“对象”)的上下文中使用:
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)。它在声明期间被赋值为时被初始化。
答
编号基元不是java中的对象。
答
不,声明和初始化一个基本变量不是创建一个对象。我们来看一个带有两个整数值的类 - 一个使用包装类型,另一个不使用。
public class Foo
{
private int primitive = 10;
private Integer wrapper = new Integer(10);
}
的primitive
变量的值只是数字10的wrapper
变量的值是一个参考到Integer
对象又包含数字10因此的Foo
一个实例将请保留primitive
中的号码以及wrapper
中的参考号。
There are Java中所有基元类型的包装类,但不会自动使用它们。
答
创建原语不是也为它们创建包装类。
至于你的原始问题:声明/初始化一个原语将在堆栈上创建它,而声明一个对象将分配一个变量来保存对一个对象的引用。初始化对象将在堆上分配它。