Java 声明/初始化原语等于创建新对象
声明/初始化原语与创建新对象相同吗?据我所知,当我们创建原语时,我们也为它们创建包装器类。我是在java上实现的。否。原语在java中不是对象。否,声明和初始化原语变量不会创建对象。让我们使用一个具有两个整数值的类,一个使用包装类型,另一个不使用。Java 声明/初始化原语等于创建新对象,java,object,initialization,primitive,declare,Java,Object,Initialization,Primitive,Declare,声明/初始化原语与创建新对象相同吗?据我所知,当我们创建原语时,我们也为它们创建包装器类。我是在java上实现的。否。原语在java中不是对象。否,声明和初始化原语变量不会创建对象。让我们使用一个具有两个整数值的类,一个使用包装类型,另一个不使用。 public class Foo { private int primitive = 10; private Integer wrapper = new Integer(10); } 原语变量的值只是数字10。wrapper变量的值
public class Foo
{
private int primitive = 10;
private Integer wrapper = new Integer(10);
}
原语
变量的值只是数字10。wrapper
变量的值是对Integer
对象的引用,该对象依次包含数字10。因此,Foo
的实例将保持原语中的数字和包装器中的引用的状态
Java中的所有基元类型都有包装类,但您不会自动使用它们。创建基元不会同时为它们创建包装类
至于您最初的问题:声明/初始化原语将在堆栈上创建它,而声明对象将分配一个变量来保存对对象的引用。初始化对象将在堆上分配它。回答:否
检查此项:否,指定基本体值不会创建任何对象
您可能指的是,当在需要引用类型(也称为“对象”)的上下文中使用原语值时,原语值可以自动装箱到相应的包装中:
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