今更Oracle Java Bronze SE 7/8を取ったので記事にする

よく巷ではあまり意味のなさない資格の一つとしてOracleのJava認定試験が挙げられるが、一応大学在学中に基礎部分だけ触った身として、そもそもJavaは関わりたくないもののひとつだけども、そういうわけにはいかないので「まあ、読めはしますよ」くらいは言える説得力が欲しいとのことで、会社から取得を勧められ、モチベーションのためにも取得に至ったという訳である。
##そもそもの自分の状況
大学の情報系学部を卒業研究中になんやかんやで中退してしまった。悲しい。
その後は、一応ITソリューション企業とか運用SEとか、それっぽく聞こえる所謂オペレーション業、「おじいちゃん、電源入れ忘れてますよ」と毎日言う仕事をしていたので、正直プログラミングとか開発とかそんなものとは無縁に過ごしてきたのだが、就業環境やらで今更SE的なものを目指すことになった。

なので、あまりこの業種に詳しいという訳ではないが、私が入社した会社ではまだまだJavaを取り扱う案件は多く、上述した通りJava認定資格で経歴に箔を付けろとのお達しをいただいた。

その状況下において、私のJava修得状況は以下の通りである

・Javaは5年前くらいになんとなくやった
・なんか実習科目で簡単なアプリ開発した気がする
・ぶっちゃけ何も覚えてない

「一応経験があるならSilverから取っちゃえば？」という声もあったが、正直自信が全くなかったのと~~恥をかきたくない~~ので慎ましくBronzeからの受験をとりあえず決意した。~~会社からお金出るし~~

##勉強期間
7月頭から勉強開始して、7月末に受験したので約一か月で取得

ちなみにBronzeはだいたい全くJavaに触れたことがない人間がおおよそ1か月で合格できる難易度のこと(…)

#教材/学習方法
[オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Bronze-SE-%E5%B1%B1%E6%9C%AC/dp/4798142719/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=oracle+java+bronze&qid=1565055177&s=gateway&sr=8-3)
⇒テキストを最初から最後まで舐めるように読んで問題を解く

[徹底攻略 Java SE 7/8 Bronze 問題集[1Z0-814]対応](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Bronze-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-814/dp/4844338293/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=oracle+java+bronze&qid=1565055177&s=gateway&sr=8-1)
⇒3周くらい、ただひたすら問題を解いた

##やっぱりオブジェクト指向がよくわからない
学部生時代から思っていたが、オブジェクト指向、正直さっぱり分からん
大学に教鞭を取っていた教授は、この部分でつまづく人間が多いことに触れはしたものの「でも分かるでしょ~~分からん奴はバカ~~」みたいなスタンスだから言い辛かったけど今なら言える**全然分からん**

##もう一度振り返ろう オブジェクト指向のあれこれJava編
とにかくすっごい噛み砕いて説明してくれるテキストで見直しました

[スッキリわかるJava入門 第2版](https://www.amazon.co.jp/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E4%B8%AD%E5%B1%B1-%E6%B8%85%E5%96%AC/dp/484433638X/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=KAF6TB53TIXC&keywords=%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8Bjava%E5%85%A5%E9%96%80&qid=1565056947&s=gateway&sprefix=%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8B%2Caps%2C256&sr=8-1)
このテキストの7章～14章をねっとり読み込む。
とても分かりやすいんですけど、逆にかみ砕きすぎてピンとこない人もいると多いと思いので、問題を解いて解説を読んでもわからない部分の補完として使用すると良いです。

###押さえておきたいポイント
- コンストラクタ
    - 引数ありコンストラクタを１つでも記述したら、デフォルトコンストラクタを記述しないとエラー
    - this(引数); , super();はコンストラクタの先頭に記述
- static識別子
    - static変数はすべての呼び出し元で値が共有される
    - staticメソッドはインスタンス化せずに利用できる(よってインスタンス化するとコンパイルエラー)
- 抽象クラス、メソッド、メンバ変数で付与可能なアクセス識別子
- 抽象クラス、インターフェースはインスタンス化できない
- データ隠蔽と情報隠蔽のそれぞれの目的と違い
    - カプセル化
    - ポリモーフィズム
- オーバーライドの決まり
    - 具象クラス以外はすべての抽象メソッドを実装する必要はない
- 継承関係間のダウンキャスト
   - ClassCastException

##その他の確認したい部分
- public static void main(String[] args){} の並び替え
- 配列array[i]は0~iのi+1個のメモリが確保される
    - ガベージコレクション
- if(条件式){} の条件式部分の結果がtrueかfalseじゃなければエラー
- swicth(x)のxで使用できる型
- 拡張for文
- package文とimport文の記述ルール


##受験した感想
問題数に対する受験時間が短くてとにかく時間との勝負だった
出題パターンがある程度決まっているので、なるべく問題を解く練習をすると良いと思う

##受験して良かったこと
今までなんとなく苦手意識があったオブジェクト指向に対して、少しだけ**意識が緩和された気がする**
あと、プログラミング言語は実際に自分で何か作ることが習得への近道だが、私のような何か作りたいものがピンと来ないクリエイティブ精神薄めの人間にとって取っつきやすかった
Silverも受験予定だけど、Silverまでいったら、書けはしないけどソースを見て何をしているかは何となくわかるようになるのかな ~~微妙だな・・・~~

##こんな記事を書いて何がしたかったか
一応頑張って勉強をしたので、振り返って何かに残したかった　モチベーションのため
こんな記事投稿していたらまたqiitaはオワコンとか言われるだろうけど、一応学生時代からお世話になっているので、私も投稿してみたかったのだ・・・
これからも何かの学習状況に区切りがついたら、このように振り返ったものを作ってみようと思う

せっかく勉強したのだから、何かソースコードを公開できるように頑張りましょう