トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの文法:関数(メソッド)

クラスのメソッド

  • クラスに関わる振る舞い、機能、動作を示すもの。メンバ変数に対してメンバ関数とも呼ぶ。
    • すでに一部のプログラムで用いてきた。
    • 例)System.out.println()の場合、printlnはSystem.outのメソッドである。

 メソッドの定義

  • メソッドの一般的な定義は以下のとおりである。
<修飾子> <戻り値の型> <メソッド名>(<引数の型> <引数名>) {
	<メソッド中の処理>
	return <戻り値>;
}
  • 例:偶数かを調べるメソッド
boolean isEvenNumber(int x) {
	return (x%2==0);
}

 メソッド名

  • できるだけ、その動作を示す名前をつける
    • 例えば、Stringクラスの「小文字に変換するメソッドは」toLowerCase
    • 最初が小文字で単語が続く場合には、一文字目だけ大文字とする

 引数

  • メソッド内の処理に用いられる変数をメソッドに渡す場合に使われる。","で区切ることで複数の引数リストをメソッドに渡すことができる

引数が一つのメソッド

<修飾子> <戻り値の型> <メソッド名>(<引数の型> <引数名>) {
	<メソッド中の処理>
	return <戻り値>
}
  • 例:与えられた名前(name)が「田中」から始まるかどうか
boolean isTanaka(String name) {
	return name.startsWith("田中");
}

引数が複数のメソッド

<修飾子> <戻り値の型> <メソッド名>(<引数の型1> <引数名1>,<引数の型2> <引数名2>,...<引数の型n> <引数名n>) {
	<メソッド中の処理>
	return <戻り値>
}
  • 例:与えられた名前(name)が与えられた姓(lastName)から始まるかどうか
boolean isStartWithLastname(String name,String lastName) {
	return name.startsWith(lastName);
}

引数の1つもないメソッドの場合

  • 引数が1つもないメソッドの場合、以下のような宣言となる
<修飾子> <戻り値> <メソッド名>() {
	<メソッド中の処理>
}

mainメソッドの引数

  • コマンドラインからjavaプログラムを実行する場合、引数がなければ、以下のようになる。
java <クラス名>
  • 引数がある場合は、以下のようになる。
java <クラス名> <オプション1> <オプション2> <オプション3> ... <オプションn>
    • コマンドラインオプションはmainメソッドに、String[]型(配列については他の回に)の引数の形で渡される
  • これらのオプションにアクセスする例
1
2
3
4
5
6
7
8
9
package sample;

public class CommandLineOptions {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}
    • Eclipseで実行するプログラムに対してオプションを渡す場合、[実行]−[構成と実行]を開き、[引数]タブで[プログラムの引数]に入力し実行する。

 戻り値

  • メソッドが実行されたのちに、返される値のこと。

void

  • 戻り値のないメソッドではvoidというキーワードが付与される
    • voidとは「空の」という意味
<修飾子> void <メソッド名>(<引数>) {
	<メソッド中の処理>
}
  • 例:mainメソッド
public static void main(String[] args) {
}

 メソッドのシグニチャ

  • 戻り値の型、メソッド名、引数リストを合わせたもの->これでメソッドが識別される

 メソッドの呼び出し

一般的な呼び出し

<クラス名>.<メソッド名>(<引数リスト>)

あるいは

<インスタンス>.<メソッド名>(<引数リスト>)

同じクラス内から呼び出す場合

  • 同じクラス内からメソッドを呼び出す場合、<クラス名>を省略することができる
<メソッド名>(<引数リスト>)

 メソッド例

SimpleMethod

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package sample.basic;

public class SimpleMethod {
    int add(int a,int b) {
        return a+b;
    }
    int multiple(int a,int b) {
        return a*b;
    }
    public static void main(String[] args) {
        int x=3,y=5;
        SimpleMethod simpleMethod = new SimpleMethod();
        System.out.println("x="+x);
        System.out.println("y="+y);
        System.out.println("x+y="+simpleMethod.add(x,y));
        System.out.println("x*y="+simpleMethod.multiple(x, y));
    }
}

 犬クラス

  • ここではDogクラスの吠える(bark)メソッドを以下のように書いたものとする。
1
2
3
4
5
6
7
8
9
10
package dog;
class Dog {
    public void bark() {
        System.out.println("ワンワン!");
    }
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.bark();
    }
}
  • Dogクラスをインスタンス化して、barkメソッドを呼び出すとbarkメソッドで記述された「ワンワン!」がきちんと表示されることがわかる
[コマンドラインの場合]
C:\>java dog.Dog
ワンワン!
CommandLineOptions.java SimpleMethod.java

最終更新時間:2008年05月29日 11時37分31秒