2014-10-04 102 views
0

我很好奇Java中的關鍵字。什麼是Java中的關鍵字?

我應該理解它作爲一類用戶定義類的每個實例創建的各種方法,比如最終的「超級」類嗎?它在Java中如何定義?

因此,例如,我碰到這樣的:

class A { 
    class B {} 
} 
A a = new A(); 
B b = a.new B(); 

這似乎是每個類都有關鍵字new作爲自己的方法。我很感謝關於如何在Java中定義/實現關鍵字的任何見解。

+0

它們由Java語言規範定義。 – 2014-10-04 15:35:18

+1

這個問題太廣泛了。如果想知道爲什麼你需要調用'a.new B()',那麼這是關於內部類的問題,只需閱讀它們即可。關於Java關鍵字及其實現的一般問題太廣泛了。 – 2014-10-04 15:35:24

+0

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html - 所有'Java'關鍵字列表。 – Tirath 2014-10-04 15:39:45

回答

2

類沒有關鍵字「新」作爲個人方法或類似的東西。 Java語言本身具有關鍵字「new」。換句話說,你在代碼中加入「new」,編譯器會識別它並實例化一個新的Object。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.9-此鏈接是Java語言的文檔,在3.9節中它顯示了所有關鍵字。

編輯: 與其他人一樣在說什麼的代碼在你的問題的片段指示一個內部類,因此,例如,像它說,在http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

public class ShadowTest { 

public int x = 0; 

class FirstLevel { 

    public int x = 1; 

    void methodInFirstLevel(int x) { 
     System.out.println("x = " + x); 
     System.out.println("this.x = " + this.x); 
     System.out.println("ShadowTest.this.x = " + ShadowTest.this.x); 
    } 
} 

public static void main(String... args) { 
    ShadowTest st = new ShadowTest(); 
    ShadowTest.FirstLevel fl = st.new FirstLevel(); 
    fl.methodInFirstLevel(23); 
} 
} 

下面是這個例子的輸出:

x = 23 
this.x = 1 
ShadowTest.this.x = 0 

這表明內部類或B類(FirstLevel)是相同或相似的外部類的變量和方法的類A(ShadowTest)的(因爲它是與外類的實例相關聯)。

0

作爲所有的語言,Java都有關鍵字。這裏new關鍵字用於初始化目的。類A的對象在第一個語句中初始化。在第二個語句中,類B的對象被初始化爲類A的對象A

+0

我不認爲這個答案是特別清楚或有幫助的。問題的關鍵是'B'是一個內部類,只存在於'A'的一個實例中 - 這就是爲什麼需要奇怪的構造函數語法。我不認爲這個答案充分解釋了這一點。 – 2014-10-04 15:40:41

+0

你在那裏......對不起,鮑西斯 – 2014-10-04 15:43:32

0

最簡單的關鍵詞是the predefined words which have some predefined specific meaning and cannot be used for any other purpose

Check full list of keywords in Java

我們細說這件事我會拿兩個關鍵字,intfloat的例子。一個int關鍵字用於定義一個整數變量,這就是關鍵字int可以做的。我們不能將其用於任何其他目的。同樣,float關鍵字可用於定義一個浮點數/十進制數變量,沒有別的。

int a = 10;

予定義的整數類型的變量a

int float = 20; < -----它不起作用。

在這個例子中,我試圖聲明一個名字爲float的整數類型變量,這是不可能的,因爲float它是一個關鍵字,所以它不能用作標識符。

如果我們談論new關鍵字,然後用它來創建的任何類的對象或我會更精確地說,new關鍵字分配內存在運行時的對象。

這是不是就像每個類都有自己的new關鍵字。 new是Java的關鍵字,所以任何Java類都可以使用它。

爲了澄清,

A a = new A(); 
B b = a.new B(); 

在第一條語句,我們正在創建類A的一個對象和作爲B類是嵌套類類A的,所以我們不能直接訪問它。爲了訪問它,我們使用了我們已經構建的類A的對象。