- 静的変数
- 静的変数を使用しないカウンタのプログラム
- 静的変数を使用したカウンタのプログラム
- 静的メソッド
- 静的メソッドの制限事項
- main メソッドが静的なのはなぜですか?
- 静的ブロック
- mainメソッドなしでプログラムを実行できますか?
の 静的キーワード で ジャワ 主にメモリ管理に使用されます。静的キーワードを適用するには、 変数 、メソッド、ブロック、 入れ子になったクラス 。 static キーワードは、クラスのインスタンスではなくクラスに属します。
ジャワペア
静的なものは次のとおりです。
- 変数 (クラス変数とも呼ばれます)
- メソッド (クラスメソッドとも呼ばれます)
- ブロック
- 入れ子になったクラス
1) Java 静的変数
変数を静的として宣言すると、その変数は静的変数と呼ばれます。
- 静的変数は、従業員の会社名、学生の大学名など、すべてのオブジェクトの共通プロパティ (オブジェクトごとに一意ではない) を参照するために使用できます。
- 静的変数は、クラスロード時にクラス領域内で 1 回だけメモリを取得します。
静的変数の利点
それはあなたのプログラムを作ります メモリ効率が良い (つまり、メモリが節約されます)。
静的変数を使用しない問題を理解する
class Student{ int rollno; String name; String college='ITS'; }
私の大学に 500 人の学生がいると仮定すると、オブジェクトが作成されるたびに、すべてのインスタンス データ メンバーがメモリを取得することになります。すべての学生は固有のロール番号と名前を持っているため、そのような場合にはインスタンス データ メンバーが適しています。ここで「大学」とは全員の共有財産を指します。 オブジェクト 。静的にすると、このフィールドは 1 回だけメモリを取得します。
Java の静的プロパティはすべてのオブジェクトで共有されます。
静的変数の例
//Java Program to demonstrate the use of static variable class Student{ int rollno;//instance variable String name; static String college ='ITS';//static variable //constructor Student(int r, String n){ rollno = r; name = n; } //method to display the values void display (){System.out.println(rollno+' '+name+' '+college);} } //Test class to show the values of objects public class TestStaticVariable1{ public static void main(String args[]){ Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); //we can change the college of all objects by the single line of code //Student.college='BBDIT'; s1.display(); s2.display(); } }今すぐテストしてください
出力:
111 Karan ITS 222 Aryan ITS
静的変数を使用しないカウンタのプログラム
この例では、コンストラクター内でインクリメントされる count という名前のインスタンス変数を作成しました。インスタンス変数はオブジェクト作成時にメモリを取得するため、各オブジェクトにはインスタンス変数のコピーが存在します。増加すると、他のオブジェクトは反映されなくなります。したがって、各オブジェクトの count 変数の値は 1 になります。
Javaでスローを投げる
//Java Program to demonstrate the use of an instance variable //which get memory each time when we create an object of the class. class Counter{ int count=0;//will get memory each time when the instance is created Counter(){ count++;//incrementing value System.out.println(count); } public static void main(String args[]){ //Creating objects Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } }今すぐテストしてください
出力:
1 1 1
静的変数によるカウンタのプログラム
上で述べたように、静的変数は一度だけメモリを取得し、オブジェクトが静的変数の値を変更しても、その値は保持されます。
//Java Program to illustrate the use of static variable which //is shared with all objects. class Counter2{ static int count=0;//will get memory only once and retain its value Counter2(){ count++;//incrementing the value of static variable System.out.println(count); } public static void main(String args[]){ //creating objects Counter2 c1=new Counter2(); Counter2 c2=new Counter2(); Counter2 c3=new Counter2(); } }今すぐテストしてください
出力:
パンダとナンピー
1 2 3
2) Java 静的メソッド
何らかのメソッドに static キーワードを適用した場合、それは static メソッドと呼ばれます。
- 静的メソッドは、クラスのオブジェクトではなくクラスに属します。
- 静的メソッドは、クラスのインスタンスを作成しなくても呼び出すことができます。
- 静的メソッドは、静的データ メンバーにアクセスし、その値を変更できます。
静的メソッドの例
//Java Program to demonstrate the use of a static method. class Student{ int rollno; String name; static String college = 'ITS'; //static method to change the value of static variable static void change(){ college = 'BBDIT'; } //constructor to initialize the variable Student(int r, String n){ rollno = r; name = n; } //method to display values void display(){System.out.println(rollno+' '+name+' '+college);} } //Test class to create and display the values of object public class TestStaticMethod{ public static void main(String args[]){ Student.change();//calling change method //creating objects Student s1 = new Student(111,'Karan'); Student s2 = new Student(222,'Aryan'); Student s3 = new Student(333,'Sonoo'); //calling display method s1.display(); s2.display(); s3.display(); } }今すぐテストしてください
Output:111 Karan BBDIT 222 Aryan BBDIT 333 Sonoo BBDIT
通常の計算を実行する静的メソッドの別の例
//Java Program to get the cube of a given number using the static method class Calculate{ static int cube(int x){ return x*x*x; } public static void main(String args[]){ int result=Calculate.cube(5); System.out.println(result); } }今すぐテストしてください
Output:125
静的メソッドの制限事項
静的メソッドには主に 2 つの制限があります。彼らです:
- 静的メソッドでは、非静的データ メンバーを使用したり、非静的メソッドを直接呼び出すことはできません。
- this と super は静的コンテキストでは使用できません。
class A{ int a=40;//non static public static void main(String args[]){ System.out.println(a); } }今すぐテストしてください
Output:Compile Time Error
Q) Java の main メソッドはなぜ静的ですか?
回答)オブジェクトが静的メソッドを呼び出す必要がないためです。非静的メソッドであれば、 JVM 最初にオブジェクトを作成してから main() メソッドを呼び出すと、余分なメモリ割り当ての問題が発生します。
3) Java 静的ブロック
- 静的データメンバーを初期化するために使用されます。
- クラスロード時にmainメソッドの前に実行されます。
静的ブロックの例
class A2{ static{System.out.println('static block is invoked');} public static void main(String args[]){ System.out.println('Hello main'); } }今すぐテストしてください
Output:static block is invoked Hello main
Q) main() メソッドなしでプログラムを実行できますか?
回答) いいえ、方法の 1 つは静的ブロックでしたが、JDK 1.6 までは可能でした。 JDK 1.7 以降、 メインメソッド 。
データ構造内の構造
class A3{ static{ System.out.println('static block is invoked'); System.exit(0); } }今すぐテストしてください
出力:
static block is invoked
JDK 1.7 以降では、出力は次のようになります。
Error: Main method not found in class A3, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application