はじめに
月1投稿を目標に頑張っております。
今回はJava silverに合格したので、勉強法など備忘録として残しておこうと思います。
この記事の対象者
Java Silverの取得を考えている方
学習期間
- 約4ヶ月
(ほぼほぼ最後の1ヶ月で仕上げました…)
学習内容
- Youtubeを使い、Javaの基礎を学習
- 黒本1~6章を3周、7~8章の模擬問題を時間を測ってチャレンジ
1周目👉正答率:約30%
2周目👉正答率:約60%
3周目👉正答率:約80%
Youtubeのおすすめ動画
せかチャン - 世界一わかりやすい情報科チャンネル
いろんな方が挙げられてる、こちらの動画は本当に有料級でした。
基礎的なところから、細かいところまで解説されています。
復習としても、初めてJavaに触れられる方でも参考になるかと思います。
最初にサラッと1周みて、問題を解き始めてからもう一周見ました。
study timer
ポモドーロ式に勉強ができる素晴らしい動画でした。
疲れて見上げると「成功は朝の準備から始まる」とか書いてるので、勉強しなきゃ…となります。5分休憩の時は可愛い猫が褒めてくれます。
使用した勉強書籍
こちらも言わずと知れた「黒本」ですね!
これやっておけば大丈夫ぐらいの代物です。
本にあまり書き込みたくないのと、試験はCBT方式(パソコンで受験するやつ)なので問題に書き込んだりできないということもあり、ノートに回答を書く勉強をしていました。
このような感じで、なぜその回答を選んだのかをメモ書きしておくと理解度が上がって効果ありました👇
学習中驚いたこと
論理演算子
この、論理演算子が1つと2つとでは微妙に違いがあるの知っていましたか?
私は知りませんでした!基本的には以下のように同じ処理になります。
a & b // a と b の両方がtrueであればtrue
a && b // a と b の両方がtrueであればtrue
a | b // a と b のいずれかがtrueであればtrue
a || b // a と b のいずれかがtrueであればtrue
ショートサーキット演算子
&&や||は左オペランドの結果によって、右オペランドを評価しないんです。
簡単にいうと、左オペランドでtrueかfalseが確定する場合は、右オペランドの処理を省略します!
同一性と同値性の比較
Javaでは同じという概念が3種類あります。
「同一性」「同値性」「同種性」 です。受験前はここをふわっと理解していました。
| 種類 | 概念 | 比較に使う | 意味 |
|---|---|---|---|
| 同一性(Identity) | まったく同じインスタンスかどうか | == |
参照(メモリアドレス)が同じかどうかを比較 |
| 同値性(Equality) | 内容(値)が同じかどうか | equals() |
意味的に「同じ」とみなせるかを比較 |
| 同種性(Type sameness) | 型が同じか、ある型のサブクラスか | instanceof |
オブジェクトの型関係を判定 |
equalsメソッドはオーバーライドを前提としたメソッドで、全てのクラスのスーパークラスであるjava.lang.Objectクラスに定義されています。ただ、Objectクラスに定義されたeqaulsメソッドは同一性を確認します。
つまり==と同じ処理(同じインスタンス、同一オブジェクトか確認)をします。
public boolean equals(Object obj) {
return (this == obj);
}
しかし、String や Integer、Date などのクラスでは
「内容が同じなら等しい」としたいので、equals をオーバーライドしています。
つまりオーバーライドで再定義しているから同値比較ができているのです。
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1 == s2); // false(参照が違う)
System.out.println(s1.equals(s2)); // true(内容が同じ)
そのため、自作のクラスでオーバーライドせずequalsメソッドを利用すると、同一性の比較となってしまうわけです。大変勉強になりました!
さいごに
今後受験する誰かの参考になりましたら幸いです。次はSQL silverを取得予定です!
あと、Oracle試験は楽天で購入すると安く買えるらしいです。。(もっと早く知りたかった)
参照記事


