A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

qiujiangtao

初级黑马

  • 黑马币:33

  • 帖子:10

  • 精华:0

技术贴:
之前在学习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这种传递地址的到底是怎么实现的呢? 答案到目前为止我还在寻找, 之后还会更新, 未完待续

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马