Beginner Asked:2020-11-01 02:32:06 +0000 UTC2020-11-01 02:32:06 +0000 UTC 2020-11-01 02:32:06 +0000 UTC 这些条目之间有什么区别? 772 我有一个 Car 类,我想实例化它。你可以写: Car car; Car car = new Car(); 这两个条目有什么区别? java 2 个回答 Voted Best Answer michael_best 2020-11-01T02:49:37Z2020-11-01T02:49:37Z 在第一种情况下,您只需声明对对象的引用,仅此而已。您的 Car 很可能具有width、speed等字段。此条目不会影响它们,它们的含义是未定义的。除了初始化它之外,还不能用这样的机器做任何事情。 在第二种情况下,您正在调用一个方法,在这种情况下是一个构造函数。现在您可以完全使用这台机器了。构造函数将为空,其 fields = null。 如果您想看到根本的区别,让我们想象一下这种情况 - 您有一个内存非常有限的应用程序。当您编写第一行然后运行程序时,它并没有占用太多空间。第二种情况,比如在构造函数中给出了很多关于我们机器的信息,启动了其他文件,下载了库...... 在这种情况下,想象中的应用程序没有足够的内存,它会崩溃。 Mark 2020-11-01T05:27:42Z2020-11-01T05:27:42Z 第一种情况Car car;与第二种情况的结合只是因为有一个 type 的变量Car。对于局部变量,您必须为其赋值,否则代码根本无法编译。对于一个实例变量,默认会有一个对象的引用null Car car = null; 。在第二种情况下, Car car = new Car(); 命令new,我们创建一个类的新实例(对象)Car并将对它的引用分配给变量。那。 - 我们有一个变量 - 有一个新对象(内存分配在堆中并填充了对象数据) - 变量有对该对象的引用,无需害怕NullPointerException - 对象至少有一个有效的参考它,意味着它可以工作,在可预见的未来,垃圾收集器也不怕他。JVM。
在第一种情况下,您只需声明对对象的引用,仅此而已。您的 Car 很可能具有width、speed等字段。此条目不会影响它们,它们的含义是未定义的。除了初始化它之外,还不能用这样的机器做任何事情。
在第二种情况下,您正在调用一个方法,在这种情况下是一个构造函数。现在您可以完全使用这台机器了。构造函数将为空,其 fields = null。
如果您想看到根本的区别,让我们想象一下这种情况 - 您有一个内存非常有限的应用程序。当您编写第一行然后运行程序时,它并没有占用太多空间。第二种情况,比如在构造函数中给出了很多关于我们机器的信息,启动了其他文件,下载了库......
在这种情况下,想象中的应用程序没有足够的内存,它会崩溃。
第一种情况
Car car;与第二种情况的结合只是因为有一个 type 的变量Car。对于局部变量,您必须为其赋值,否则代码根本无法编译。对于一个实例变量,默认会有一个对象的引用nullCar car = null;。在第二种情况下,
命令
new,我们创建一个类的新实例(对象)Car并将对它的引用分配给变量。那。- 我们有一个变量
- 有一个新对象(内存分配在堆中并填充了对象数据)
- 变量有对该对象的引用,无需害怕
NullPointerException- 对象至少有一个有效的参考它,意味着它可以工作,
在可预见的未来,垃圾收集器也不怕他。JVM。