[英]What do you get when you add a string to an int in Java?
我正在查看我的一些朋友 Java,他目前正在睡覺。 我的電腦上沒有 JDK,我這輩子也沒接觸過 Java。 這個表達式的校驗和的值是多少?
int score = 15;
String name = "Me";
String checksum = score + name + "salt";
//do stuff
這將是“15Mesalt”
它只是將整數作為數字添加到字符串中,沒有多余的裝飾,沒什么特別的。
in 將轉換為字符串,因此checksum
的值為15Mesalt
。
從關於字符串連接的java Language Specification (15.18.1)開始:
如果只有一個操作數表達式是字符串類型,則在另一個操作數上執行字符串轉換以在運行時生成一個字符串。
您正在連接字符串中的 int。 在字符串連接中 int 轉換為 String。
結果將是
15MEsalt
結果是15Mesalt
。 您正確的變量是String
所以+
運算符聯系到操作數。
+
運算符在語法上是左結合的,無論是通過類型分析確定表示字符串連接還是數字加法。如果+
運算符的任一操作數的類型為 String,則該操作是字符串連接。
所以表達式score + name + "salt"
= "15Mesalt" 的結果;
這是另一個場景:
System.out.println("Hello" + 'a' + 7);
System.out.println('a' + 7 + "Hello");
第一個輸出是Helloa7
,第二個是104Hello
。在第一個語句中,兩個+
運算符都表示字符串連接。
但是對於第二個,由於 + 運算符在語法上是左關聯的,所以首先評估'a'+7
現在它觸發了 java 自動類型提升機制,將'a'
變成其對應的 ASCII 值97
並添加它到7
。所以結果是104
,它是一個 int 值。然后104 + "Hello"
被評估。由於第二個操作數是一個字符串,所以+
運算符現在表示字符串104Hello
。所以結果是104Hello
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.