Java SE Silver合格に向けて ~演算子と判定構造の使用~

ヘッダー広告
スポンサードリンク

現在私はJava SE Silverの合格に向けて勉強しています。
職場ではWebアプリケーションの開発をしていますが、オンライン処理で使用しているJavaを体系的に理解し、仕事で役立てようとしています。

今回はJava SE Silverの試験範囲の一つである『演算子と判定構造の使用』について色々とまとめてみました。

SE silverの試験概要、受験方法はこちら
Jav SE silver合格に向けて第1弾

演算子と判定構造の使用


代入演算子

Javaでは代入と同時に値の計算を行う機能があります。それが代入演算子になります。
代入演算子の使い方は、代入の『=』の直前に演算子を指定するだけです。
こちらはFor文でよく使います。
int a = 10;
int b = a += 100;

また、計算途中でも使用可能で、以下のようにbへ代入中にaの値を変更することが出来ます。
package test;

public class Calculation {

	public static void main(String[] args){

		int a;
		int b;

		a = 30;
		b = a + 70;

		System.out.println("結果a-1:" + a);
		System.out.println("結果b-1:" + b);

		a = 30;
		b = a += 70;

		System.out.println("結果a-2:" + a);
		System.out.println("結果b-2:" + b);

	}

}

出力結果
結果a-1:30
結果b-1:100
結果a-2:100
結果b-2:100

インクリメント/デクリメント演算子

変数の値に対して、1を加算・減算することが簡単にできる方法があります。
それがインクリメント演算子(1を加算する)とデクリメント演算子(1を減算する)になります。

計算対象変数の前後どちらかに『++』を付与することで1加算。
『–』を付与することで1減算することが出来ます。
int a = 100;
int b = ++a;
int c = --a;
計算対象変数の前に付与した場合には、値を代入前に計算します。後に付与した場合には、値を代入後に計算します。
package test;

public class Calculation {

	public static void main(String[] args){

		int	a;
		int	b;

		a = 100;
		b = ++a;

		System.out.println("結果a-1:" + a);
		System.out.println("結果b-1:" + b);

		a = 100;
		b = a++;

		System.out.println("結果a-2:" + a);
		System.out.println("結果b-2:" + b);

	}

}

結果a-1:101
結果b-1:101
結果a-2:101
結果b-2:100

このように結果b-2では、aに1を加算する前の値が代入されていることがわかります。

関係演算子

値の比較を行う際には、関係演算子を使用して行います。
関係演算子は以下の種類があります。

関係演算子使い方
==二つが等しい場合はtrue
!=二つが等しくない場合はtrue
>左辺が右辺よりも大きければtrue
<左辺が右辺よりも小さければtrue
>=左辺が右辺以上であればtrue
<=左辺が右辺以下であればtrue
instanceof二つが同じクラスもしくは同じインスタンスである場合はtrue

package test;

public class Calculation {

	public static void main(String[] args){

		boolean Result;
		int	a = 100;
		int	b = 100;

		Result = a == b;

		System.out.println("結果:" + Result);

		Long c = 100L;

		Result = (c instanceof Long);

		System.out.println("結果:" + Result);


	}

}

結果:true
結果:true

このようにa==bの結果、(c instanceof Long)の結果ともに、trueが返却されます。

論理演算子

複数条件の比較を行う際には、論理演算子を使用して行います。
論理演算子は以下の種類があります。

論理演算子使い方
&二つともtrueの場合はtrue
&&
|二つのうちいづれかがtrueの場合はtrue
||
!対象がtrueの場合はfalse。falseの場合はtrue

package test;

public class Calculation {

	public static void main(String[] args){

		boolean Result;
		int	a = 100;
		int	b = 100;
		int	c = 99;

		Result = (a == b & a == c);

		System.out.println("結果:" + Result);

		c = 50;

		Result = (a == b || a == c);

		System.out.println("結果:" + Result);

		c = 50;

		Result = (a != c);

		System.out.println("結果:" + Result);

	}

}

