Help us understand the problem. What is going on with this article?

Javaのメソッド

はじめに

前回の配列の投稿でスパム認定されましたこんにちは。

メソッド

・メソッドとは部品だったりゲームの技ようなもの(クラスはステータスのような※あくまで私の感覚)。
クラスの{}(ブロック)の中に書かないと動かない
・メソッドを使うことによって同じ処理などする時なんども同じ処理を書かずに呼ぶだけで済むので楽。
・コードの見通しや管理が楽になる。

kane.java
public static void メソッド名() {
 実行する処理 ;
}
kane.java
class Main{
   public static void main(String[]args) {
    banana() ;  //()は必要。
   }

   public static void banana() {
    System.out.println("黄色") ;
   }
}

・戻り値とは
呼び出されたメソッドから、呼び出し元のメソッドへ返す値(データ)のことを戻り値または返り値という。

public static void main(String[] args) { }

javaのプログラムを実行した場合自動でmainメソッドから始まる。
・main メソッドが各メソッドに指示を出し、支持された各メソッドが個々の処理を実行する。

・忘れず書いとけば今はおK。

引数

・メソッドに与える追加情報のようなもの。
・メソッドを呼び出す際に呼び出し元から値を渡すことができる。
・それによって渡されたメソッド内でもその値が使えるようになる

引数を受け取れるメソッドを定義するために、メソッドの定義部分で、引数を受け取るための箱となる変数(仮引数(かりひきすう))を指定し public static void banana() の()に仮引数を指定する。
仮引数は、変数定義と同様に、データ型を指定する必要があります

kane.java
class Main{
   public static void main(String[]args) {
    banana("赤") ;  
   }

   public static void banana(String color) { //データ型を指定
    System.out.println("このバナナの色は" + color + "です。") ;
   }
}

何も引き渡す情報がなかったとしても ( ) は必要なので必ず記入する。

・複数の引数を渡す場合

kane.java
class Main{
   public static void main(String[]args) {
    banana("フィリピン", 5) ;  
   }

   public static void banana(String origin, int year) { 
    System.out.println("このバナナは" + origin + "産の" + year + "年ものです。") ;
   }
}

実行結果
このバナナはフィリピン産の5年ものです//それは腐ってます

戻り値

・呼び出し元へ値を返す。

・return
retuneはメソッドをすぐ終了させ、戻り値を戻すもの
returnは、一つのメソッドの中では戻り値が有る・無いの必ずどちらか一方です。どちらになるかはメソッドの宣言のされ方、特に戻り値の有無で決まる。

戻り値がvoidでないなら戻り値が必須
メソッドの宣言で戻り値がvoidではないなら、returnには戻り値となる値、あるいは戻り値とするインスタンスを指す変数を必ず指定しなければならない。

※データ型一覧  https://java-code.jp/68

kane.java
   public static 戻り値のデータ型 メソッド名(引数) {
    retune 戻り値 ;  
   }

   public static int add(int a, int b) { //データ型がintだから整数で返す
    retune a + b;
   }

戻り値の説明というよりデータ型の理解が深まった //自分用メモ

オーバーロード

同じメソッド名で、引数のだけが異なるメソッドを複数定義することもできる。
同名のメソッドがあっても、引数が違えばどれを呼べばいいのかコンピュータが判断できるため。

※参考 https://wa3.i-3-i.info/word17678.html

kane.java
  class Main {
  public static void main(String[] args) {
    nameData(fullName("田中", "一郎"), 25); //同じメソッド名だが数が違う
    nameData(fullName("佐藤", "マメシバ", "二郎"), 38); //同じメソッド名だが数が違う
  }

  public static void nameData(String name, int age) {
   System.out.println("名前は" + name + "で年齢は" + age + "です"); //引数を変えてやりたい同じ処理
  }

  public static String fullName(String firstName, String lastName) { //田中の方が発動する
   return firstName + " " + lastName;
  }

  public static String fullName(String firstName, String middleName, String lastName) { //佐藤の方が発動する
   return firstName + " " + middleName + " " + lastName;
  }
}

オーバーロードの主な使う理由としては引数を変えて同じ処理を行いたい場合です。

終わりに

途中投稿して完成に時間がかかりました。
戻り値とオーバーロードがどうしてもぼんやりとしか理解ができない。
やってくうちに染み付こんでいくことをお祈り。

ryota555
コーヒーとバナナ。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away