メソッド
メソッドとは命令文の事です。クラス内で実行される最小の単位です。あるまとまった処理に名前をつけます。よく使う機能を後から何度でも使えるように名前をつけます。メソッドは、クラスの中に作成します。
値を渡すと、処理を行って結果を返してくれます。数学で習う関数の「1つの値xが決まるとyが決まる」という概念に近いです。
xの値を引数として受け取り、それに対応するyの値を返してくれます。
- x
- 引数
- y
- 戻り値
数学と違うのは、プログラムでは、引数も戻り値もないメソッドも存在します。
メソッドのメリット
同じ処理をメソッドにすることで、次のようなメリットが生まれます。
- プログラムがスッキリする
- プログラムの修正がしやすくなる
以下のような、ややこしいプログラムがあったとします。
赤字の部分の処理ABCは2箇所ありますが、処理の順番も内容も全く同じです。これを1つのメソッドとしてまとめてしまえば、
ややこしいプログラムは以下のように書けます。
非常にスッキリしました。
また、処理ABCを修正する必要がある場合、メソッド化されていない時には2カ所を修正しなければいけませんが、メソッド化されていると、修正箇所はfooメソッドの中の1箇所で済みます。修正すべき箇所が多くなるとバグ(不具合)が起きやすくなってしまうので、重複している処理はメソッド化されていることが望ましいです。
メソッドの宣言
最もシンプルな宣言
void、メソッド名、()と書きます。メソッドの処理の始まりを{で、終わりを}で示します。voidは戻り値がないことを意味します。
クラスのブロックの中に、mainメソッドとは別のメソッドを宣言しています。というキーワードがありますが、今は気にせず進めましょう。
ここでは、引数も戻り値もない「hello」というメソッドを宣言しています。メソッドは宣言されないと実行できません。mainメソッド内で実行されている、というコードを、”呼び出し側”と呼びます。
引数と戻り値の宣言
戻り値のデータ型を記述するためには、の代わりに適切なデータ型を使用します。の間には引数を宣言します。引数の宣言は、変数の宣言と同じ形式で行います。の部分は、の形式で宣言します。メソッドの処理の最後には、文を使用して値を呼び出し側に返します。
引数とは?
メソッド内で必要とする情報を、呼び出し時に与える値のことです。呼び出し側が、「メソッドが必要とする情報を教えてあげる」といった感じになります。
Excelには集計するという「sum関数」があります。
「ここからここまでを集計して」と指示します。この「ここからここまで」という情報を渡すのが引数の役割です。
呼び出し側と関数本体側の値のやり取りは、特別な変数のようなものを介して行います。
メソッドの宣言時に()の中に宣言します。と書かれている部分のことです。
引数に名前をつけてみましょう。
引数名も変数名と同様、任意の名前を使用することができますが、ここでは"num"という名前を使用してみました。
これは、メソッドの中で使う名前で、ここに値が入ってくる想定で、メソッドの中に処理を書いていくことになります。
引数numに10を足した結果を画面に出力する、という処理にしてみました。numの値によって画面に出力される結果が変わります。
また、引数を複数宣言することも可能です。
引数は、メソッドの中のみで有効な変数のようなものです。メソッドが終了すると値はクリアされます。
引数の渡し方
引数でデータを渡すには、メソッドを呼び出す時の内に値または変数を指定します。メソッドの中の処理に値を渡します。
squareという名前の渡した値を自乗するメソッドを作ってみました。
引数numを自乗した結果をprintlnで画面に出力します。
変数iに3を代入しています。引数でiを渡すと、3がsquareメソッド側のnumに代入されます。自乗されて「9」が出力される、という結果になります。
引数が複数ある場合には(カンマ)で区切って渡してやりましょう。
戻り値とは?
戻り値とは、メソッドが処理した結果を呼び出し側に返す値のことです。数学の関数でいうyの値に相当します。
return文を使って値や状態などを返します。メソッドの終了前に値を返します。
引数の例で作成したsquareメソッドで、numを自乗した結果をreturnするようにしました。
変数iに代入した3が、square関数側で自乗されて「9」が返ってくる、という結果になります。戻り値をどう扱うかは呼び出し側次第なので、融通のきくプログラムになります。
コマンドラインとは?
コンピュータの操作をキーボードから直接入力して行うインターフェースの事をと呼びます。コマンドプロンプト(Windows)やターミナル(macOS、Linux)と呼ばれるアプリケーションで、キーボードから入力したコマンドから始まる一連の文字列の事をコマンドラインと言います。
例えば、cd コマンドです。
change directoryの略で、現在の作業ディレクトリ(つまり、現在コマンドを実行しているフォルダ)を変更することができます。他にも、ファイルの作成や削除、プログラムの実行、システム設定の変更などをコマンドラインから行うことができます。コマンドも、プログラムの一種だということです。
コマンドライン引数とは?
コマンドを実行する際に、続けて指定する追加の情報やデータのことです。ファイルのコピーをコマンドラインで実行するには、以下のように記述します。
「a.txtというファイルをb.txtという名前でコピーする」という事です。この、または の部分のことを、コマンドライン引数と呼びます。
Javaソースコードのコンパイルは、実はコマンドラインで行われます。コマンドを使います。
というファイルをコンパイルすると、というファイルが作成されます。
mainメソッドを持つJavaのクラスを実行する際も、実はコマンドラインで実行されています。 コマンドを使います。
この時、ファイルの拡張子を指定する必要はありません。
Javaのアプリケーションはmainメソッドから実行されます。この時に、プログラムに追加の情報やデータを渡すことが可能です。
、はmainメソッドの引数になります。
HelloJavaクラスをコマンドライン引数付きで実行すると、
出力結果はこのようになります。
コマンドライン引数のデータ型
コマンドライン引数のデータ型は文字列です。
数値を指定した場合も文字列になります。とです。
の実行結果は
になります。算術演算子で文字列連結が行われたということになります。
では、算術演算子で足し算をしたい場合にはどうするのでしょう?
クラスのを使います。
- 引数
- 数値に変換したい文字列
- “123”
- “456”
- 戻り値
- 変換後の数値
- 数値に変換できない場合はエラー
アルファベットや漢字、ひらがななどは数値に変換できないのでエラーになります。
の実行結果は
になります。