English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
静态成员(メソッド)/変数(フィールド)はそのクラスに属し、そのクラスとともにメモリにロードされます。オブジェクトを作成しなくても呼び出すことができます。(クラス名を使用して参照)。クラス全体で静态フィールドのコピーが1つだけあり、つまり、静态フィールドの値はすべてのオブジェクトで同じです。staticキーワードを使用して静态フィールドを定義できます。
public class Sample{ static int num = 50; public static void demo(){ System.out.println("Value of num in the demo method ")+ Sample.num); } } public class Demo{ public static void main(String args[]){ System.out.println("Value of num in the main method ")+ Sample.num); Sample.demo(); } }
出力結果
Value of num in the main method 50 demoメソッドでのnumの値 50
如果要引用一个类本身的静态成员(在同一类中),则无需引用该类,则可以直接访问静态成员。
public class Sample{ static int num = 50; public static void demo(){ System.out.println("Value of num in the demo method ")+ Sample.num); } public static void main(String args[]){ demo(); System.out.println(num); } }
出力結果
demoメソッドでのnumの値 50
Javaでは、クラス内にクラスを含めることができます。これらは内部クラスと呼ばれます。
public class Outer{ public class Inner{ } }
別のクラスにクラスを持っている場合、それは外部クラスのインスタンスメンバーとして機能します。したがって、内部クラスを静的に宣言すると、その名前を使用してメンバー(内部クラス)にアクセスできます。-
outer_class_name.inner_class_name.members
class OuterDemo { static int data = 200; static class InnerDemo { public static void my_method() { System.out.println("This is my nested class"); System.out.println(OuterDemo.data); } } } public class StaticClassExample{ public static void main(String args[]) { System.out.println(OuterDemo.data); //ネストされたOuter.InnerDemo =新しいOuter.InnerDemo(); OuterDemo.InnerDemo.my_method(); } }
出力結果
200 This is my nested class 200
静态内部クラスの(静态)メンバーを参照しようとするとき、外部クラスの名前を使用する必要はありません。内部クラスの名前のみでメンバーを参照できます。
class OuterDemo { static int data = 200; static class InnerDemo { public static void my_method() { System.out.println("This is my nested class"); System.out.println(OuterDemo.data); } } public static void main(String args[]) { System.out.println(data); InnerDemo.my_method(); } }
出力結果
200 This is my nested class 200