簡體   English   中英

在 Java 中將字符串添加到 int 時會得到什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM