Java変数の型


Java言語では、すべての変数は使用前に宣言する必要があります。変数を宣言するための基本的な形式は次のとおりです:

type identifier [ = value][, identifier [= value] ...] ;

形式の説明: type は Java データ型です。識別子は変数名です。同じ型の複数の変数をカンマで区切って宣言できます。

以下に変数宣言の例をいくつか示します。初期化処理が含まれるものもありますのでご注意ください。

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "php"  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

Java 言語でサポートされている変数の型は次のとおりです:

  • ローカル変数

  • メンバー変数

  • クラス変数


Java ローカル変数

  • ローカル変数はメソッド、コンストラクター、またはステートメント ブロックで宣言されます

  • ローカル変数は、メソッド、コンストラクター、またはステートメント ブロックの実行時に作成され、実行されると、変数は破棄されます。 アクセス修飾子はローカル変数には使用できません

  • ローカル変数は、それが宣言されているメソッド、コンストラクター、またはステートメント ブロック内でのみ表示されます

  • ローカル変数はスタック上に割り当てられます。

  • ローカル変数にはデフォルト値がないため、ローカル変数を宣言した後、使用する前に初期化する必要があります。

  • 例 1

  • 次の例では、年齢はローカル変数です。これは pubAge() メソッドで定義されており、その範囲はこのメソッドに限定されます。
package com.php.test;

public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("小狗的年龄是: " + age);
   }
   
   public static void main(String args[]){
      Test test = new Test();
      test.pupAge();
   }
}

上記の例のコンパイルと実行結果は次のとおりです:

小狗的年龄是: 7

例 2

次の例では、age 変数が初期化されていないため、コンパイル中にエラーが発生します:

public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("小狗的年龄是 : " + 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

インスタンス変数


インスタンス変数はクラス内で宣言されますが、メソッド、コンストラクター、ステートメント ブロックの外で宣言されます

  • オブジェクトがインスタンス化されると、各インスタンス変数の値が決定されます

  • インスタンス変数はオブジェクトの作成時に作成され、オブジェクトの破棄時に破棄されます

  • インスタンス変数の値は、外部がこれらのメソッドを通じてインスタンス変数情報を取得できるように、少なくとも 1 つのメソッド、コンストラクター、またはステートメント ブロックによって参照される必要があります。 インスタンス変数は使用前でも使用後でも宣言できます。

  • アクセス修飾子はインスタンス変数を変更できます

  • インスタンス変数は、クラス内のメソッド、コンストラクター、またはステートメント ブロックから参照できます。一般に、インスタンス変数はプライベートにする必要があります。インスタンス変数は、アクセス修飾子

  • を使用してサブクラスから見えるようにすることができます。 インスタンス変数にはデフォルト値があります。数値変数のデフォルト値は 0、ブール変数のデフォルト値は false、参照変数のデフォルト値は null です。変数の値は、宣言時またはコンストラクターで指定できます

  • インスタンス変数には、変数名を介して直接アクセスできます。ただし、静的メソッドやその他のクラスでは、完全修飾名 ObjectReference.VariableName を使用する必要があります。

例:

import java.io.*;
public class Employee{
   // 这个成员变量对子类可见
   public String name;
   // 私有变量,仅在该类可见
   private double salary;
   //在构造器中对name赋值
   public Employee (String empName){
      name = empName;
   }
   //设定salary的值
   public void setSalary(double empSal){
      salary = empSal;
   }  
   // 打印信息
   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 つだけあります。

  • 静的変数は、定数として宣言される場合を除いて、ほとんど使用されません。定数は、パブリック/プライベート、最終型、および静的型として宣言された変数を指します。初期化後に定数を変更することはできません。

  • 静的変数は静的記憶領域に格納されます。変数は定数として宣言されることがよくありますが、static のみを使用して宣言されることはほとんどありません。

  • 静的変数はプログラムの開始時に作成され、プログラムの終了時に破棄されます。

  • インスタンス変数と同様の可視性があります。ただし、クラスのユーザーに見えるようにするために、ほとんどの静的変数はパブリック型として宣言されます。

  • デフォルト値はインスタンス変数と似ています。数値変数のデフォルト値は 0、ブール変数のデフォルト値は false、参照型のデフォルト値は null です。変数の値は、変数の宣言時またはコンストラクターで指定できます。さらに、静的変数は静的ステートメント ブロックで初期化することもできます。

  • 静的変数には、ClassName.VariableName を通じてアクセスできます。

  • クラス変数が public static Final 型として宣言されている場合、クラス変数名には大文字を使用する必要があります。静的変数が public 型または Final 型でない場合、その命名方法はインスタンス変数およびローカル変数の命名方法と一致します。

例:

import java.io.*;
public class Employee {
    //salary是静态的私有变量
    private static double salary;
    // DEPARTMENT是一个常量
    public static final String DEPARTMENT = "开发人员";
    public static void main(String args[]){
    salary = 10000;
        System.out.println(DEPARTMENT+"平均工资:"+salary);
    }
}

上記の例のコンパイル結果と実行結果は次のとおりです:

开发人员平均工资:10000.0

注:他のクラスがこの変数にアクセスしたい場合は、次のようにアクセスできます:Employee.DEPARTMENT

この章では Java 変数の型について学び、次の章では Java 修飾子の使用法を紹介します。