int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);
接收奇怪接收的輸出是差異和INT由parseInt函數在Java
1 121
我不能找出這一基本差別。請幫幫我。
int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);
接收奇怪接收的輸出是差異和INT由parseInt函數在Java
1 121
我不能找出這一基本差別。請幫幫我。
使用括號如下
System.out.println((i+1) + " " + (j+1));
從docs
+運算在語法上是左結合,不管它是否 由類型的分析後確定爲表示字符串連接 或加成。在某些情況下,需要注意獲得理想的結果。 例如,表達式:
A + B + C始終被看作含義:(A + B)+ C
擴展這對你的場景
i+1 + " " + j+1
變得
(((i + 1) + " ") + j)+1
由於i
是一個int因此(i + 1) = 1
,簡單的另外
" "
是String
因此((i + 1) + " ")
= 1
使用Space(字符串級聯)
類似地,當j
和最後1
加入,其被添加到String
因此String
級聯取地方,這證明你得到的輸出。
見
int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + (j+1));
基本上當你把+ 「」 +後,這個Java只是追加值的字符串。
當你把(j + 1)放在方括號中時,它的優先級會變高,並且它首先執行並執行求和運算。
那就是" "
。
每當一個字符串到來時,java並沒有做任何計算後,只是將其附加爲字符串。
所以在你的情況下,i+1
計算爲1
,但" " + j+1
有字符串在其中。因此,它只是附加在一起形成121
您看到此行爲的原因是+
運算符的順序從左到右進行計算。從而如果括號被評價:
System.out.println((((i + 1) + " ") + j) + 1);
的第一操作員將兩個int
值併產生int
值。接下來的+
將int
添加到String
併產生String
。之後,一切都是字符串連接。你可以引入你自己的圓括號來得到你想要的結果。
+1。最佳答案。 –
是的+1,這的確是最好的答案 – mprabhat
當您使用" "
之後的表達式被評估爲字符串。
使用括號(
和)
圍繞一個表達式可以解決手頭的問題。
System.out.println(i+1 + " " + (j+1));
+
運算符重載加法和字符串連接你在做什麼是字符串連接,而不是加法。對於執行除了使用括號。
parseint基本上會返回int(查看Java API),並且在Java中只有一個int類型。在這個例子中你使用了「」,其中java將它視爲字符串。在任何操作中,確保你不要混淆字符串與計算。始終使用括號將字符串從計算中分離出來。
這是因爲在+運營商已經離開關聯,並與琴絃的重載函數,所以當你有這樣的
int i = 0; int k = Integer.parseInt("12"); int j = k; i+1 + " " + j+1
首先款項 i + 1
這使得1,那麼它總結1 + " "
,它使用它的重載函數連接1和「」,所以它給出了一個值爲「1」的字符串。之後,它總結了"1 " + j
,並且由於其中一個操作數是一個字符串,它會執行相同的操作,依此類推。
Interger.parseInt(String str)是一個包裝類方法,用於將String obj類型轉換爲基本數據類型(int)。這通常用於收集框架工作,用於將原始數據類型轉換爲對象,反之亦然
非常感謝..不知道.. – sachinjain024
他是要求區別 –
不客氣,另請參閱我添加的鏈接在答案 –