2013-06-24 30 views
1

我試着寫的是連接兩個字符串,並將它們打印一些瑣碎代碼:命名變量「goto」時出現神祕錯誤?

class A { 
    public static void main(String[] args) { 
     String goto = "jon skeet"; 
     System.out.println("the go-to guy for java questions is " + goto); 
    } 
} 

但它可以讓所有這些錯誤:

$ javac A.java && java A 
A.java:3: not a statement 
     String goto = "jon skeet"; 
     ^
A.java:3: ';' expected 
     String goto = "jon skeet"; 
      ^
A.java:4: illegal start of expression 
     System.out.println("the go-to guy for java questions is " + goto); 
                    ^
A.java:4: ';' expected 
     System.out.println("the go-to guy for java questions is " + goto); 
                     ^
4 errors 

爲什麼?

+4

Goto是一個關鍵字。 –

+2

這在您發佈的代碼中可見,請參閱該詞有不同顏色,用於保留關鍵字:) – CarlosB

回答

9

goto是Java中的保留關鍵字,不能用作變量名稱,儘管它什麼都不做。從JLS 3.9

引用:

50的字符序列,從ASCII字母組成,被保留用作關鍵字,不能用作標識符(§3.8)。

goto是這個名單上)

關鍵字constgoto被保留,即使他們目前尚未使用。如果這些C++關鍵字錯誤地出現在程序中,這可能允許Java編譯器產生更好的錯誤消息。

+0

第二個報價爲+1。這不是原因嗎? –

4

gotoJava's reserved keywords之一,並不能用來作爲變量名,就像privatedoforif,等我附上一個鏈接,那麼請登陸。

goto從來沒有實現任何事情,但仍然保留關鍵字,因爲有可能在未來有時會實現其功能。在語言C和C語言中,goto語句會更改控制流並跳轉到所需的標籤。

8

goto是Java中的reserved word,雖然它不用於任何事情。

+0

+1,以澄清它不能用於任何事情。 – supersam654

+0

我認爲他們只是在開始開發時才保留它,以防他們稍後可能實現轉到goto功能。 –

+3

@André我強烈希望他們不要通過 –

0

goto是一個保留字,這意味着您不能將其用作變量名稱。

下面是保留字

的維基定義在編程語言中,一個保留字(也稱爲保留 標識符)是不能被用作標識符一個字,例如一個 名一個變量或函數或一個標籤;這句法 定義,標識的詞彙語法的一部分

看到這裏http://en.wikipedia.org/wiki/List_of_Java_keywords

+1

錯誤與您的帖子:1)'goto'是單詞,而不是'GoTo'(請參閱您的鏈接以供參考)。 2)你不能。編輯:1)固定,2)固定 – nonchip

+0

更正它。這是錯字:( –

+0

刪除我downvote。只是想確保人們知道這是一個錯字,直到你糾正它。 – nonchip

0

的java的保留字的完整列表,像所有其他Java的保留關鍵字,goto不能用來作爲變量名。

您可以看到所有保留關鍵字here