爲什麼下面打印197,但不是'BC'?Java如何連接2個字符串?
System.out.println('b' + 'c');
有人可以解釋如何在Java上做適當的連接嗎?
P.S.我學習了一些Python,現在正在轉變爲學習Java。
爲什麼下面打印197,但不是'BC'?Java如何連接2個字符串?
System.out.println('b' + 'c');
有人可以解釋如何在Java上做適當的連接嗎?
P.S.我學習了一些Python,現在正在轉變爲學習Java。
'b'
和'c'
不String
S,它們是char
秒。您應該使用雙引號"..."
代替:
System.out.println("b" + "c");
你得到一個int
,因爲你要添加這些字符的unicode values:
System.out.println((int) 'b'); // 98
System.out.println((int) 'c'); // 99
System.out.println('b' + 'c'); // 98 + 99 = 197
Java語言規範將'char's定義爲編碼Unicode代碼點的UTF-16代碼單元,而不是ASCII值。 –
'b'
不是String
在Java
它是char
。然後'b'+'c'
打印197
。
但是,如果您使用"b"+"c"
這將打印bc
因爲""
用於代表String
。
System.out.println("b" + "c"); // prints bc
使用+
串聯字符將字符值更改成ASCII並因此給出數字輸出。如果你想bc
作爲輸出,你需要有b
和c
作爲字符串。目前,您的b
和c
是Java中的char。
在Java中,字符串應該""
和字符包圍被''
是單引號是字符包圍,而雙引號表示字符串,因此:
System.out.println("b" + "c");
一些備選方案可以是:
"" + char1 + char2 + char3;
或者:
new StringBuilder().append('b').append('c').toString();
'.append(「」)'是多餘的。 – Pshemo
在Java中,字符串字面量來表示雙引號 - ""
你所做的是增加了兩個char
值加在一起。你想要的是:
System.out.println("b" + "c"); // bc
什麼你的代碼的情況是,它增加了chars
的ASCII值拿出197
。
'b'
的ASCII值是98
而且'c'
的ASCII值是99
。
所以它是這樣的:
System.out.println('b' + 'c'); // 98 + 99 = 197
正如我參考了chars
的ASCII值記:
CHAR數據類型是一個16位Unicode字符。
來自Docs。然而,對於一個字節(0-255),據我所知,chars
可以也可以用它們的ASCII值表示,因爲ASCII值直接對應於Unicode代碼點值 - see here。
我在上面的回答中引用ASCII值的原因是因爲256個ASCII值覆蓋了所有字母(大寫和小寫)和標點 - 所以它涵蓋了所有主要內容。
從技術上講,我說的是正確的 - 它確實添加了ASCII值(因爲它們與Unicode值相同)。但是,從技術上講,它添加了Unicode代碼點十進制值。
'b'和'c'不是字符串,它們是字符。 197是B和C
的Unicode值的總和Concatinating字符串可以使用以下2種方式:
System.out.println("b"+"c");
System.out.println("b".concat("c"));
那麼對於初學者這些都不是字符串。字符串文字使用雙引號。 – PakkuDon
'197'是'b'和'c'的Unicode值的總和,Python不同於Python中的Java''b''和''c''是字符串在Java中它們是char文字,字符串文字必須是雙引號'''''' –