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 = "ceodata"; // 文字列を宣言して初期化する 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.runoob.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.runoob.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:variable number might not have been initialized
age = age + 7;
^
1 error
インスタンス変数
- インスタンス変数はクラス内に宣言されますが、メソッド、コンストラクタ、およびステートメントブロックの外部にあります。
- オブジェクトがインスタンス化されると、それに応じて各インスタンス変数の値が決定されます。
- インスタンス変数は、オブジェクトの作成時に作成され、オブジェクトが破棄されると破棄されます。
- インスタンス変数の値は、外部がこれらのメソッドによってインスタンス変数情報を取得できるように、少なくとも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("RUNOOB");
empOne.setSalary(1000.0);
empOne.printEmp();
}
}
上記の例がコンパイルして実行した結果は次のとおりです。
$ javac Employee.java
$ java Employee
名前 : RUNOOB
給与 : 1000.0
クラス変数(静的変数)
- クラス変数は静的変数とも呼ばれ、staticキーワードを使用してクラス内に宣言されますが、メソッドの外部にある必要があります。
- クラスが作成するオブジェクトの数に関係なく、クラスにはクラス変数のコピーが1つしかありません。
- 静的変数は、定数として宣言されている場合を除いて、ほとんど使用されません。静的変数とは、public/private、final、およびstatic型として宣言されている変数を指します。初期化した後、静的変数が変更できません。
- 静的変数は静的ストレージ領域に保存されます。多くの場合、staticが定数として宣言され、静的変数を宣言するために単独で使用されることはあまりありません。
- 静的変数は、初めてアクセスされた時に作成され、プログラムが終わった時破棄されます。
- インスタンス変数と同じ可視性があります。ただし、クラスのユーザーに表示されるようにするために、ほとんどの静的変数はpublic型として宣言されています。
- デフォルト値はインスタンス変数に似ています。数値変数のデフォルト値は0、ブール値のデフォルト値はfalse、参照型のデフォルト値はnullです。変数の値は、宣言する時またはコンストラクタ内に指定できます。さらに、静的変数は静的ステートメントブロック内に初期化できます。
- 静的変数には、ClassName.VariableNameによってアクセスできます。
- クラス変数がpublic static final型として宣言されている場合、通常、クラス変数の名前には大文字を使用することをお勧めします。静的変数がpublic型またはfinal型でない場合、その命名方法はインスタンス変数およびローカル変数の命名方法と同じです。
実例
Employee.java ファイルコード:
import java.io.*;
public class Employee {
//salaryは静的private変数です
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修飾子の使い方を説明します。
コメントを残す