这两者有区别吗?

时间:2013-10-23 08:58:57

标签: java

1.  Student student;

2.  Student student = new Student();
只是混淆了那些。 :d

我试过了两个,但仍然不知道其中的区别。

8 个答案:

答案 0 :(得分:2)

Student student;

只需声明student类型的引用变量Student即可。此时studentnull

Student student = new Student();

将创建Student类的新对象并分配对student的引用。

  

new运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。 new运算符也调用对象构造函数   短语“实例化一个类”与“创建一个对象”意思相同。

enter image description here

答案 1 :(得分:1)

Student student;声明名为student的变量属于Student类型。它的默认值为null

Student student = new Student();声明一个名为student的{​​{1}}类型的变量,但它也为它分配了一个新构造的Student对象。

这与我告诉您Student是“数字”或x是“数字5”之间的区别相似。使用x,学生只是指向一个没有任何意义的学生。它只是可以指向Student student;的空白参考。 StudentStudent student = new Student();引用,指向特定 Student

答案 2 :(得分:1)

是的,有很大的不同!

1)创建参考

Student student;

此命令将告诉Java VM创建一个包含引用的字段。但是在这个时候,没有存储对象,所以这个引用将无处可见 - 你会经常将它看作NullPointerException。

2)创建班级实例

new Student();

此命令将调用构造函数(或Java的默认构造函数)并使用自己的字段和内容创建类的新实例。

3)将实例分配给字段

Student student;
student = new Student();

一起使用此命令,您将为对象保留空间,并将其作为下一步创建。创建后,您的学生领域将对此对象进行引用。

如果你将这两行写在一起,它看起来像这样,但意思是相同的:

Student student = new Student();

答案 3 :(得分:0)

是的,它们是不同的Student student;只是创建一个引用,其中Student student = new Student();创建一个对象并占用一些内存

答案 4 :(得分:0)

Student student;

您只需定义变量的类型。它现在包含null值。

Student student = new Student();

这个设置变量类型并为其指定新值,student不再是null

答案 5 :(得分:0)

1.  Student student;

在这里你只是创建参考

2.  Student student = new Student();

在此您正在分配对象。

答案 6 :(得分:0)

已经提到,但无法抗拒自己:

1 声明 var类型的学生。

2宣布& 定义也是如此。

答案 7 :(得分:0)

第一个是一个指针(也就是它指向一个Student对象),但它是null,表示无处点(没有保留地址空间)。第二个是一个指针,指向一个完整的'Student'对象,并为该对象保留内存地址(表示内存分配)。因此,如果您尝试引用第一个,您将获得NullPointerException,但第二个是有效对象。