[問題] 請問一下為何列印出來是亂碼呢?

看板java作者 (天之驕子)時間16年前 (2009/06/05 10:26), 編輯推噓5(504)
留言9則, 6人參與, 最新討論串1/1
想請問一下 為何我在 Mystring裡面列印 s 這個array 印出來是亂碼,而不是 My sting呢? 但是如果單獨列印s[0]卻可以印出 M這個字母 謝謝 public class DeclareString { public static void main(String arg[]) { MyString str1 = new MyString(); //建立MyString物件 char c[] = {'M','y',' ','s','t','r','i','n','g'}; str1.setMyString(c); //呼叫str1的setMyString方法,設定字串值 System.out.print("string: "); System.out.println(str1.getMyString()); //呼叫getMyString方法,並輸出回傳值 System.out.println("length: "+str1.length); //輸出字串長度 } } class MyString //定義類別 { private char s[] = new char[20]; //定義屬性 public int length; public void setMyString(char input[]) //設定字串值 { System.arraycopy(input, 0, s,0, input.length); length = input.length; //取得傳入字串的長度 System.out.println("test1:"+s); } public char[] getMyString() //取得字串內容 { return s; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.73

06/05 10:39, , 1F
因為你是印 Array of character Object 而不是 string
06/05 10:39, 1F

06/05 10:42, , 2F
那請問有什麼方法可以印出來呢?
06/05 10:42, 2F

06/05 10:44, , 3F
還有為何用下面getMystring的方式就可以印出來呢?
06/05 10:44, 3F

06/05 11:00, , 4F
你下面印得出來才奇怪...
06/05 11:00, 4F

06/05 13:59, , 5F
print(char[])會把char[]的字元印出,但是print(String)是
06/05 13:59, 5F

06/05 14:01, , 6F
會呼叫obj.toString()
06/05 14:01, 6F

06/05 14:35, , 7F
字串+陣列 會變 字串+陣列的參考數字(string) 拆開印就好
06/05 14:35, 7F

06/05 15:40, , 8F
瞭解了 謝謝各位
06/05 15:40, 8F

06/05 23:58, , 9F
Java的string object不同於C\C++,去看一下文件就會了
06/05 23:58, 9F
文章代碼(AID): #1AA89Exz (java)