Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 - Fatal编程技术网

Java 这两者有区别吗?

Java 这两者有区别吗?,java,Java,只是把它们混淆了D 我两个都试过了,但还是不知道有什么不同。是的,他们是不同的学生仅创建一个引用,其中asStudent=new Student()创建一个对象并占用一些内存学生声明一个名为studentis的变量,该变量的类型为student。它的默认值为null Student=newstudent()声明一个名为student的变量,其类型为student,但它也为其分配一个新构造的student对象 这与我告诉你x是一个“数字”或x是“数字5”的区别类似,student只是指向一个不指向

只是把它们混淆了D


我两个都试过了,但还是不知道有什么不同。

是的,他们是不同的
学生仅创建一个引用,其中as
Student=new Student()
创建一个对象并占用一些内存

学生
声明一个名为
student
is的变量,该变量的类型为
student
。它的默认值为
null

Student=newstudent()
声明一个名为
student
的变量,其类型为
student
,但它也为其分配一个新构造的student对象

这与我告诉你
x
是一个“数字”或
x
是“数字5”的区别类似,student只是指向一个不指向任何内容的学生的引用。它只是一个空白引用,可以指向
学生
<代码>学生=新学生()
是一个
学生
引用,指向特定的
学生

1.  Student student;

2.  Student student = new Student();
您只需定义变量的类型。它现在包含
null

Student student;
这一个设置变量类型并为其分配新值,以使
student
不再为
null

Student student = new Student();
在这里,您只是在创建引用

1.  Student student;
2.  Student student = new Student();

在这种情况下,您正在分配对象。

已经提到,但我无法抗拒:

1是声明的学生的变量类型


2也在声明和定义它。

是的,有很大的区别

1) 创建引用

1.  Student student;
2.  Student student = new Student();
这个命令将告诉JavaVM创建一个包含引用的字段。但此时,没有存储任何对象,因此该引用将不会进入任何位置-您经常会将其视为NullPointerException

2) 创建类的实例

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

3) 将实例分配给字段

new Student();
同时使用这些命令,可以为对象保留空间,并将其创建为下一步。创建后,对该对象的引用将保留在学生字段中

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

Student student;
student = new Student();
第一个是指针(即它指向一个学生对象),但它为空,表示不指向任何地方(没有保留地址空间)。第二个是指向完整“学生”对象的指针,内存地址为该对象保留(表示内存分配)。因此,如果您尝试引用第一个,您将得到NullPointerException,但第二个是有效对象

Student student = new Student();
仅声明类型为
student
的引用变量
student
。此时
student
null

Student student;
将创建
学生
类的新对象,并将引用分配给
学生

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


有。阅读基础教程。尝试访问一个属性,你会看到区别…@AliAlamiri作为一个初学者,他应该先阅读基础知识,然后再发布这样一个没有任何努力和最少研究的问题。@AliAlamiri然后他应该详细说明,他到底不明白什么。至少让我们知道他做了一个很小的研究。@AliAlamiri在你看了这些文件后,你会发现答案就在那里,这甚至是很小的。非常感谢你,先生!;)帮个大忙!:)谢谢您的努力和清楚的解释,先生。:)@克莱姆:有关更多信息,请参阅。我希望你们能弄清楚这件事。谢谢,先生我开始喜欢Java了。哈哈D