logo

Javaの静的キーワード

  1. 静的変数
  2. 静的変数を使用しないカウンタのプログラム
  3. 静的変数を使用したカウンタのプログラム
  4. 静的メソッド
  5. 静的メソッドの制限事項
  6. main メソッドが静的なのはなぜですか?
  7. 静的ブロック
  8. mainメソッドなしでプログラムを実行できますか?

静的キーワードジャワ 主にメモリ管理に使用されます。静的キーワードを適用するには、 変数 、メソッド、ブロック、 入れ子になったクラス 。 static キーワードは、クラスのインスタンスではなくクラスに属します。

ジャワペア

静的なものは次のとおりです。

  1. 変数 (クラス変数とも呼ばれます)
  2. メソッド (クラスメソッドとも呼ばれます)
  3. ブロック
  4. 入れ子になったクラス
Javaの静的

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 つの制限があります。彼らです:

  1. 静的メソッドでは、非静的データ メンバーを使用したり、非静的メソッドを直接呼び出すことはできません。
  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