はじめに
オラクル認定資格教科書 Javaプログラマ Silver SE8
第一章 Javaの基本
第二章 Javaのデータ型の操作
第三章 演算子と判定構造の使用← イマココ!!
第四章 配列の作成と使用
第五章 ループ構造の使用
第六章 メソッドとカプセル化の操作
第七章 継承の操作
第八章 例外の処理
第九章 Java APIの主要なクラスの操作
倫理演算子について
演算子 | 使用例 | 意味 |
---|---|---|
& | a & b | aとbの両方がtrueであればtrue |
&& | a && b | aとbの両方がtrueであればtrue |
I | a I b | aもしくはbのどちらかがtrueであればtrue |
II | a II b | aもしくはbのどちらかがtrueであればtrue |
! | a! | trueであればfalse、falseであればtrue |
& と &&、| と ||の違い
& と &&、| と || の違いは、左オペランドの結果で右オペランドを評価するか、評価しないかである。
& と | は左オペランドの結果にかかわらず、右オペランドの評価も行う。
一方で、&& と || は「ショートサーキット演算子」とも呼ばれ、左オペランドで結果がわかれば、右オペランドの評価は行わない。
例
int a = 10;
int b = 10;
if (10 < a && 10 < ++b) {
//左オペランドでfalseが確定するため、右オペランドは実行されず、bは10のままである
a++;
}
System.out.println(a + b);
//20
同一性( == )
完全に同じであるかを評価する。
同じ値でも、参照先が違っていればfalseとなる。
public class Sample {
private int num;
public Sample(int num) {
this.num = num;
}
}
------------------------------
public class Main {
public static void main(String[] args) {
Sample a = new Sample(10);
Sample b = new Sample(10);
System.out.println(a == b);//false
// aとbの値は共に10ではあるが、参照先のインスタンスが異なるため、同一性が認められない
}
同値性(equals)
同値性を確認する場合は、Stringクラスのequalsメソッドを利用する。
大元であるObjectクラスに定義されているequalsメソッドは同一性を確認するため要注意。
Objectクラスのequalsメソッドで同値性を確認する場合は、オーバーロードして値を比較するよう実装する必要がある。
//Objectクラスでの同一性を確認する実装のequalsメソッド
public boolean equals(Object obj) {
return (this == obj)
}
----------------------------------------------
//オーバーライドして、同値性を確認するよう実装する
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj instanceof Sample) {
Sample s = (Sample) obj;
return s.num == this.num;//num(値)だけ比較するよう指定
}
return false;
}
----------------------------------------------
//Stringクラスのequalsメソッドを使用
public static void main(String[] args) {
String a = new String("Sample");
String b = "Sample";
System.out.println(a.equals(b));//true
}
リンク集
【Javaの基本①】クラスの構造
【Javaの基本②】パッケージとインポート
【継承の操作②】インターフェース
【Javaのデータ型の操作①】プリミティブ型のデータ・参照型
【演算子と判定構造の使用①】論理演算子(&&、||)、同一性(==)、同値性(equals)
【演算子と判定構造の使用②】分岐処理(if、swich)
【配列の作成と使用】
【ループ構造の使用】while文、do-while文、for文、拡張for文
【メソッドとカプセル化の操作①】メソッドの概要
【メソッドとカプセル化の操作②】オーバーロード、コンストラクタ
【継承の操作①】クラスの継承
【例外の処理】
【Java APIの主要なクラスの操作】