码迷,mamicode.com
首页 > 其他好文 > 详细

当一个对象被当作参数传递到一个方法后,此方法可改变 这个对象的属性,并可返回变化后的结果,那么这里到底是值传 递还是引用传递?

时间:2020-06-08 00:13:41      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:str   void   console   mil   语言   需要   ram   write   line   

是值传递。Java 语言的方法调用只支持参数的值传递。当一个对象实例作为一个

参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调

用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和 C#中可以

通过传引用或传输出参数来改变传入的参数的值。在 C#中可以编写如下所示的代

码,但是在 Java 中却做不到。

using System;

namespace CS01 {

class Program {

public static void swap(ref int x, ref int y) {

int temp = x;

x = y;

y = temp;

}

public static void Main (string[] args) {

int a = 5, b = 10;

swap (ref a, ref b);

// a = 10, b = 5;

Console.WriteLine ("a = {0}, b = {1}", a, b);

}

}

}

说明:Java 中没有传引用实在是非常的不方便,这一点在 Java 8 中仍然没有得到

改进,正是如此在 Java 编写的代码中才会出现大量的 Wrapper 类(将需要通过

方法调用修改的引用置于一个 Wrapper 类中,再将 Wrapper 对象传入方法),

这样的做法只会让代码变得臃肿,尤其是让从 C 和 C++转型为 Java 程序员的开

发者无法容忍。

当一个对象被当作参数传递到一个方法后,此方法可改变 这个对象的属性,并可返回变化后的结果,那么这里到底是值传 递还是引用传递?

标签:str   void   console   mil   语言   需要   ram   write   line   

原文地址:https://www.cnblogs.com/programb/p/13021304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!