変数は、プログラムが操作できる名前付きストレージを提供します。 Javaの各変数には特定の型があり、変数のメモリのサイズとレイアウト、そのメモリ内に格納できる値の範囲、および変数に適用できる一連の操作が決使用するには、すべての変数を宣言する必要があります。
使用する前に、すべての変数を宣言する必要があります。 変数宣言の基本的な形式は次のとおりです-
data type variable ...] ;
ここで、データ型はJavaのデータ型の1つであり、variableは変数の名前です。 指定した型の複数の変数を宣言するには、コンマ区切りのリストを使用できます。
以下は、javaでの変数宣言と初期化の有効な例です−
例
int a, b, c; // Declares three ints, a, b, and c.int a = 10, b = 10; // Example of initializationbyte B = 22; // initializes a byte type variable B.double pi = 3.14159; // declares and assigns a value of PI.char a = 'a'; // the char variable a iis initialized with value 'a'
この章では、Java言語で利用可能なさまざまな変数型を説明します。 Javaには3種類の変数があります−
- ローカル変数
- インスタンス変数
- クラス/静的変数
ローカル変数
-
ローカル変数はメソッド、コンストラクタ、またはブロックで宣言されています。
-
ローカル変数は、メソッド、コンストラクタ、またはブロックが入力されたときに作成され、変数はメソッド、コンストラクタ、またはブロックを出
-
アクセス修飾子はローカル変数には使用できません。
-
ローカル変数は、宣言されたメソッド、コンストラクタ、またはブロック内でのみ表示されます。
-
ローカル変数は、内部的にスタックレベルで実装されます。
-
ローカル変数にはデフォルト値がないため、ローカル変数を宣言し、最初の使用前に初期値を割り当てる必要があります。
例
ここで、ageはローカル変数です。 これはpupAge()メソッド内で定義されており、そのスコープはこのメソッドのみに制限されています。
public class Test { public void pupAge() { int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args) { Test test = new Test(); test.pupAge(); }}
これは次の結果を生成します−
出力
Puppy age is: 7
例
次の例では、初期化せずにageを使用しているため、コンパイル時にエラー
public class Test { public void pupAge() { int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args) { Test test = new Test(); test.pupAge(); }}
これは、コンパイル中に次のエラーが生成されます−
出力
Test.java:4:variable number might not have been initializedage = age + 7; ^1 error
インスタンス変数
-
インスタンス変数は、クラス内で宣言されていますが、メソッド、コンストラクタ、または任意のブロックの外側にあります。
-
ヒープ内のオブジェクトにスペースが割り当てられると、各インスタンス変数値のスロットが作成されます。インスタンス変数は、キーワード’new’を使用してオブジェクトが作成されたときに作成され、オブジェクトが破棄されたときに破棄されます。
-
インスタンス変数は、複数のメソッド、コンストラクタ、ブロック、またはクラス全体に存在する必要があるオブジェクトの状態の重要な部分インスタンス変数は、使用前または使用後にクラスレベルで宣言できます。
-
インスタンス変数は、使用前または使用後にクラスレベルで宣言インスタンス変数にはアクセス修飾子を与えることができます。
-
アクセス修飾子を指定することができます。
-
インスタンス変数は、クラス内のすべてのメソッド、コンストラクタ、およびブロックで表示されます。 通常は、これらの変数を非公開(アクセスレベル)にすることをお勧めします。 ただし、サブクラスの可視性は、アクセス修飾子を使用してこれらの変数に与えることができます。
-
インスタンス変数にはデフォルト値があります。 数値の場合、デフォルト値は0、ブール値の場合はfalse、オブジェクト参照の場合はnullです。 値は、宣言中またはコンストラクター内で割り当てることができます。
-
インスタンス変数には、クラス内の変数名を呼び出すことで直接アクセスできます。 ただし、静的メソッド内(インスタンス変数にアクセシビリティが与えられている場合)では、完全修飾名を使用して呼び出す必要があります。 ObjectReference。変数名。
例
import java.io.*;public class Employee { // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName) { name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal) { salary = empSal; } // This method prints the employee details. public void printEmp() { System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args) { Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); }}
これは次の結果を生成します−
出力
name : Ransikasalary :1000.0
クラス/静的変数
-
静的変数とも呼ばれるクラス変数は、クラス内でstaticキーワードで宣言されていますが、外部ではstaticキーワードで宣言されています。メソッド、コンストラクタ、またはブロック。
-
作成されたオブジェクトの数に関係なく、クラスごとに各クラス変数のコピーは1つだけです。
-
静的変数は、定数として宣言されている以外はほとんど使用されません。 定数は、public/private、final、およびstaticとして宣言された変数です。 定数変数は決して初期値から変更されません。
-
静的変数は静的メモリに格納されます。 宣言されたfinal以外の静的変数を使用し、publicまたはprivate定数として使用することはまれです。
-
静的変数は、プログラムの起動時に作成され、プログラムの停止時に破棄されます。
-
可視性はインスタンス変数に似ています。 ただし、ほとんどの静的変数は、クラスのユーザーが使用できる必要があるため、publicと宣言されています。
-
デフォルト値はインスタンス変数と同じです。 数値の場合、デフォルト値は0、ブール値の場合はfalse、オブジェクト参照の場合はnullです。 値は、宣言中またはコンストラクター内で割り当てることができます。 さらに、特別な静的初期化子ブロックに値を割り当てることができます。
-
静的変数には、クラス名ClassNameを使用して呼び出すことでアクセスできます。変数名。クラス変数をpublic static finalとして宣言すると、変数名(定数)はすべて大文字になります。 静的変数がpublicおよびfinalでない場合、命名構文はインスタンス変数およびローカル変数と同じになります。
例
import java.io.*;public class Employee { // salary variable is a private static variable private static double salary; // DEPARTMENT is a constant public static final String DEPARTMENT = "Development "; public static void main(String args) { salary = 1000; System.out.println(DEPARTMENT + "average salary:" + salary); }}
これは次の結果を生成します−
出力
Development average salary:1000
注−変数が外部クラスからアクセスされる場合、定数はEmployee部門