問題描述
-
引用型變量存儲的是對象實例的地址值,如果直接打印變量,輸出的應該是地址值。
-
數值型數組如int型數組:初始化后直接打印數組名,輸出的是地址值。
-
但是:char類型數組無論是new還是直接賦值初始化,直接打印后顯示的居然不是地址值,而是數組內容。
原因分析
-
char類型的數組就相當於一個字符串。
-
因為輸出流System.out是PrintStream對象,PrintStream有多個重載的println方法,其中一個就是public void println(char[] x);
-
直接打印字符數組的話,不像int[]等其他數組,它會直接調用這個方法來打印,因而可以打印出數組內容,而不是地址。
char類型數組輸出總結
-
直接輸出數組名:將數組以字符串形式打印;
-
輸出前面加字符:輸出的是地址;
-
輸出前面加字符的情況下想要輸出數組內容:Arrays.toString(ch),數組內容將以數組形式輸出:
-
代碼示例
String s1 = "HElloworld1234";
chs = s1.toCharArray();
System.out.println(chs);
System.out.println("前邊加上字符輸出的是地址:"+chs);
System.out.println("Arrays.toString(ch)以數組形式輸出:"+Arrays.toString(chs));
輸出:
HElloworld1234
前邊加上字符輸出的是地址:[C@15db9742
Arrays.toString(ch)以數組形式輸出:[H, E, l, l, o, w, o, r, l, d, 1, 2, 3, 4]
小知識:
-
字符串的話,是不可以變它的內容的。
-
字符數組的話,你是可以改變數組中包含的內容的。
-
如果往深入了說,字符串的底層也是用數組實現的。
-
要說使用的區別,字符串方便一些,數組靈活一些。
注:
-
直接打印字符串變量名,輸出的也是字符串內容;前面加字符串后,輸出的仍是字符串內容。
-
字符串數組直接輸出的是地址值。