【发布时间】:2017-05-13 09:54:53
【问题描述】:
例如,我有一个 Car 类,我有两个对象 BMW 和 Benz 类 Car。因此,为了实例化,我们必须声明一个新变量,例如;
Car BMW = new Car();
现在如果对象被声明为
Car Benz;
如果第一个通过引用传递,第二个通过值传递,任何人都可以通过实例化对象来帮助我进行交换吗?
【问题讨论】:
-
按值传递和按引用传递是指将参数传递给函数/方法-您没有提及任何内容-请澄清您的问题。我们可能会猜测您想要创建一个交换两个变量的方法,但最好告诉我们您想要完成什么。此外 - Java 仅支持传递值。
-
您必须了解 变量 和 对象 之间的区别 - 您在写作时就好像它们是同一个东西。变量引用一个对象,它本身不是对象。
Car Benz;只是声明了一个变量,没有初始化它,不涉及任何对象。 -
@nos 这很好,但我已经做了一个实验。在提到的代码中,请添加
System.out.println(aDog);,它实际上给出了一个十六进制数字,指的是寄存器中的地址。这意味着 aDog 实际上是指一个内存位置。我是 java 初学者,实际上我经历了 o'reilly 编写的 java 编程,它说默认情况下,jave 将参数处理为通过引用传递。 -
而我的目的是了解上述两个声明之间的区别。当然,我从来没有注意到 java 中的这种交换,因为我相信 java 中的所有内容都是通过引用传递的。所以我也要求程序节省空间和时间。它确实与实际问题没有任何联系。我只是想知道上述声明之间的区别。
-
两个声明的区别在于第二个没有初始化
Benz。如果您尝试测试您遇到编译时错误或Benz将是null(取决于您如何执行此操作)。也不是 pass-by-anything,因为您没有向方法 pass 传递任何东西,而且 Java 不具备 pass-by-reference 和 pass-by -值。
标签: java oop object reference swap