2016-10-22 6 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(); 
    } 
} 
t1
+0

あなたはどう思いますか?何が静的になるのでしょうか? – assylias

+0

[Java 'static'](https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) - クラスメンバーの理解 – nbrooks

+0

staticキーワード。 –

答えて

0

ローカル変数であり、静的変数/フィールドは、独立して、メソッド実行の存在している間、彼らは方法の範囲に住んでいるので、ローカル変数は静的ではありません。


静的変数/フィールドはメソッド外で宣言する必要があります。

-1

スタティックコンテキスト内には存在しますが、スタティックではありません。 static記述子は、クラスレベルのエンティティにのみ適用されます。あなたはEasyMath.PIを使用して、直接PIの値を参照します

class EasyMath { 
    public static final double PI = 3.17; 

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

:このクラス(のjava.lang.Mathクラスに建てられたの簡易版)を考えてみましょう。これはクラス変数です。これはクラスのインスタンスではなく、EasyMathクラスに直接属します。

同様に、quadrupleメソッドもクラスから参照してください:EasyMath.quadruple(6)。これはメソッドが静的なため、クラスに直接属しているからです。

quadrupleメソッドでは、numという名前のローカル変数が定義されています。ただし、EasyMath.numを使用して参照することはできません。それはクラスに属していません。

これは静的なquadrupleメソッドにローカルスコープであるため、そのメソッドでのみ使用できます。別の静的メソッドは、それを見たり参照したりすることができません。同様に、インスタンスメソッドがあった場合でも、それを見ることはできません。ローカル変数は決して静的ではありません。

+0

メソッドローカルコンテキスト内にのみ存在します。 – EJP

+0

@EJPコンテキストはまだ静的です。変数のスコープはローカルです。たとえば、そのメソッド内からインスタンス変数にアクセスしようとすると、Javaは静的コンテキスト*から非静的変数にアクセスすることに不満を持ちます。 'main'メソッドの中でコンテキストは静的です。 – nbrooks

関連する問題