0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java ~メソッド~】勉強メモ(5)

Last updated at Posted at 2020-12-30

Java学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

メソッド

メソッドとは、何らかの処理を割り当てた部品である。
Javaのファイルを実行すると、先ず自動的にmainメソッドが実行されます。
mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、
各メソッドが個々の処理を実行するという構造になります。

  • メソッドの流れ
.java
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メソッドが各メソッドに指示を出し、各メソッドが個々の処理を実行するという構造に
なっているから。

.java
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)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?