在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ String字符串問題

String字符串問題

public class C {
  public static void main(String[] args) {
      String a = "abc";
      test(a);
     System.out.println(a);
}

  public static void test(String s){
       s="ddddd";
  }
    
}

我知道String字符串一旦創(chuàng)建就不可變,但是上面這段代碼,調用test方法a的句柄應該是變了啊,為什么輸出還是abc

回答
編輯回答
編輯回答
喜歡你

JAVA 中形參傳遞的是值不是引用,所以不能修改原來引用的值。
有一個篇文章講的這個,你可以參照下。
https://dailycast.github.io/J...

2018年3月10日 10:20
編輯回答
拮據

對于這個問題 你可以看看這個博客:http://blog.csdn.net/wuwenxia...

2017年6月30日 20:24
編輯回答
互擼娃
public class C {
      public static void main(String[] args) {
          String a = "abc";
          test(a);//a會不會改變取決于在test方法里面是否修改了a的內容
          //String內部使用private final char value[];存儲值
         System.out.println(a);//輸出1bc
    }

      public static void test(String s){
          
           //s="ddddd";//a和一開始都指向常量池的abc,執(zhí)行s="ddddd"并沒有改變char value[]的內容,而是指向常量池的ddddd,所以a還是abc
          //想改變char數組的內容可以使用反射
          try {
            Class clazz=s.getClass();
            Field c=clazz.getDeclaredField("value");
            c.setAccessible(true);
            char[] cc=(char[]) c.get(s);
            cc[0]='1';
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
      }
        
    }
2018年6月1日 20:38