Java入門まとめ（配列、引数、メソッド、戻り値、クラスとパッケージ）

## Math
### Random
![random.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/13c785f8-3b33-451b-b876-02935f81840f.png)

![random_answer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/e807e66e-3a13-416e-bd1c-cedf75624a6f.png)

## 配列
配列が作られる＝配列の一番最初の要素のアドレスが配列変数に代入される
### 点数管理
![arrays.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/c7c63040-fca6-4828-ae4f-982bd91d5456.png)

![arrays_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/ea2f5bf5-3c2c-466c-bc15-2b2b5d111729.png)

### 塩基配列生成
![dna.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/a3470596-ce91-4738-b0f6-5d85e122db1c.png)

![dna_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/2578f401-50c4-4d85-9600-dc7469c4dbfd.png)

### nullで参照を切る
```ex.java
int[] array = {1,2,3};
array = null;
array[0]=10;
```
配列のような参照型変数にnullを代入→その変数はどのアドレスも参照しない状態になる＝参照を切る
→どの変数からも指されないためその配列はガベージコレクションの対象になる

### 引数に配列
![param_arr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/74862077-c2ff-46d4-8be2-4f476c5b2355.png)

![arr_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/4f6fcb30-946f-478d-8a6e-cdcbac88eb79.png)
- printArray()の引数→参照値のコピーが入っていて、参照値自体が値として渡されている（コピーされた参照も元の配列と同じオブジェクトを指す）
## メソッド
![method.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/208e1e85-77c5-4f1c-97ce-14f24f2edbcc.png)

![method_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/6f6f12d0-afec-4bfe-8fbf-d6acfcb81345.png)
必ずmainメソッドから実行される→main()外でメソッドを呼び出しても必ずmain()内でのメソッド呼び出しが先行する
## 引数
![param.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/715ff8f4-bb25-4fb3-bec3-9c9448afc07b.png)

![param_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/e7126932-083f-40b3-9f43-d2aed51377f9.png)

## 戻り値
- たいていは戻り値を受け取るには変数を用意する（add(30,40)みたいにそのままかいてもOK）
- 戻り値は一つしか使えない
- return文はメソッドの終了を意味する
![return.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/a2e4cfd0-f1c7-4ef7-a5e7-01478e49ab83.png)

![returm_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/9af01d9a-8e68-4172-933c-b9e33c27868b.png)

### 戻り値に配列
![スクリーンショット (133).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/09ed09aa-652d-4f6e-bbc0-c0e57a6faa8b.png)

![arr_ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/05a770f3-d015-4036-bfd3-e4187ad1c4ab.png)
- 戻り値の型も配列にする
- 戻り値を格納する変数も配列変数とする

## クラスとパッケージ
クラスをパッケージに属させる場合、ソースコードの先頭にpackage文を記述
![calc_logic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/05772486-f34a-4a9a-847d-2ee322ad7f26.png)
- calcapp.logicsパッケージに属するCalcLogicクラス。tasu()とhiku()を有する
![fqcn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/696277ec-02c6-41d1-a62f-759580c0d8ae.png)
- calcapp.mainパッケージに属するCalcクラス。main()を有する
- ７＆８行目→別パッケージのクラスのメソッドを使いたいので「どのパッケージのどのクラスのメソッド」を使いたいか指定する(FQCN)
![ans.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/d9b868ea-e382-4a24-949b-366b5daf4033.png)
なお、FQCN文はimport文の入力で省略できる！→import パッケージ名.クラス名（２行目）
![import.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3932683/3068f7f9-7737-4d64-8d36-3724ff994842.png)
「CalcLogicっていう記述はcalcapp.logics.CalcLogicのこととみなせ」っていう文
calcapp.logicsに属する全てのクラスをインポートしたい場合は import calcapp.logics.*;と記述する