引用数据类型的传值?

引用数据类型的传值?

视频中,老师提到,数组时引用数据类型,所以调用方法传值的时候,值会被改变。那String不也是引用类型吗,我试了一下,似乎没有改变string的值。代码如下:

public class TransferDemo {
	
	public void updateStr(String b) {
		b = "wyj";
		System.out.println("b的值为:" + b);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TransferDemo demo = new TransferDemo();
		String a = "lxf";
		System.out.println("调用方法前a的值为:" + a);
		demo.updateStr(a);
		System.out.println("调用方法后a的值为:" + a);
	}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 空指针异常null 2018-03-26 23:05:38

根据知乎一个大佬的回答,终于弄清楚了基本数据类型和引用数据类型传递参数的本质。

数组和字符串都是引用数据类型,在调用方法传递参数时,等于把方法内的形参和传递进方法的实参,这两个变量,都指向了一开始实参的对象。当方法中,“=”赋值运算符对字符串进行重新赋值时,其实是把形参的引用指向了一个新的字符串对象“wyj”,对原来的字符串对象“lxf”并未产生实际影响。

而数组赋值,之所以会产生变化,是因为数组对象是内存中一块连续的存储空间,数组指向的这个对象,这个对象里实际的值是基本数据类型,所以a[4]=15,改变了内存堆中的值,虽然是通过方法的形参改的,但是由于形参和实参都指向了同一个对象,所以打印实参时,实参也发生了变化。

文字中的实参即main函数中定义的变量,形参即update方法()中的参数。

  • 厉害了 .
    2018-04-06 23:28:41
  • 请问那怎样把普通方法中的内容修改,可以影响到主方法
    2019-01-21 12:31:44
  • 同学你好,可以将主方法中的数据作为参数传递到普通方法中,在普通方法中修改即可对主方法中的数据修改。或者普通方法中使用return将数据返回,在主方法中接收数据,即可达到修改普通方法中的数据,影响主方法。祝:学习愉快~
    2019-01-22 10:26:29
提问者 空指针异常null 2018-03-26 21:59:20

String类型的数据是按照值传递还是引用传递呢?

提问者 空指针异常null 2018-03-26 18:40:32

是我自己蠢了,方法参数都不一样。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师