Java SE 11勉強ノート
基本
以下の本で勉強した際の勉強ノート。
<a href="https://www.amazon.co.jp/オラクル認定資格教科書-Javaプログラマ-Silver-SE11(試験番号1Z0-815)-山本-ebook/dp/B07YDM92JZ?_mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%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+Silver+SE11%EF%BC%88%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B71Z0-815%EF%BC%89+Kindle%E7%89%88&qid=1630139818&s=books&sr=1-1&linkCode=li2&tag=i0fe2-22&linkId=33babda914a30dc1b0cb32c9e947652b&language=ja_JP&ref=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B07YDM92JZ&Format=SL160&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=i0fe2-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=i0fe2-22&language=ja_JP&l=li2&o=9&a=B07YDM92JZ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> <a href="https://www.amazon.co.jp/オラクル認定資格教科書-Javaプログラマ-Gold-SE11-試験番号1Z0-816/dp/4798162027?_mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=java+oracle+gold+se11&qid=1631800606&sr=8-6&linkCode=li2&tag=i0fe2-22&linkId=4debe69138d51a2ef42b5fb639ac12d9&language=ja_JP&ref=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4798162027&Format=SL160&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=i0fe2-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=i0fe2-22&language=ja_JP&l=li2&o=9&a=4798162027" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
Javaコマンド
- 一定のルールに従って書いたJavaコードは、
java Main.javaで実行可能。 -
javac Main.javaでコンパイルして、java Mainで実行する。 -
-cpor-classpathでクラスパス追加。
ファイル
- クラスファイルは、中間ファイル。
Exception and Error
共通
- 例外には、unchecked例外とchecked例外がある。
- checked例外は、例外処理を実装しないとコンパイルエラーとなる。
Error
- Java実行環境に関する例外は、
Error。 -
Errorとそのサブクラスはunchecked例外。
Exception
- アプリケーションに関する例外は、
Exception。 -
Exceptionのサブクラスの内、RuntimeExceptionとそのサブクラスはunchecked例外。それ以外はchecked例外。 - checked例外は例外処理必須で、unchecked例外は任意。
- マルチキャッチ構文は、継承関係のある例外クラスでは使用できない。
- 継承関係のある例外クラスは、サブクラスから順番にcatchしなければならない。
- tryの使い方には
- try-catch
- try-finally
- try-catch-finally
- try-with-resources
変数
リテラル
- 整数リテラルは、2,8,10,16進数で表現する。
- 浮動小数点リテラルは、10進数または指数表現。
- 文字リテラルは
'で囲む。 - 文字列リテラルは
"で囲む。
数値リテラル
- 区切り文字に
_を使える。1_000区切り文字は、先頭、末尾、記号の前後には使用できない。
変数
- 変数宣言は、
Type<T extends P> variable = new Type<>();という形式。-
Typeは型。 -
T extends Pは型パラメータ。参照型のみ指定可能。PはTの親クラス。T super Cもあり、CはTの子クラス。 -
variableは変数名。 -
Type<>()はコンストラクタ。この<>はダイヤモンド演算子。
-
-
varはローカル変数にのみ使用できる。 -
var val = null; var val;は、型推論ができないため、不可。
基本データ型
- Boxingでは、暗黙の型変換できない。
- Unboxingでは、nullを代入できない。
配列
- 初期化時に配列の大きさを指定しないとコンパイルエラー。
var array = new int[];
Enum
-
switch()の引数にできるのは、整数型と文字列型のみ。 -
switch(null)はコンパイルエラー。
Class
Packagee
- 全てのクラスはパッケージに属する。
-
packageを記述しないと、無名パッケージに属するものとして扱われる。
Import
-
java.langパッケージはimport不要で利用できる。
継承
-
SuperClass s = new SubClass();とすると、インスタンスメソッド以外は、スーパークラスSuperClassのメンバが呼ばれる。
オーバーライド
- private メソッドは、オーバーライドできない。
- オーバーライドしたメソッドが優先されて使用される。
- オーバーライドする場合は以下のように指定する。
- アノテーション:
@Overrideをつけても良い。 - アクセス修飾子:スーパークラスと同じかそれより広い
- 戻り値:スーパークラスと同じかそのサブクラス
- メソッド名:スーパークラスと同じ
- 引数リスト:スーパークラスと同じ
- アノテーション:
オーバーロード
- オーバーロードされたメソッドの優先順位は以下の通り。
- 引数が完全一致したメソッド
- 暗黙の型変換をした上で引数が完全一致したメソッド
- Boxingした上で引数が完全一致したメソッド
- 可変長引数メソッド
- 可変長メソッド
void method(int... val){}と同じ配列型を持つメソッドvoid method(int[] val){}は定義できない。
instanceof
SubClass instanceof SubClass == trueSubClass instanceof SuperClass == trueSubClass instanceof OtherInterface == false-
SubClass instanceof OtheClassはコンパイルエラー。
Interface
Field
- フィールドは、暗黙的に
public static finalになる。
Method
- メソッドは、暗黙的に
public abstractになる。 - インタフェースの実装クラスは、インタフェースのメソッドと同じスコープを用いること。
Default method
- defaultメソッドは、暗黙的に
public defaultになる。 - defaultメソッドのスコープは
publicのみ。
Static method
- staticメソッドは、暗黙的に
public staticになる。 - defaultメソッドのスコープは
publicまたはprivateのみ。
Discussion