黑马程序员技术交流社区
标题:
关于参数传递问题
[打印本页]
作者:
杨雯雯
时间:
2012-12-23 18:36
标题:
关于参数传递问题
本帖最后由 杨雯雯 于 2013-1-1 15:11 编辑
public class Test2 {
public static void main (String [] args) {
StringBuffer a = new StringBuffer ("A");
StringBuffer b = new StringBuffer ("B");
operate (a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x, StringBuffer y){
x.append(y);
y = x;
}
}
我对值传递和引用传递还是有些模糊,请大虾帮忙讲一下这段代码值传递和引用传递的体现
作者:
奋斗的青春
时间:
2012-12-23 18:51
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
vr.png
(10.83 KB, 下载次数: 10)
下载附件
2012-12-23 18:51 上传
作者:
黄锦成
时间:
2012-12-24 11:04
在刚开始学习时,我对这两个也是不理解的,弄了挺久的时间才弄明白
下面说一下我对这两个的理解:
1、值传递:即是原来的一份拷贝,举个例子:我有张图片A,你向我要这张图片A,我将图片A复制一份给你,这时图片A就有了两份,不管你对那份拷贝怎么PS,都不影响我的那份图片A。下面通过一个例子来说明一下
main(String args[])
{
int a = 10;
System.out.println(a);//打印10
//将a的一份拷贝传递给change方法,且在change方法中将拷贝改为100,但是不影响原来的a的值
change(a);
System.out.println(a);//打印10
}
public static void change(int x)
{
x = 100;
}
2、引用传递:操作的都是同一个资源。举个生活中的例子:n个人一台电脑(电脑就是共同资源),甲在电脑上安装了一个QQ,那么其他人在用电脑时都会发现电脑上安装了QQ。这就说明:资源被修改了,其他人都能知道
class Demo
{
main(String args[])
{
Person p = new Person();
p.count = 50;
System.out.println(p.count);//打印50
changePerson(p);//调用方法
System.out.println(p.count);//打印1000
}
static void changePerson(Person obj)
{
obj.count = 1000;//改变对象内的count值为1000
}
}
class Person
{
int count;
}
总结:基本数据类型是值传递;数组,类,接口等是引用传递
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2