Java-variable-types

提供:Dev Guides
移動先:案内検索

Java-変数タイプ

変数は、プログラムが操作できる名前付きストレージを提供します。 Javaの各変数には特定のタイプがあり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。

すべての変数を使用する前に宣言する必要があります。 以下は、変数宣言の基本的な形式です-

data type variable [ = value][, variable [ = value] ...] ;

ここで、_data type_はJavaのデータ型の1つであり、_variable_は変数の名前です。 指定されたタイプの複数の変数を宣言するには、コンマ区切りリストを使用できます。

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種類の変数があります-

  • ローカル変数
  • インスタンス変数
  • クラス/静的変数

ローカル変数

  • ローカル変数は、メソッド、コンストラクター、またはブロックで宣言されます。
  • ローカル変数は、メソッド、コンストラクター、またはブロックに入ると作成され、メソッド、コンストラクター、またはブロックを出ると変数は破棄されます。
  • ローカル変数にはアクセス修飾子を使用できません。
  • ローカル変数は、宣言されたメソッド、コンストラクター、またはブロック内でのみ表示されます。
  • ローカル変数は、内部的にスタックレベルで実装されます。
  • ローカル変数にはデフォルト値がないため、最初に使用する前にローカル変数を宣言し、初期値を割り当てる必要があります。

ここで、_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 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_を呼び出してアクセスできます。
  • クラス変数をpublic static 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.DEPARTMENTとしてアクセスされる必要があります

次は何ですか?

この章ではすでにアクセス修飾子(パブリックおよびプライベート)を使用しています。 次の章では、アクセス修飾子と非アクセス修飾子について詳しく説明します。