Oracle認定Java_silver対策メモ１

##はじめに
エンジニアとして働き始めはやくも５ヶ月目、そろそろ資格をとろうかと。。。ということで、「Oracle認定JavaSE Silver」の対策として、黒本をもとに各章ごとの重要そうなポイントをピックアップしまとめてみました。

##１章 簡単なJavaプログラムの作成

* エントリーポイント：プリグラムを実行する上で実行を開始する場所（mainメソッドがある場所の認識でOK）。

* Javaコマンドの呼び出し方法は　↓

```
java クラス名 コマンド引数1 コマンド引数2...
```
* Java11からコンパイルせずにJavaファイルの実行が可能になった。

```
java ファイル名.java
```
* Javaコマンド実行次の注意点
    * 起動パラメータの区切りは半角スペースで判断される。
    * エスケープ「¥」を用いることで「"」が文字として扱われる。

```sample
java sample x "y y"z ¥" c¥" 　　// x　, y yz　, "　, c"　
```

##２章 Javaの基本データ型と文字列操作
* 整数リテラルの表記方法
 
|進数|接頭辞|記載方法|表示|
|:------:|:--:|:-----:|:--:|
|2進数|0b|0b01001000|80|
|8進数|0|077|63|
|10進数|なし|63|63|
|16進数|0x|0x3F|63|

* データ型の値

|データ型|値|
|:-----:|:---:|
|boolean|true, false|
|char|16ビット（Unicode¥u0000〜¥uFFFF）|
|byte|8ビットの整数　-128~127|
|short|16ビットの整数　−32,768〜32,767|
|int|32ビットの整数|
|long|64ビットの整数|
|float|32ビットの単制度浮動小数点数|
|double|64ビットの高精度浮動小数点数|

* (注意) 整数リテラルの表記で利用可能な記号は「_」のみ。（先頭・末尾・記号の前後では利用不可能）

* char型 = null; はコンパイルエラーになる。文字コードの場合は、0〜65535

* String型のObjectの生成方法。

```
String str1 = "Sample1";  //　””で文字列を囲う
String str2 = new String("Sample2");　//　String型のインスタンスをnewで生成する
```

* ver型（推論型）について
    * ローカル変数でのみ宣言可能。クラスのフィールドの宣言・メソッドの引数型では利用できないので注意！

    *コンパイル時に該当する値からリテラルの型を推論する 。その為、nullや判断できないもので初期化できない。

```
ver = null;  //　データ型が推論できない為、コンパイルエラー
ver = {1,2,3}  //　型が想定できない為、コンパイルエラー
ver list = new ArrayList<Object>();  //  OK
```

#####java.lang.Stringメソッドについて

* charAt(a)メソッド：指定された番号の文字戻す。
    注意）文字番号の開始は0から始まる。

* indexOf("xxx")メソッド：指定された文字が文字列のどの位置にあるかを戻す。存在しない場合は−1を戻す。　
    注意）文字番号の開始は0から始まる。

* substring（a, b）：指定された位置内の文字を戻す。

* replace("x", "y")　→　指定された文字と任意の文字に置き換える。
    注意）引数の型を統一する必要がある。

* contat("xx")　→　任意の文字列と引数の文字列を連結する。

```
Srting str = "hello";

System.out.printout(str.charAt(1));  // e
System.out.printout(str.charAt(5));  // 例外をスロー

System.out.printout(str.indexOf("o"));  // 4
System.out.printout(str.indexOf("hello!"));  // -1

System.out.printout(str.substring(1, 3));  // el

System.out.printout(str.replace("l", "r"));  // herro
System.out.printout(str.substring("l", 'r'));  // 引数の型が異なる為エラー

str2 = srt.concat(", world!" 
System.out.printout(str2);  // hello, world!
```
 
##３章 演算子と判定構造
* Object a = null  →　問題ない

* intern()：new String()の文字列もコンスタントプール同様の参照にする。
    * プールに同じ文字列が存在していた場合、その参照を戻す。

* switch(条件式)の条件式で戻せない型は以下である。
    * boolean
    * long
    * 小数点がつく数値　double, float

* case x　で定義できないものは、
    * null
    * 変数（finalで修飾された定数はOK）

* シグニチャ：メソッド名と引数、引数の型・個数・順番が含まれる。
    →戻り値型は含まれないので注意！

* equalsメソッドはnullが渡された場合は常にfalseを返す。

##５章 配列操作
* 配列の要素にnullは入ってもOK！

* Object型のデフォルト値はnull

* int[]の[]は宣言なので、[]内に数値を入れてはいけない。

```
int[5] array  // 宣言の[]に数値が入っているためエラー
int[5][] array  // 宣言の[]に数値が入っているためエラー
```

##６章 インスタンスとメソッド

* Object a = null　は可能。
  * 参照型は参照を持っているか、持っていないか（null）しか保持できない。

* 可変長数は最後の引数でなくてはいけない。
    * 定義方法　◯：型... 変数名, 　×：型 変数名 ...
 
```
void sample(int ...a){...}  // OK
void sample(int ...a, int...b){...}  // エラー
void sample(int a...){...}  // エラー
```
* コンストラクタを修飾するアクセス修飾子に制限はもうけられていない。

* コンストラクタの初期化子"{}"はコンストラクタの実行前に処理が行われる。

* オーバーロードの条件はシグニチャが異なること。アクセス修飾子は関係ない。

* 別のオーバーロードされたコンストラクタをコンストラクタから呼び出す際、コンストラクタ内の1番最初に記載しなくてはいけない。

* returnよりも下にコードが記載されているとそのコードの行でコンパイルエラーになる。
    * 到達不可能なコードはエラーとなる。

# ７章〜１１章はこちらから

編集中