比方说,我有一个A类,它创建了一个相当大的对象B的实例。是否将B作为参数传递给C类中的方法效率低下?
也就是说,它只是通过参考还是它也会移动物体的记忆?
感谢。
答案 0 :(得分:59)
它只是传递参考。重要的是要理解Java中任何表达式的值是永远对象。它只是永远引用或原始值。
这不仅与参数传递有关 - 理解返回类型,数组,简单赋值等非常重要。
答案 1 :(得分:13)
Java只能将两种值传递给方法:
int
,char
,double
,...)或没有办法可以“按值”传递整个对象。
这意味着你不必担心你的物体“有多大”,你“绕过”。
答案 2 :(得分:7)
效率不高,因为只有对象引用传递给方法。
答案 3 :(得分:5)
只要您的调用是本地的(相同的JVM)对象大小无关紧要,但是当您的应用程序使用远程调用(如RMI / Web Service)(跨JVM)时,大型对象能够在很大程度上减慢您的应用程序速度因为大量的数据将被编组/解组,并且每次远程调用都会涉及网络延迟。
答案 4 :(得分:3)
正如其他人所说,在Java中你只有按值传递。这些值只是基元和引用。最大的基元或引用可以是8字节。恕我直言,没有大论点这样的事情。
答案 5 :(得分:2)
没有什么比内存移位...它只是传递实际参考..而参考词本身代表一些地址..所以没有问题..它的效率比参数传递真正使代码更复杂..可能是这就是为什么SUN将它添加到java ...
答案 6 :(得分:1)
它只是将引用作为值传递。
答案 7 :(得分:1)
Java按值传递对象的引用。传递给C的对象引用是否很大,在性能方面没有区别。