java String函数传值问题

问题:函数传String不是相当于引用即传递地址吗?结果为什么输出“1”?

package pat;

public class Main{
    
    static final String str1=new String("2");
    static void fun(String str){
        str=str1;  //地址指向str1
    }
    public static void main(String[] args) {
        String str="1";
        fun(str);
        System.out.println(str);       
    }
    
}

clipboard.png

阅读 3.2k
3 个回答

你只是把fun方法栈中的局部变量str指向了str1 所以main方法中的局部变量还是指向“1”

不是,传递的只是地址(ps:从传递地址的角度可以认为是值传递),如果java允许对地址解引用赋值的话,就会是2了,但是java并不允许,so...

我画了图的,这个应该能解释你的问题,也可关注图上二维码,给我留言。

bVbpHee?w=736&h=346

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题