Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。
メソッド
メソッドとは、何らかの処理を割り当てた部品である。
Javaのファイルを実行すると、先ず自動的にmainメソッドが実行されます。
mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になります。
- メソッドの流れ
class Main {
public static void main(String[] args) { //①
hello(); //②
}
public static void hello() {
System.out.println("Hello World"); //③
}
}
① mainメソッドが呼ばれる
↓
② mainメソッドの中で、helloメソッドが呼ばれる
↓
③ helloメソッドの中で、
System.out.println("Hello World")が実行される
- メソッドの定義
メソッドを使用するには、まず定義をする必要がある。
定義の仕方が下記の通り
class Main {
public static void メソッド名(){
// 実行する処理;
}
}
また、メソッドはクラスの中に定義します。
上記のコードを例に言えば、
Mainクラスのブロック({ })の中に定義されています。
このようにクラスの中に定義しないとエラーになる。
- メソッドの呼び出し
メソッドを呼び出すには、メソッド名();
と記入する。
またメソッドの呼び出しには、mainメソッドの中に記入する。
何故なら、先程流れの所でも記載しましたが、
mainメソッドが各メソッドに指示を出し、各メソッドが個々の処理を実行するという構造に
なっているから。
class Main {
public static void main(String[] args) {
hello(); // メソッドの呼び出し
}
public static void hello() {
System.out.println("Hello World");
}
}
- 引数
引数とは、メソッドに与える追加情報のようなもの。
メソッドを呼び出すときに、一緒に引数を渡すと、メソッドの中でその値を利用することができます。
メソッドに引数を渡すには、まず引数を受け取れるメソッドを定義しなければならない。
その為には、メソッドの定義部分で、引数を受け取るための箱となる変数(仮引数)を指定します。
そして、「public static void メソッド名( )」の( )に仮引数を指定します。
仮引数には、データ型の指定と変数の定義をする必要があります。
class Main {
public static void メソッド名(データ型 変数名){
// 実行する処理;
}
}
class Main {
public static void study(String language){
// 実行する処理;
}
}
- メソッドに引数を渡す
メソッドに引数を渡すには、メソッド名(引数)
としてメソッドを呼び出します。
渡された引数は、メソッドの仮引数で指定した変数に代入され、
その変数はメソッドの処理の中で用いることができます。
class Main {
public static void main(String[] args) {
study("Java");
}
public static void study(String language){
System.out.println("今は、" + language + "を勉強中です。");
}
}
今は、Javaを勉強中です。
- 複数の引数
メソッドが複数の引数を受け取るためには、仮引数をコンマ(,)で区切って定義します。
また、引数は左から順番に「第1引数、第2引数・・・」と呼ぶ。
class Main {
public static void メソッド名(データ型 変数名1, データ型 変数名2){ //左から順番に第1引数、第2引数
// 実行する処理;
}
}
実際に、メソッドに複数の引数を渡します。
仮引数は任意に順番を決められますが、メソッドを呼び出すときは、
仮引数の順番通りに引数を渡さなければなりません。
なので、study("Java", 2)と、引数を渡す順序が反対になっていると
String型の仮引数に整数を入れようとするので、エラーになってしまう。
class Main {
public static void main(String[] args) {
study(2, "Java");
}
public static void study(int month, String language){
System.out.println(month + "ヶ月前から、" + language + "を勉強中です。");
}
}
2ヶ月前から、Javaを勉強中です。
- メソッドの戻り値
メソッドの処理結果を、メソッドの呼び出し元で使いたい場合があります。
このようなときは、メソッドが戻り値を返すようにします。
戻り値のあるメソッドには、メソッドの中でreturnを使う事と、
ここまで定型だった「public static void」のvoidの部分を指定するデータ型に変更します。
メソッドの中でreturnを使うと、returnの値をメソッドの呼び出し元に返すことができます。
また、これまで定型だったvoidとは、戻り値がない、という意味です。
なので、このように戻り値のない(returnがない)メソッドには、voidを指定します。
public static 戻り値のデータ型 メソッド名(引数){
return 戻り値;
}
class Main {
public static void main(String[] args) {
int total = add(2, 8); // 変数を定義は、「変数名 = 値」 で代入する事が出来る
System.out.println(total);
}
public static int add(int a, int b){
return a + b;
}
}
addメソッドは、戻り値が整数なので「public static int」となる。
10
- メソッドのオーバーロード
基本的には、同名のメソッドは原則として定義出来ません。
が、引数の型や個数が違う場合は同名のメソッドを定義できます。
このように同名のメソッドを定義することをオーバーロードと言う。
class Main {
public static void main(String[] args) {
study(); //①
study("Java"); //②
}
public static void study(){
System.out.println("Javaを勉強中です。");
}
public static void study(String language){
System.out.println("今は、" + language + "を勉強中です。");
}
}
① Javaを勉強中です。
② 今は、Javaを勉強中です。
- 引数と戻り値を合わせた応用
※double型は、小数を表すデータ型
class Main {
public static void main(String[] args) {
printData(fullName("John", "Christopher", "Smith"), 175.5);
}
public static void printData(String name, double height) {
System.out.println("私の名前は" + name + "です");
System.out.println("身長は" + height + "cmです");
}
public static String fullName(String firstName, String middleName ,String lastName) {
return firstName + " " + middleName + " " + lastName;
}
}
私の名前はJohn Christopher Smithです
身長は175.5cmです
- 真偽値の戻り値
真偽値のデータ型は、boolean型です。
ここで作られたisEvenメソッドは、引数の値が偶数かどうかを調べ、偶数であればtrue、奇数であればfalseを返します。
class Main {
public static void main(String[] args) {
int number = 4;
if(isEven(number)){
System.out.println("偶数です");
} else{
System.out.println("奇数です");
}
}
public static boolean isEven(int a){
return a % 2 == 0; // 2で割り切れれば偶数なのでtrue、割り切れなければ奇数でfalseを返す
}
}
偶数です
過去投稿記事 - [【Java~変数の定義、型変換について~】勉強メモ](https://qiita.com/k-yasuhiro/items/43ef789c8be7b669046a) [【Java ~真偽値~】勉強メモ2](https://qiita.com/k-yasuhiro/items/5a75e6130552abd03934) [【Java ~条件分岐・繰り返し処理~】勉強メモ3](https://qiita.com/k-yasuhiro/items/cc7ceb00bc795d1ea33c) [【Java ~配列~】勉強メモ4](https://qiita.com/k-yasuhiro/items/97da0fe073ce5f8ce8d4)