作者moonforget (等等等等等等等等)
看板java
标题Re: [问题] print char[]问题
时间Sat Mar 10 23:58:52 2007
※ 引述《walm20 (我要买车啦)》之铭言:
: ※ 引述《moonforget (等等等等等等等等)》之铭言:
: : 这是有一些型态的问题
: : 如:
: : String string = "happy";
: : int num = 3 + 4;
: : System.out.println(string + num);
: : System.out.println(string + 3 + 4);
: : 显示:
: : happy7
: : happy34
: : 这样看出一些东西麽?
: : 就是个别将每项都提升成字串
: : 但int为基本型态并非物件
: : 而你的问题应该是个别提升成了物件,因为String也是一个物件,而char[]也是物件
: : 如果你将你的程式写成:
: : String string = "str = ";
: : char[] charArray = { 'H', 'a', 'p', 'p', 'y'};
: : System.out.print(string);//用print(String s)
: : System.out.print(charArray);//用print(char[] c)
: : 显示:
: : str = Happy
: : 就和下列程式不同
: : System.out.print(string + charArray);//用print(Object obj)
: : 显示:
: : str = [C@c17164
: : (显示charArray的记忆体位址)
: : 如有错误请指教.....我还是个嫩新手....谢谢
: : By Java新手
嗯嗯...我又非常无聊的全部看完了一次所有的API和原始码Orz
但我还在硬掰我的讲法XD请各位大大帮忙指正一下,至少让我知道我的大问题
情况一的第三行是用print(String s)执行,第三行是用print(char[] c)执行
所以可以得到你想要的结果
我的讲法是情况二会用print(Object obj)来执行
public void print(Object obj) {
write(String.valueOf(obj));
}
他会呼叫valueOf()
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
他会呼叫toString()
而我的硬掰解释是前项用String覆写Object的toString()得到(继承想法)
後项用Object的toString()得到
所以前面已经回传原字串而後者继续往下跑
Object
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
String
public String toString() {
return this;
}
他又呼叫了一堆东西getClass() getName() toHexString
getClass().getName()得到 [C ([代表一维矩阵,C代表字元)
以下省略
也许是我太无聊了,反正知道结果就好
但请各位观念清楚的大大来说明一下我硬掰讲法是否有错误...
都恳请讲解一下.....拜托谢谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.118.199.35
※ 编辑: moonforget 来自: 140.118.199.35 (03/11 00:00)