[英]Why does a concatenation of integers and strings behave like this?
這段代碼:
public void main(String[] args)
{
String s1 = 50+40+"Hello"+50+50;
System.out.println(s1);
}
輸出為: 90Hello5050
為什么?
這只是優先級和關聯性的問題。 您的代碼等效於:
String s1 = (((50 + 40) + "Hello") + 50) + 50;
所以那是:
String s1 = ((90 + "Hello") + 50) + 50;
這是:
String s1 = ("90Hello" + 50) + 50;
這是:
String s1 = "90Hello50" + 50;
這是:
String s1 = "90Hello5050";
如果您想要90Hello100
,則應使用方括號將其明確顯示。 我將其寫為:
String s1 = (50 + 40) + "Hello" + (50 + 50);
根據Java語言規范的第15.7節“評估順序” ,Java中的運算符從左到右進行評估。
這意味着您的串聯被評估為與
String s1 = (((50+40)+"Hello")+50)+50;
這就是為什么
通常,當您具有可以應用於String
的二進制運算(在這種情況下為“ +”)並且計算涉及String
,另一個操作數也將轉換為String
。
因為Java將從左到右連接您的字符串。 它將彼此相加50和40,因為它們是int
,然后將其連接到“ hello”字符串,結果是str
因為int
和str
將是str
輸出。 然后“ 90hello”為str
,它將與50的int
接觸,如我所說,結果將為str
並繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.