0
0

Java学習 メソッド

Last updated at Posted at 2024-01-26

JavaとRubyのメソッドの違い

JavaとRubyで、メソッドの役割はほとんど変わらない。
記述方法は大きく変わる。
Javaには、mainメソッドという特別な意味を持つメソッドもある。

Javaのメソッド

mainメソッド

Javaでは、Rubyと同様に自由にメソッドを定義して使用することができる。
ただし、Javaには「mainメソッド」という特殊なメソッドがある。
mainメソッドには特別な役割があり、記述の仕方も決められている。

mainメソッドのルール

1. ファイルを実行するとmainメソッドが実行される。
2. mainメソッドの引数などは、必ず決められた通りに記述する必要がある。

1. ファイルを実行するとmainメソッドが実行される。

ここまでの学習でreplitにコードを書く時、以下のように記述をしていた。

class Main {
  public static void main(String[] args) {  
      // 処理の内容
  {
}

2行目の public static void main(String[] args) の「main」の部分がメソッド名。
今までのコードは全てmainメソッドの中身を定義していた。

Javaのmainメソッドはファイルの実行時に自動で実行される。そのため、mainメソッドを実行するコードを書く必要がない。

Rubyでは、メソッドは定義するだけでは何も起きず、必ず実行する必要があった。
この点もJavaとRubyのメソッドの違う点と言える。

2. mainメソッドの引数などは、必ず決められた通りに記述する必要がある。

通常のメソッドは引数の設定などを変更できるが、mainメソッドについては書き方が決められている。
データ型等を変更してしまうとエラーになるため、以下の通りに記述する必要がある。

public static void main(String[] args) {  
      // 処理の内容
}

メソッドの使い方

Javaでメソッドを使用する方法は若干複雑なため、以下の2つに分ける。

  1. 引数を使用しないメソッドの使い方
  2. 引数を使用するメソッドの使い方

1. 引数を使用しない場合

class Main {
  public static void main(String[] args) {  
    sayHello();
  }

  public static void sayHello() {
    System.out.println("Hello World");
    return;
  }
}
実行結果
Hello World

基本的な使い方

メソッドを定義するための構文は以下。
実行したコードの6~9行目の記述

アクセス修飾子 static修飾子 返り値のデータ型 メソッド名() {
  // 処理内容
}

上記のコードの void が返り値のデータ型、 sayHello がメソッド名。
メソッドを定義するために、返り値のデータ型を指定する必要があるのはRubyと異なる点。
Rubyの場合は以下だった。

def sayHello
    # 処理内容
end

JavaとRubyではメソッド定義方法に以下の違いがある。

  1. 返り値のデータ型を指定する必要がある
  2. 引数がないメソッドでも定義時にかっこの省略はできない
  3. Rubyの「def」「end」の代わりに、波かっこでコードを囲む

1. 返り値のデータ型を指定する必要がある

Javaのメソッド定義では、返り値のデータ型を指定する必要がある。
return 1;といったように返り値が整数型であれば、メソッド名の前に「int」と記述する。

public static int returnNumber() {
    return 1;
}

先ほど実行したコードのように返り値がない場合は、「中身がない」ことを意味する「void」と記述する。

2. 引数がないメソッドでも定義時にかっこの省略はできない

rubyの場合は以下のように省略できた。

# 引数がない場合
def sayHello
    // 処理
end

# 引数がある場合
def sayHello(name)
    // 処理
end    

javaでは省略できないため以下のように空の () を記述する。

sayHello()

3. Rubyの「def」「end」の代わりに、波かっこでコードを囲む

Rubyでは、メソッド定義の開始を示す「def」、終わりには「end」という文字が必要だった。
Javaではそのような記述の代わりに、実行したい処理を「 { 」(開始)と「 } 」(終了)で囲みます。

実行方法
メソッド名が「sayHello」の場合は、以下のように記述することでメソッドを呼び出すことができる。

sayHello();

引数が必要ないメソッドでも、かっこは省略できない。

2. 引数を使用する場合

class Main {
  public static void main(String[] args) {
    var answer = square(15);
    System.out.println(answer);
  }

  public static int square(int number){
    return number * number;
  }
}
実行結果
225

基本的な使い方

メソッド実行時に引数(本引数)を square(15) のように指定し、メソッドで引数(仮引数)を square(int number) のように受け取る仕組み。

メソッドの定義
public static int square(int number){
  return number * number;
}

int number の部分が仮引数。

変数名「number」だけでなく、受け取る値のデータ型(今回はint)を指定する必要がある点がRubyとは違う。

このメソッドの場合、返り値は整数型です。そのため、メソッド名の前に「int」と記述している。

実行方法は以下

square(15);

「square(15)」のように、メソッドsquare()を実行する際に、引数として「15」を指定。

このように、引数の使い方はRubyの場合とほぼ同じで、仮引数にデータ型の指定が必要なことだけが異なる点。

修飾子

Javaには、「修飾子」と呼ばれる機能がある。
修飾子はクラスやメソッド、変数などの定義を行う際に、特定の機能を付加するもの。

アクセス修飾子

public static void sayHello() {
    // 処理
}

上記では public がアクセス修飾子。

アクセス修飾子は、外部への公開範囲を設定するためのもので、

  • public
  • protected
  • private

の3種類がある。

アクセス修飾子の種類 機能
private 同一クラス内からのみアクセスできる
protected 現在のクラスとサブクラスからアクセスできる
public どのクラスからでもアクセスできる

Javaでは、publicにする必要がないものは、極力privateを使用した方が良いとされている。

static修飾子

public static void sayHello() {
    // 処理
}

上記では、 static がstatic修飾子。

staticは英単語で「静的」という意味。静的とは、状態が変化しないことを意味する。

メソッドの定義の際に、staticをつけることで「静的メソッド」として定義される。静的メソッドは、「クラスメソッド」とも呼ばれる。

クラスメソッドの役割や使い方は、Rubyとおおむね同じ。

staticを付けない場合は、「インスタンスメソッド」として定義される。

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