【Java】メソッド・型

# ０．はじめに
Javaを大学で学んでおります。
概念や特徴を以下の文類に分けてまとめました。

##### 関連学習
[【Java】用語](https://qiita.com/AkihideKato/items/13ba72a0c61eabc540c3)
[【Java】メソッド・型](https://qiita.com/AkihideKato/items/753ad55b10b29f184b0f)
[【Java】オブジェクト指向](https://qiita.com/AkihideKato/items/3eb988a962774a409f52)	
[【Java】インスタンス・コンストラクタ](https://qiita.com/AkihideKato/items/78fc47812f4eccad03cf)
[【Java】例外処理](https://qiita.com/AkihideKato/items/b0840610fc553c57cf1d)
[【Java】注意点・ルール](https://qiita.com/AkihideKato/items/63402744493932e9f87b)
[【Java】コードの記述向上にむけて（個人用memo）](https://qiita.com/AkihideKato/items/33fd1400be6be2e25f5a)

# １．メソッド
まとまっと処理の道具、具体的な処理や動作のこと
車で言う**加速させるや停止させる行為**
**引数と戻り値を持つ**
複数のメソッドを宣言する多重定義（オーバーロード）などがある

### メソッドの宣言
```java
public static 戻り値の型 メソッド名{ 引数：複数可能}			
	メソッド内容;		
	return 戻り値;		
}			
			
例：			
public static int sum ( int a, int b, int c){			
	int s = a + b + c;		
	return s;		
}			
```

### メソッドの呼び出し
```java
int 変数 = メソッド名(引数,,,);			
System.out.println(変数);			
			
例：			
int num = sum(10,20,30);			
System,out.println(num);			
出力結果：60			
```
### 標準ライブラリメソッド		
事前に``Java内``に標準化されているクラスが存在する	
そのクラスのメソッドを使用することが可能（乱数を生成する``Randomクラス``やこれまで使用した``Scannerクラス``など）	
使用する際は
- １．メソッドをインポートする
- ２．変数に使用する

### 多重定義（オーバーライド）
**メソッドを上書きし多重定義すること**
一つのクラス内に同じ名称のメソッドを複数宣言をすること
同じメソッドをコンパイルしてもエラーにならない
引数の数によって自動的に対応するメソッドを呼び出すことができる
注意点としては、**同一の引数や型の個数が同一のメソッドは多重定義できない**											
### 例
```java
public static void main(String[] args){
    int num = average(a,b);
    int num2 = average(a,b,c);
//avarageメソッドが複数呼び出されているが引数の型が異なる
//引数の型ごとに自動的に呼び出されるためこのような形式でも可能となる
}
```
### 注意点
- **同じ型の組み合わせのメソッドがある場合エラーになる**		
どっちが対応しているのか分からなくなっちゃうため	
- **必要な個数が対応づいていないメソッドが無い場合エラーになる**		
どのメソッドを使えばいいのかわからないためエラーになる	


## 様々なメソッド
|メソッド|詳細|
|:---:|---|
main|大元のメソッド
println|改行される
print|改行されない
printf|整数や実数を指定して出力が可能<br>整数の場合はprintf("%d",a)	<br>実数の場合はprintf("%f",a)	<br>など出力の変形が可能		
next|空白までの区切りで読み込む
nextLine|行の終わりまでを文字列として読み込む
length|文字列の長さを取得する<br>変数名.length();<br>スペースの数も文字数に含む<br>配列の場合は要素数の長さを取得する<br>配列の場合は()カッコなし（a.length)で取得可能<br>a = [10,20.30]の場合<br>a.lengthは「3」
charAt|文字列の先頭を「0」としn番目の文字を返す<br>**String str = "abcde";**<br>**char c = chatAt(int 3);**<br>この場合は3番目のdを返す<br>スペースの数も文字数に含む	
equals|文字列を等しいかどうか判断する<br>大文字と小文字は等しくないためfalseを返す<br>しかしequalsIgnoreCaseと記述すると大文字と小文字を区別しない<br>そのためtrueを返す	
indexOf|文字列を探索する<br>見つけた場合は「最初に」見つかった文字数目を返す<br>大文字小文字の違いも見極める<br>探索した文字列が無い場合は「-1」を返す<br>**String str = "Abc";**<br>**String str2 = "abc";**<br>**int a = str.indexof(str2);**<br>**System.out.print(a)→出力：「-1」**
toUpperCase()|アルファベットの各文字を大文字に変換して返す
substring|m番目～n-1番目の文字列を生成し返す<br>変数名 . substring(m,n);
toCharArray|文字列を文字配列に変換し返す<br>**String a = "tokyo"**<br>**char[] b = a.toCharArray();**<br>**System.out.print(b[2]);**<br>**出力：「k」**		

## １-１．Scannerクラス関連メソッド
|メソッド|詳細|
|:---:|---|
next|	空白までの区切りで読み込む
nextLine|	行の終わりまでを文字列として読み込む
nextInt|整数<br>**int a = 変数名.nextInt()**<br>読み込んだ整数値がint型の変数に代入される
nextDouble|	実数
hasNextInt|	次に読み込む数値があるかどうか調べるメソッド
hasNextDouble|	while文と併用する印象がある（以下参考コード）

# ２．型
|型|詳細|
|:---:|---|
char型|1文字を扱う
String型|文字列を扱う<br>「参照型」のクラスとして扱われる<br>intの場合2が「代入」されaは2となる<br>**int a=1,b=2;**<br>**a=b;**<br>**System.out.print(a);出力：「2」**<br>**Stringの場合aはbを「参照」するためaはbとなる**<br>**String a = "a", b = "b";**<br>**a=b;**<br>**System.out.print(a);→b**