システム開発の現場で使用するプログラミング言語は多岐にわたり、多くのプログラマーは複数の言語を体得する必要があります。
世の中には、数多くのプログラミング言語が存在しますが、論理的に物事を整理し、それを体系的にコードに落とし込んでいく根幹的な所はどの言語で同じであるため、しばらく Java 以外の言語で開発をしていたとしても、論理的思考力という意味でのスキルが衰えることはないでしょう。
しかし、言語によって if や for 文などの書き方が違うなど、基本的な構文は言語によって異なるため、この構文のところについては、しばらく使っていないと忘れしてしまうこともあるでしょう。
この記事では、Java しばらく使ってない人や、入門者に向けて、Java 基本的な構文がすぐに思い出せるように、それぞれ簡単に復習できる内容で解説します。
変数
変数は、データを一時的に格納する場所です。変数には数値や文字列、配列やクラスなどのオブジェクトを格納します。
ローカル変数
メソッド内で宣言する変数のことをローカル変数と言います。
ローカル変数はメソッド内からのみ参照ができ、メソッドの外からは参照不可です。また、ローカル変数を宣言したメソッドの処理を抜けると、ローカル変数はメモリから解放され、次に同じメソッドが呼ばれた時は、再度初期化されます。
変数は「データ型 変数名;」で宣言します。次のコードはint 型の変数を宣言する例です。
public class Sample {
public static void main(String[] args) {
int a; //int型変数の「a」を宣言
int a = 0; //宣言と同時に初期値を代入することも可能
}
}
また、Java10 からは var を用いた型推論によるローカル変数の宣言が可能になりました。var を使用すると変数宣言時の型が省略可能になり、Javaのコードがスッキリします。
例えば、次のようなクラス名が長い変数の場合、
String str = "12345";
FileOutputStream file = new FileOutputStream("path/to/file”);
上のコードを var を使って型推論すると、次のコードになります。var で宣言した変数は、初期値として代入される値の型が、その変数の型とみなされます。
var str = "12345";
var file = new FileOutputStream("path/to/file”);
【関連記事】
▶Javaで便利な「var」を使って変数の型指定を省略(推論)する方法
インスタンス変数
クラス宣言部(メソッド外)に定義する変数のことをインスタンス変数と言います。
newキーワードによってクラスのインスタンスが生成されると、インスタンス変数が初期化され、変数の値はインスタンスごとに異なる値が保持されます。
インスタンス変数の宣言は「スコープ データ型 変数名;」の形式で指定します。
public class Sample {
int a; //int型変数の「a」を宣言
int a = 0; //宣言と同時に初期値を代入することも可能
}
インスタンス変数へアクセスする場所は、同じクラスのインスタンスメソッド内からであれば「this.変数名」で、その他からアクセスする場合は「インスタンスを格納した変数.変数名」でアクセスできます。
static変数
宣言時に staticキーワードを付けて宣言される変数です。static を付けた変数は、すべてのインスタンスで値が共有されます。
static 変数の宣言方法は次のとおりです。
public class Sample {
static int a; //int型変数の「a」を宣言
int a = 0; //宣言と同時に初期値を代入することも可能
}
すべてのインスタンスで変数の値が共有される static 変数にアクセスする時は、インスタンスがいらないため「クラス名.変数名」でアクセスできます。
System.out.println(Sample.a);
定数
初期化時に代入した値から変更できない変数のことを定数と呼びます。Javaで定数を宣言する場合は final キーワードを用います。
public class Sample {
public static void main(String[] args) {
final String START_MSG = "起動中";
}
}
複数のメソッドから参照される定数の場合は、static キーワードと組み合わせてクラス定義の所に定数を宣言します。
public class Sample {
//定数を宣言
public static final String START_MSG = "起動中";
}
基本的なデータ型
Java のデータ型は「プリミティブ型」と「参照型」の大きく2つに分類されます。
プリミティブ型は、数値や真偽値などの値を格納する基本的なデータ型で、別に値型とも呼ばれます。Java のプリミティブ型は全部で 8種類あり、真偽値の boolean、数値型の byte、short、int、float、long、double、文字1つを表す char があります。
プリミティブ型の詳しい説明は、次の記事をご覧ください。
【関連記事】
▶【Java入門】基本型(int,long,double,float…)の使い方をしっかり学ぶ
それに対し参照型は、String や 配列、List などの new よるインスタンス生成を必要とするデータを指します。つまり、プリミティブ型以外のデータ型は、すべて参照型と言えます。
参照型のすべてのクラスは、共通して Object クラスを継承するか、Object クラスを継承したクラスの派生型になります。
【関連記事】
▶JavaのObjectは最も基本のクラス!Objectクラスの使い方を学ぼう
演算子
四則演算をはじめとする演算子は、他の言語と基本的には同じです。
//加算
int a = 1 + 2;
//減算
int b = 3 - 2;
//乗算
int c = 3 * 2;
//除算
int d = 4 / 2;
//除余
int e = 5 % 2;
int i = 0;
//インクリメント
i++;
//デクリメント
i--;
ビット演算
ビット演算を行うための演算子も、基本的には他の言語と同じです。
AND(論理積)
int a = 0xFFFF & 0xF001;
System.out.println("結果:" + Integer.toHexString(a));
// 結果:f001
OR(論理和)
int a = 0xF000 | 0x00FF;
System.out.println("結果:" + Integer.toHexString(a));
// 結果:f0ff
XOR(排他的論理和)
int a = 0xFFFF ^ 0xF001;
System.out.println("結果:" + Integer.toHexString(a));
// 結果:ffe
左シフト
int a = 0xF << 4;
System.out.println("結果:" + Integer.toHexString(a));
// 結果:f0
右シフト
int a = 0xF000 >> 4;System.out.println("結果:" + Integer.toHexString(a));// 結果:f00
まとめ
今回は、Java の変数と演算子の基本について解説しました。この記事を読んで長く Java を使っていないと忘れてしまいがちな基本構文をサクッと思い出していきましょう。
次回は、条件分岐、メソッド、クラスなどについて復習します。
ちなみに、インスタンス変数では、var を用いた型推論は使用できないため、宣言時には必ずデータ型を指定する必要があります。