引用数据类型的传值?
视频中,老师提到,数组时引用数据类型,所以调用方法传值的时候,值会被改变。那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); } }
34
收起
正在回答 回答被采纳积分+1
3回答
空指针异常null
2018-03-26 23:05:38
根据知乎一个大佬的回答,终于弄清楚了基本数据类型和引用数据类型传递参数的本质。
数组和字符串都是引用数据类型,在调用方法传递参数时,等于把方法内的形参和传递进方法的实参,这两个变量,都指向了一开始实参的对象。当方法中,“=”赋值运算符对字符串进行重新赋值时,其实是把形参的引用指向了一个新的字符串对象“wyj”,对原来的字符串对象“lxf”并未产生实际影响。
而数组赋值,之所以会产生变化,是因为数组对象是内存中一块连续的存储空间,数组指向的这个对象,这个对象里实际的值是基本数据类型,所以a[4]=15,改变了内存堆中的值,虽然是通过方法的形参改的,但是由于形参和实参都指向了同一个对象,所以打印实参时,实参也发生了变化。
文字中的实参即main函数中定义的变量,形参即update方法()中的参数。
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星