技术贴:
之前在学习String的时候遇到了一个问题就是在调用方法的时候传递一个String,这个时候在方法里改变String,这个时候在方法外的String会不会发生改变? 换句话说就是Java字符串可以引用传值吗?
public class Test {
public static void main(String[] args) {
String a = "我是a";
String b = new String("我是b,我是new出来的");
change(a);
change(b);
System.out.println(a);
System.out.println(b);
}
private static void change(String a) {
a = "我变了";
}
}
这个时候在控制台输出的两个会是什么样子的, 按理说打印a的肯定不会变这是因为值传递时是不发生修改的. 但b是被new出来的String对象属于引用传递按理说应该是可以被方法修改的,但当运行的时候,打印的结果却也没有变. 这里不仅就引起了我的主意. 这到底是什么原因?
我在一个公众号上看到一篇文章.他的结论是说java里只有值传递.大家可以搜索”面试官刁难:Java 字符串可以引用传递吗?-作者沉默王二-” 那么问题就来了,那Array这种传递地址的到底是怎么实现的呢? 答案到目前为止我还在寻找, 之后还会更新, 未完待续
|
|