この記事ではJava8の基本的な文法をまとめていきます。
基本情報技術者試験の午後試験でJavaを選択される方は最後の復習にどうぞ!
エントリーポイント
エントリーポイントとは、プログラムの中で一番最初に実行される処理のことです。
Javaでは下記のmainメソッドがエントリーポイントとなります。
args
以外のキーワードに誤りがある場合は、エントリーポイントと見做されないので注意が必要です。
Java
public static void main(string[] args){
//処理
}
変数
変数の宣言
変数の宣言方法を以下に示します。
構文:データ型 変数名;
Java
String str;
int num;
boolean flg;
int num2,num3,num4 //同じ型であればカンマ区切りで続けて宣言することもできる。
変数の初期化
変数の初期化方法を以下に示します。
構文:変数名 = 値;
Javaでは、ローカル変数は宣言しただけでは初期化が行われません。
初期化されていない変数を使用するとコンパイルエラーになるため、初期化が必要です。
Java
str = "aaa";
num = 123;
flg = true;
変数の宣言と初期化を同じタイミングで行う
変数の宣言と初期化を同じタイミングで行うこともできます。
Java
String str2 = "aaa";
int num2 = 123;
boolean flg2 = true;
修飾子
重要なポイントだけ以下に示します。
static修飾子
static修飾子を付けると、そのクラスがインスタンス化されていなくてもアクセスできるようになります。
static修飾子は、メソッドまたはフィールドに対して付与することができます。
static修飾子が付与されたメンバーには以下の形式でアクセスできます。
Java
クラス名.メンバー
final修飾子
final修飾子を付けると、そのメンバが上書きされることを禁止することができます。
「上書きされることを禁止」の意味合いはメンバによって以下のとおり異なります。
メンバ | 説明 |
---|---|
クラス | 子クラスを作ることを禁止する。 (継承を禁止する。) |
メソッド | 子クラスでのメソッドの上書きを禁止する。 (オーバーライドを禁止する。) |
フィールド | 値の上書きを禁止する。 (定数化する。) |
つまり、クラスに対してfinal修飾子を付与すると、これ以上継承することが出来なくなるので、そのクラスが末端だと判断できます。
メソッドに対してfinal修飾を付与すると、これ以上オーバーライド出来なくなるので、そのメソッドが末端だと判断できます。
フィールドに対してfinal修飾子を付与すると、これ以上処理の中で値が上書きされることがないので、定数として利用することができます。
if文
単純なif文の書き方です。
Java
boolean flg = true;
if (flg) {
System.out.println(true); //ここの処理が実行される。
}
else文の書き方です。
Java
boolean flg = true;
if (flg) {
System.out.println(true); //ここは処理されない!
} else {
System.out.println(false); //ここの処理が実行される。
}
else if文の書き方です。
Java
boolean flg = true;
if (num > 80) {
System.out.println("合格!");
} elseif (num >= 60 && num <= 80) {
System.out.println("可"); //ここの処理が実行される。
} else {
System.out.println("赤点");
}
switch文
変数の値によって処理を振り分けるよっていう主旨の場合、elseif文を使うよりも直感的でわかりやすい。
Java
int num = 1;
switch(num){
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
System.out.println("0");
}
default文はどのcaseにも一致しなかった場合に呼ばれます。
Javaのswitch文はbreak文を書かないと後続のcaseと不一致の場合でも、後続の処理が実行されてしまうので注意しましょう。
- String型はjavaSE7から使用可能。
- Boolean型,Long型,Double型,Float型等、浮動小数点型は使用不可。
caseに使用できる値には以下の制約があります。
- 条件式が戻す値と同じ型か、互換性がある型であること。
- 定数であるか、コンパイル時に値を決めることができること。
- NULLでないこと。
※上記のうち、定数とはfinal宣言された変数か、もしくはリテラルを指す。変数はcase値として使えないので注意。
配列の宣言と生成
配列については以下の記事にまとめているので良かったら読んでください。
三項演算子
三項演算子の書き方を以下に示します。
構文:条件式 ? 式1 : 式2
条件式がTrueだった場合は式1を返し、Falseの場合は式2を返します。
Java
int a = 10;
int b = 120;
int result = a < b ? a : b; //resultには10が代入される。
三項演算子は値を返す構文です。
条件によって処理を振り分けたい場合には使えないのでif文の代わりには成りえません。
つまりreturnできれば↓のように三項演算子の中でメソッドを使うことも出来ます。
Java
int Max = 100;
int Min = 50;
int result = Max > Min ? method(Max) : method(Min);
System.out.println(result); // Maxの方が大きいので10倍されて1000が返る。
static int method(int i) {
return i * 10;
}
オーバーロード
オーバーロードとは同一クラス内でメソッドを上書きすることです。
オーバーロードを満たすには以下の条件があります。
定義したメソッドがオーバーロードとなるには以下の制約があります。
- メソッド名が同じであること。
- シグニチャが異なること。(引数の数、型、並び順のいずれかが異なること。)
- アクセス修飾子と戻り値の型は何でも可。
記述例を以下に示します。
Java
int method(int x){
return x * 10;
}
int method(int x,int y){
return x * y;
}
ちなみにオーバーロードには@Overrode アノテーションなるものは存在しません。
オーバーライド
オーバーライドとは、スーパークラスで定義したメソッドをサブクラスで再定義することです。
定義したメソッドがオーバーライドとなるには以下の制約があります。
- アクセス修飾子はスーパークラスのメソッドと同一か、それより緩いものでなければならない。
- 戻り値の型はスーパークラスのメソッドの戻り値と同一か、そのサブクラスでなければならない。
記述例を以下に示します。
Oya.java
public class Oya {
void method(int x){
System.out.println("oya:" +x);
}
}
Kodomo.java
public class Kodomo extends Oya{
@Override
void method(int x){
System.out.println("kodomo:" +x);
}
}
@Overrideアノテーションはメソッドがオーバーライドしていることを宣言します。
オーバーライドしていないメソッドに@Overrideアノテーションを付けているとコンパイルエラーとなる。
定義したメソッドがオーバーライドしていることを見落とさないためにもアノテーションは付けたほうが良い。
以上で記事の解説はお終い!
もっとJavaやSpringを勉強したい方にはUdemyがオススメ!同僚に差をつけよう!