2016-10-22 136 views
0

t1靜態還是非靜態?是t1靜態還是非靜態?

class Test { 
    void display() { 
     System.out.println("hello"); 
    } 

    public static void main(String a[]) { 
     Test t1 = new Test(); //object created 
     t1.display(); 
    } 
} 
+0

你覺得呢?什麼使靜態的東西? – assylias

+0

[Java'static'](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) - 瞭解類成員 – nbrooks

+0

static關鍵字。 –

回答

0

t1是局部變量並且由於它們居住的方法的範圍內,同時一個靜態變量/場獨立地方法執行的存在局部變量不是一成不變的。


靜態變量/字段必須在方法外部聲明。

-1

它本身並不是靜態的,儘管它僅存在於靜態上下文中。 static描述符只適用於類級實體。考慮這個類(的簡化版本,內置的java.lang.Math類):

class EasyMath { 
    public static final double PI = 3.17; 

    public static int quadruple(int i) { 
     int num = i * 4; 
     return num; 
    } 
} 

您將引用的PI值直接,使用EasyMath.PI。這是一個類變量。它直接屬於EasyMath類,而不屬於類的實例。

同樣,您也可以參考該課程的quadruple方法:EasyMath.quadruple(6)。這是因爲該方法是靜態的,它直接屬於類。

請注意,quadruple方法定義了一個名爲num的局部變量。但是,您無法參考使用EasyMath.num。它不屬於這個班級。

它的本地範圍在靜態quadruple方法中,所以只能在該方法中使用,並且無法在其他位置使用。另一個靜態方法將無法看到它或引用它。同樣,如果有任何實例方法,他們也將無法看到它。局部變量永遠不會是靜態的。

+0

它只存在於方法本地上下文中。 – EJP

+0

@EJP上下文仍然是靜態的,它只是本地變量的作用域。例如,如果您嘗試從該方法中訪問實例變量,則Java會抱怨從* static上下文*訪問非靜態變量。在main方法中,上下文是靜態的。 – nbrooks

相關問題