![](/img/trans.png)
[英]Why is windows displaying a question mark on system.out.print in java?
[英]question about operator in java with System.out.print
誰能告訴我區別和為什么??????? 我有一個例子:
int a = 2;
int b = 7;
System.out.println(a+b);
System.out.println(a+b+"String");
System.out.println("String"+a+b+"String");
System.out.println(a+b+"String"+a+b+"String");
System.out.println("String"+a+b+"String"+a+b);
output
9
9String
String27String
9String27String
String27String27
要了解發生了什么,請考慮 Java 中的這些表達式是左關聯的。 int
+ int
相加的結果是兩個值的算術和。 將int
與String
相加的結果相當於將int
轉換為其String
表示,然后在兩個String
之間執行+
操作,將兩個值連接起來。 因此,
a+b+"String"` => (a + b) + "String"
=> (2 + 7) + "String"
=> 9 + "String"
=> "9String"
a+b+"String"+a+b+"String"` => ((((a + b) + "String") + a) + b) + "String"
=> ((((2 + 7) + "String") + 2) + 7) + "String"
=> (((9 + "String") + 2) + 7) + "String"
=> (("9String" + 2) + 7) + "String"
=> ("9String2" + 7) + "String"
=> "9String27" + "String"
=> "9String27String"
確定+
是表示加法還是串聯的過程:
將標准運算符優先級規則應用於表達式以計算應用運算符的順序。
檢查每個+
。 如果+
左操作數表達式和右操作數表達式都是原始或包裝數字,則+
是加法。 否則它是字符串連接。
例子:
應用優先規則
a+b+"String"+a+b+"String"
意味着它等價於
((((a+b)+"String")+a)+b)+"String"
然后:
a+b
是加法(a+b)+"String")
是串聯((a+b)+"String")+a
是串聯(((a+b)+"String")+a)+b
是串聯((((a+b)+"String")+a)+b)+"String"
是串聯這與您為該案例獲得的輸出9String27String
相匹配。
編碼
System.out.println("String"+a+b+"String");
假設您要進行String
連接。
你可以做
System.out.println("String"+(a+b)+"String");
或者
System.out.printf("String%dString%n", a+b);
在 Java 中,加號可用於執行算術加法。
它還可以用於連接字符串。 當以這種方式使用加號時,右邊的操作數在與左邊的操作數連接之前會自動轉換為字符串。
你最好檢查java規范中的String Concatenation Operator + ,你會看到下面的說明,這會給你答案
請先理解字符串中“+”的含義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.