Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 声明/初始化原语等于创建新对象_Java_Object_Initialization_Primitive_Declare - Fatal编程技术网

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变量的值

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

否。原语在java中不是对象。

否,声明和初始化原语变量不会创建对象。让我们使用一个具有两个整数值的类,一个使用包装类型,另一个不使用。
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