結果:false
結果:true
結果:true

&&と&、||と|の違いは、&&と||については左側の式(左オペラント)の式がfalseを戻した時点で、右側の式を評価しないということです。
以下のコードをご覧ください。

package test;

public class Calculation {

	public static void main(String[] args){

		boolean Result;
		int	a = 99;
		int	b = 100;
		int	c = 100;

		Result = (a == b & ++a == c);

		System.out.println("&の結果:" + Result);
		System.out.println("aの値:" + a);

		a = 99;

		Result = (a == b && ++a == c);

		System.out.println("&&の結果:" + Result);
		System.out.println("aの値:" + a);

		a = 50;
		b = 50;
		c = 50;

		Result = (a == b | ++a == c);

		System.out.println("|の結果:" + Result);
		System.out.println("aの値:" + a);

		a = 50;
		b = 50;
		c = 50;
	
		Result = (a == b || ++a == c);

		System.out.println("||の結果:" + Result);
		System.out.println("aの値:" + a);


	}

}

&の結果:false
aの値:100
&&の結果:false
aの値:99
|の結果:true
aの値:51
||の結果:true
aの値:50

演算子の優先順位

javaの演算子にも他の言語同様に優先順位があります。
他の言語とほぼ変わりはないため、簡単かつ一部抜粋して載せます。

優先順位演算子
1(高い)[] ()
2!
3* / %
4+ –
5<< >> >>>
6< > => =< instanceof
7== !=
8&
9|
8&&
9(低い)||

==とequalsの違い

Javaでは、==とequalsで値を比較する方法があります。
これらは似ているようで異なる比較の方法となりますので、注意が必要です。

package test;

public class Calculation {

	public static void main(String[] args){

		String UserName = new String("SuzukiIchiro");

		boolean Result;

		Result = ("SuzukiIchiro" == UserName);

		System.out.println("結果:" + Result);

		Result = "SuzukiIchiro".equals(UserName);

		System.out.println("結果:" + Result);

	}

}

結果:false
結果:true

このように==とequalsで同じ値を比較しているようでも、結果は異なります。
これはUserName変数にセットする際に、String型をnewして値をセットしていることが上記の結果につながっています。
今回は詳細な理由を記載しませんが、==での比較は値を比較しているのではなく、同一のインスタンスを参照しているかを比較しています。
equalsは、それぞれのインスタンスが保有している値を元に、値同士を比較しているため、上記のサンプルプログラムでtrueを返却しているのです。
ここは間違いやすい点ですので、要注意となります。

if文とswitch文

Javaで条件分岐する際には、if文とswitch文で処理を行うことが出来ます。
if文では次のような記載方法があります。

package test;

public class Calculation {

	public static void main(String[] args){

		int a = 100;
		int b = 100;

		if (a == b)

		System.out.println("結果:true");


	}

}

上記では、trueが値で返却されます。
javaのif文では、{}やThenの記載がなくても1行だけ実行することが可能となります。


switch文を使うことで、case elseのような動作を実現することが出来ます。

package test;

public class Calculation {

	public static void main(String[] args){

		int a = 100;
		int b = 100;

		switch (a) {
		case 10:
			System.out.println("結果:1_true");
			break;

		case 50:
			System.out.println("結果:2_true");
			break;

		case 100:
			System.out.println("結果:3_true");
			break;

		case 200:
		 	System.out.println("結果:4_true");
			break;

		}


	}

}

結果:3_true

ちなみにbreakを行なわないと以下のようになります。

結果:3_true
結果:4_true

このようにJavaではifやswitchを使って条件分岐を行って処理を行います。

以上、第3弾のOracle Java Silverの合格に向けた記事になります。
SEは常に勉強する必要がありますので、是非これを機会に受験して能力を一緒に高めましょう!

Java SE Silver合格に向けたおススメ書籍

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする