我很好奇Java中的關鍵字。什麼是Java中的關鍵字?
我應該理解它作爲一類用戶定義類的每個實例創建的各種方法,比如最終的「超級」類嗎?它在Java中如何定義?
因此,例如,我碰到這樣的:
class A {
class B {}
}
A a = new A();
B b = a.new B();
這似乎是每個類都有關鍵字new
作爲自己的方法。我很感謝關於如何在Java中定義/實現關鍵字的任何見解。
我很好奇Java中的關鍵字。什麼是Java中的關鍵字?
我應該理解它作爲一類用戶定義類的每個實例創建的各種方法,比如最終的「超級」類嗎?它在Java中如何定義?
因此,例如,我碰到這樣的:
class A {
class B {}
}
A a = new A();
B b = a.new B();
這似乎是每個類都有關鍵字new
作爲自己的方法。我很感謝關於如何在Java中定義/實現關鍵字的任何見解。
類沒有關鍵字「新」作爲個人方法或類似的東西。 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)的(因爲它是與外類的實例相關聯)。
作爲所有的語言,Java都有關鍵字。這裏new關鍵字用於初始化目的。類A的對象在第一個語句中初始化。在第二個語句中,類B的對象被初始化爲類A的對象A
我不認爲這個答案是特別清楚或有幫助的。問題的關鍵是'B'是一個內部類,只存在於'A'的一個實例中 - 這就是爲什麼需要奇怪的構造函數語法。我不認爲這個答案充分解釋了這一點。 – 2014-10-04 15:40:41
你在那裏......對不起,鮑西斯 – 2014-10-04 15:43:32
最簡單的關鍵詞是the predefined words which have some predefined specific meaning and cannot be used for any other purpose
。
Check full list of keywords in Java
我們細說這件事我會拿兩個關鍵字,int
和float
的例子。一個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的對象。
它們由Java語言規範定義。 – 2014-10-04 15:35:18
這個問題太廣泛了。如果想知道爲什麼你需要調用'a.new B()',那麼這是關於內部類的問題,只需閱讀它們即可。關於Java關鍵字及其實現的一般問題太廣泛了。 – 2014-10-04 15:35:24
http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html - 所有'Java'關鍵字列表。 – Tirath 2014-10-04 15:39:45