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
で実行する。 -
-cp
or-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 == true
SubClass instanceof SuperClass == true
SubClass 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