Java-変数タイプ
変数は、プログラムが操作できる名前付きストレージを提供します。Javaの各変数には特定のタイプがあり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。
使用する前に、すべての変数を宣言する必要があります。以下は、変数宣言の基本的な形式です。
data type variable [ = value][, variable [ = value] ...] ;
ここで、データ型はJavaのデータ型の1つであり、変数は変数の名前です。指定されたタイプの複数の変数を宣言するには、コンマ区切りのリストを使用できます。
以下は、Javaでの変数宣言と初期化の有効な例です。
例
int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte 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種類の変数があります-
- ローカル変数
- インスタンス変数
- クラス/静的変数
ローカル変数
ローカル変数は、メソッド、コンストラクター、またはブロックで宣言されます。
ローカル変数は、メソッド、コンストラクター、またはブロックに入ると作成され、メソッド、コンストラクター、またはブロックを出ると変数は破棄されます。
アクセス修飾子はローカル変数には使用できません。
ローカル変数は、宣言されたメソッド、コンストラクター、またはブロック内でのみ表示されます。
ローカル変数は、内部的にスタックレベルで実装されます。
ローカル変数にはデフォルト値がないため、最初に使用する前にローカル変数を宣言し、初期値を割り当てる必要があります。
例
ここで、年齢はローカル変数です。これは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 initialized
age = age + 7;
^
1 error
インスタンス変数
インスタンス変数はクラス内で宣言されますが、メソッド、コンストラクター、または任意のブロックの外部で宣言されます。
ヒープ内のオブジェクトにスペースが割り当てられると、インスタンス変数値ごとにスロットが作成されます。
インスタンス変数は、キーワード「new」を使用してオブジェクトが作成されるときに作成され、オブジェクトが破棄されると破棄されます。
インスタンス変数は、複数のメソッド、コンストラクター、ブロック、またはクラス全体に存在する必要があるオブジェクトの状態の重要な部分によって参照される必要がある値を保持します。
インスタンス変数は、使用前または使用後にクラスレベルで宣言できます。
インスタンス変数にアクセス修飾子を指定できます。
インスタンス変数は、クラス内のすべてのメソッド、コンストラクター、およびブロックで表示されます。通常、これらの変数をプライベート(アクセスレベル)にすることをお勧めします。ただし、アクセス修飾子を使用して、これらの変数にサブクラスの可視性を与えることができます。
インスタンス変数にはデフォルト値があります。数値の場合、デフォルト値は0、ブール値の場合はfalse、オブジェクト参照の場合はnullです。値は、宣言中またはコンストラクター内で割り当てることができます。
クラス内で変数名を呼び出すことにより、インスタンス変数に直接アクセスできます。ただし、静的メソッド内(インスタンス変数にアクセシビリティが与えられている場合)では、完全修飾名を使用して呼び出す必要があります。ObjectReference.VariableName。
例
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 : Ransika
salary :1000.0
クラス/静的変数
静的変数とも呼ばれるクラス変数は、クラス内でstaticキーワードを使用して宣言されますが、メソッド、コンストラクター、またはブロックの外部にあります。
作成されるオブジェクトの数に関係なく、クラスごとに各クラス変数のコピーは1つだけです。
静的変数は、定数として宣言される以外に使用されることはめったにありません。定数は、public / private、final、およびstaticとして宣言される変数です。定数変数は初期値から変更されることはありません。
静的変数は静的メモリに保存されます。finalとして宣言され、パブリック定数またはプライベート定数として使用される以外の静的変数を使用することはめったにありません。
静的変数は、プログラムの開始時に作成され、プログラムの停止時に破棄されます。
可視性はインスタンス変数に似ています。ただし、ほとんどの静的変数は、クラスのユーザーが使用できる必要があるため、パブリックとして宣言されています。
デフォルト値はインスタンス変数と同じです。数値の場合、デフォルト値は0です。ブール値の場合、これはfalseです。オブジェクト参照の場合はnullです。値は、宣言中またはコンストラクター内で割り当てることができます。さらに、値は特別な静的初期化ブロックに割り当てることができます。
静的変数には、クラス名ClassName.VariableNameで呼び出すことでアクセスできます。
クラス変数をpublicstatic 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
Note −変数が外部クラスからアクセスされる場合、定数はEmployee.DEPARTMENTとしてアクセスされる必要があります
次は何ですか?
この章では、すでにアクセス修飾子(パブリックおよびプライベート)を使用しています。次の章では、アクセス修飾子と非アクセス修飾子について詳しく説明します。