English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Java フローコントロール

Java 配列

Java オブジェクト指向(I)

Java オブジェクト指向(II)

Java オブジェクト指向(III)

Java 異常処理

Javaリスト(List)

Java Queue(キュー)

Java Map集合

Java Set集合

Java入出力(I/O)

Java Reader/Writer

Javaの他のトピック

Java 変数の型

Java言語では、すべての変数は使用前に宣言する必要があります。変数の宣言の基本的なフォーマットは以下の通りです:

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

フォーマット説明:typeはJavaデータ型です。identifierは変数名です。複数の同種の変数を宣言する場合は、コマ分隔で使用できます。

以下にいくつかの変数の宣言例を挙げます。注意:いくつかは初期化プロセスが含まれています。

int a, b, c;         // 3つのint型整数a、b、cを宣言
int d = 3, e = 4, f = 5; // 3つの整数を宣言し初期値を設定
byte z = 22;         // 変数zを宣言し初期化
String s = "w3codebox";  // 文字列sを宣言し初期化
double pi = 3.14159; // 双精度浮動小数点型変数piを宣言しました。
char x = 'x';        // 変数xの値は文字'x'です。

Java言語がサポートする変数の型には:

  •  クラス変数:メソッドの外に独立している変数、static修飾子を使用。

  • 例変数:メソッドの外に独立している変数、ただしstatic修飾子はありません。

  • ローカル変数:クラスのメソッド内の変数。

public class Variable{
    static int allClicks=0;    // クラス変数
 
    String str="hello world";  // インスタンス変数
 
    public void method(){
 
        int i = 0;  // ローカル変数
 
    }
}

Java ローカル変数

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

  • ローカル変数はメソッド、コンストラクタ、またはブロックが実行されたときに作成され、実行が完了すると、変数が破棄されます;

  • アクセス修飾子はローカル変数に使用できません;

  •  ローカル変数は宣言されたメソッド、コンストラクタ、またはブロック内のみで見ることができます;

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

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

例 1

以下の例では、age はローカル変数です。pupAge() メソッド内で定義され、その範囲はこのメソッドに限定されます。

package com.w3codebox.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 変数が初期化されていないため、コンパイル時にエラーが発生します:

package com.w3codebox.test;
 
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:変数 number が初期化されていない可能性があります
age = age + 7;
         ^
1 エラー

サンプル変数

  • サンプル変数はクラス内で宣言されていますが、メソッド、コンストラクタ、またはブロックの外に宣言されています;

  • オブジェクトが例示された後、各サンプル変数の値が決定されます;

  • サンプル変数はオブジェクトが作成されたときに作成され、オブジェクトが破棄されたときに破棄されます;

  • サンプル変数の値は少なくとも1つのメソッド、コンストラクタ、またはブロックで参照される必要があり、これにより外部からサンプル変数の情報を取得することができます;

  • サンプル変数は使用前にまたは使用後に宣言できます;

  • アクセス修飾子はサンプル変数を修飾できます;

  • サンプル変数はクラス内のメソッド、コンストラクタ、またはブロックに対してアクセス可能です。一般的には、サンプル変数をプライベートに設定するのが望ましいです。アクセス修飾子を使用して、サンプル変数をサブクラスに対してアクセス可能にすることができます;

  • サンプル変数にはデフォルト値があります。数値型変数のデフォルト値は0、ボルン型変数のデフォルト値はfalse、リファレンス型変数のデフォルト値はnullです。変数の値は宣言時に指定できるだけでなく、コンストラクタ内でも指定できます;

  • サンプル変数は直接変数名を通じてアクセスできますが、静的メソッドや他のクラスでは、完全限定名を使用する必要があります:ObejectReference.VariableName。

Employee.java ファイルコード:

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 );
      System.out.println("給料 : " + salary);
   }
 
   public static void main(String[] args){
      Employee empOne = new Employee("w3codebox");
      empOne.setSalary(1000.0);
      empOne.printEmp();
   }
}

以下の例のコンパイルおよび実行結果は次の通りです:

$ javac Employee.java 
$ java Employee
名前 : w3codebox
給料 : 1000.0

クラス変数(静的変数)

  • クラス変数も静的変数と呼ばれ、クラス内でstaticキーワードで宣言されますが、メソッドの外に宣言する必要があります。

  • クラスがどれだけのオブジェクトを作成しても、クラスはクラス変数のコピーを持つのは一つだけです。

  • 静的変数は常量として宣言された以外はほとんど使用されません。常量はpublicとして宣言されたものです。/private、final、staticタイプの変数です。常量が初期化されると変更できません。

  •  静的変数は静的ストレージエリアに保存されます。よく常量として宣言され、静的声明で変数を単独で使用することはめったにありません。

  • 静的変数は初めてアクセスされたときに作成され、プログラムの終了時に破棄されます。

  • と同じ可視性を持ちますが、クラスのユーザーに見えるように、多くの静的変数はpublicタイプとして宣言されます。

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

  • 静的変数は以下の通りアクセスできます:ClassName.VariableNameの方法でアクセスします。

  • クラス変数がpublic static finalタイプとして宣言された場合、クラス変数の名前は大文字で推奨されます。静的変数がpublicおよびfinalタイプでない場合、その命名は例変数および局所変数の命名方法と同じです。

例:

Employee.java ファイルコード:

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修飾子の使用を紹介します。