當我運行下面的代碼,它不會給我輸出,我已經例外。考慮下面的代碼片段:sysout中的concat char給出奇怪的輸出?
public class T
{
public static void main(String arg[])
{
char a='3';
System.out.println(a+a);
}
}
這裏的輸出是:102
請能有人解釋給我嗎?
當我運行下面的代碼,它不會給我輸出,我已經例外。考慮下面的代碼片段:sysout中的concat char給出奇怪的輸出?
public class T
{
public static void main(String arg[])
{
char a='3';
System.out.println(a+a);
}
}
這裏的輸出是:102
請能有人解釋給我嗎?
的+
操作者施加一個隱含的類型轉換該兩個字符轉換成它們的數字的ASCII表示,其是51.
所以表達式
'3'+'3'
也可以看作是
51 + 51
是102
我假設你想有什麼結果"33"
這不是任何字符以上,但一個字符串。要做到這一點,你可以例如簡單地隱含表達的結果轉換成字符串:
char c = '3';
string s = "" + c + c;
另一種可能性是,以方便StringBuilder類:
char c = '3';
String s = new StringBuilder().append(c).append(c).toString();
a + a被解釋爲公式。
以來的「3」 ASCII值是51,51 + 51 = 102
它僅僅是ascii碼的值的總和
你可以看到C + C爲51 + 51,因爲它需要'3'的ascii碼。 如果要打印33,那麼你可以試試這個:
System.out.println(String
.format( 「%C +%C」,C,C));
你應該看一下[15.18的規格。添加運算符](http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.18),順便說一句,字符實際上是16位無符號整數,表示UTF- 16(範圍000000 - 00007F匹配ascii)。 – 2012-07-11 10:05:39