簡體   English   中英

為什么整數和字符串的連接表現出這樣的行為?

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

這就是為什么

  • 加50和40得到90
  • 將90和“ Hello”相加得到“ 90Hello”
  • 添加“ 90Hello”和50以產生“ 90Hello50”
  • 將“ 90Hello50”和50相加得到“ 90Hello5050”

通常,當您具有可以應用於String的二進制運算(在這種情況下為“ +”)並且計算涉及String ,另一個操作數也將轉換為String

因為Java將從左到右連接您的字符串。 它將彼此相加50和40,因為它們是int ,然后將其連接到“ hello”字符串,結果是str因為intstr將是str輸出。 然后“ 90hello”為str ,它將與50的int接觸,如我所說,結果將為str並繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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