2014-09-06 29 views
-4

請有人解釋代碼的(「x =」+ x)部分。Java中的「+」運算符是做什麼的?

public class While-With-Nested-If { 
    public static void main(String [] args) { 
    int x = 1; 
    while(x < 100) { 
     System.out.println("x = " + x); 
     if(x % 2 == 0) { 
     x++; 
     } else { 
     x *= 2; 
     } 
    } 
    } 
} 
+4

[「連接兩個字符串「](http://docs.oracle.com/javase/tutorial/java/data/strings.html) - 跟着一本書/教程,還有很多要學習的東西。 – user2864740 2014-09-06 06:49:00

+0

[這是它的工作原理](http://codeinventions.blogspot.com/2014/08/compiler-version-string-concatenation.html) – 2014-09-06 06:50:14

+1

您的班級名稱不是有效的標識符。因此'(「x =」+ x)'與代碼的其餘部分完全相同,即沒有(因爲它不編譯)。 – fabian 2014-09-06 10:15:21

回答

0

「+」運算符在字符串操作方面作爲串聯運算符的語法糖。

+0

請解釋一下。我一直認爲'+'運算符是連接運算符。另外AFAIK它是編譯時發生串聯的唯一方式(常量表達式連接)。因此,寫一點比「它是句法糖」更好。 – fabian 2014-09-06 10:28:31

+0

一元+強制原語和類如整數轉換爲字符串。這意味着您可以付出努力:「示例:2 +」.concat(new Integer(3).toString())寫入字符串「Example:2 + 3」。但是,您可以簡單地使用+運算符,「示例:2 +」+ 3,它是等效的簡寫形式。你對'+'運算符的描述是正確的,我只想補充一點,就像在這種情況下一樣,語法糖用於描述添加到語言中的語法,以方便使用並限制重複量。如果您有任何其他問題,請讓我知道! – 2014-09-06 22:06:16

1

在這種情況下,運算符用於連接字符串與x的字符串表示形式。

1

在這種情況下,它將String與字符串表示x連接起來。例如:x = 42;

0

它用於連接你的情況下的兩個字符串。

當你寫

String a = b + c + d; 

然後被轉換成:

String a = new StringBuilder(b).append(c).append(d).toString(); 

你可以參考Oracle docs更多細節

0

+運算符連接,如果操作數的類型爲字符串,如果操作數是int s,float s或double s。

這是輸出: X = 1,X = 2,X = 3,X = 6,X = 7,X = 14,X = 15,X = 30,X = 31,X = 62 ,X = 63 ...

+0

我想添加'long'。 – Unihedron 2014-09-06 06:53:02

1

它取決於操作數類型。

對於String類型操作數,它會創建一個新的String實例(String對象是不可變的),併爲其分配兩個操作數的串聯。

對於數字類型,它用作加法運算符。

+1

+1,這裏最好的答案,謝謝!我甚至忘記它創建了一個新的字符串實例 – 2014-09-06 07:05:42

0

在該代碼塊while循環將迭代直到x期間「while」循環執行使用System.out.println("x = " + x);是爲了打印的x所有值小於100

這裏的Java將其追加到"x = "字符串(文本)的x每個值發送到輸出控制檯等while循環的每個迭代,你會得到控制檯輸出像

x = 1 
x = 2 
x = 3 

and so on... 

x = 99 
+0

儘管前3行是正確的,但最後一行肯定不是,因爲最後打印的數字是63,而不是99.循環在遞增'x'和乘以'x '用2。 – fabian 2014-09-06 10:19:56