イントロダクション
今回は「メソッド」についてやります。前回やった「メインメソッド」との違い、作り方などについて記載します。
Javaでのはじめのプログラム「ハローワールド」を実装しました。これは、クラスを作り、メインメソッドを作り、起動する。という順序で作業を行いました。下のものはターミナル(コマンド実行でやったものです。)
メソッドを実装する
まずは、前回作成したコードを見て見ます。
「MainMethodTest」クラスに「メインメソッド」を実装しています。
/**
* メインメソッドテストクラス
*/
public class MainMethodTest {
/** メインメソッド */
public static void main(String[] args) {
System.out.println("Hello World");
}
}
<ショート動画>
ハローワールドのコード解説 in スクラッチ
上の、「\/\**」〜「*/」で囲まれている部分のことをJavaDocと呼び、クラスやメソッドの説明コメントとして記述する場所です。
このJavaDocはHTMLドキュメントとして、出力して使うことができるので綺麗に、見えるように記載することをお勧めします。
※javadocコマンドを使用します。ほか、eclipseなどのIDEでも出力することができます。
しかし、今回は、説明が増えてしまうので、ダメなJavaDocを記載しています。
そして、「\/*」〜「*/」で囲まれている部分のことをコメントと呼び、メソッドの説明などに使用します。しかし「// XXXX」という形で1行コメントが書けますので、こちらのほうが多く使われているように感じます。
ハローワールドを実際にやってみた動画です。
コマンドの話
今回、前回もですが、コマンドからJavaを起動するのに多少のコマンドに対する知識→使い方を知っておくと便利なので記載しておきます。
コマンド
というのは、Macであればターミナル、Windowsであればコマンドプロンプト
を使用して実行することです。下のような画面です(Macの場合)
カレントディレクトリ:コマンドプロンプトやターミナルを開いたとき、表示されているディレクトリコマンド「pwd(MacやLinuxで使用できます。)」
ちなみにウィンドウズの場合は初めからカレントディレクトリが表示されています。
コマンドの左側に「C:¥Document¥XXXX」のように書いてあるのがそれです。開いたときに現在いるフォルダを示します。
試しに「open」コマンドを叩く(入力してエンターキー押下)するとフォルダが表示されるので試しにどうぞ。
<そのほか>
- MacやLinux
- lsコマンド→カレントディレクトリのファイル一覧
- cdコマンド →ディレクトリの移動
- Windows
- dirコマンド→カレントディレクトリのファイル一覧
- cdコマンド→ディレクトリの移動
があります。
メソッドの実装
前回作成したのはメインメソッドでした、今回は通常のメソッドを実装します。
メインメソッドは、どんな時でも「必ず1つで、必ず起動する」ものでしたが、今回の通常のメソッドは「似たようなものがたくさんあって必ずしも起動しなくても良い」ものになります。まぁ「不要なものは作成しない」の基本ですが。。。例外としてそのようなこともあり、「実装上でのビルドエラーもありませんよ」ということです。
百聞は一見にしかず
早速コードを見て見ましょう。土台にするのは前回のコードです。変更するのは「1+1」の表示を加えて見るところです。
/**
* メインメソッドテストクラス
*/
public class MainMethodTest {
/** メインメソッド */
public static void main(String[] args) {
System.out.println("Hello World");
outCaluclation();
}
/** 1 + 1の計算結果をコンソールに出力 */
public static void outCaluclation() {
System.out.println("1 + 1 = " + (1 + 1));
}
}
上記のコードで、メインメソッドはpublic static void main(String[] args) {XXX}
と始まる部分で、
その下にあるpublic static void outCalculation() { XXX}
と実装している部分が通常のメソッドになります。
四則演算の解説
しかし、今回は説明のため、メインメソッドから直接メソッドをよびだしていますが、これはあまりお勧めできない実装方法です。
理由は、不用意に「staticメソッドを作成しない」ということです。インスタンスを作成する必要がないのであれば、問題ありませんが、「なんとなく」でしようするのは「よろしくない」ということです。
本来ならば下のように実装します。
/**
* メインメソッドテストクラス
*/
public class MainMethodTest {
/** メインメソッド */
public static void main(String[] args) {
MainMethodTest main = new MainMethodTest();
System.out.println("Hello World");
main.outCaluclation();
}
/** 1 + 1の計算結果をコンソールに出力 */
public void outCaluclation() {
System.out.println("1 + 1 = " + (1 + 1));
}
}
<ショート動画:四則演算の例>
処理内容について
<クラスとメソッドの解説がある動画です>
メインメソッドの中で行なっている処理は下のようになります。1行ずつ理解していくのがポイントです。
1: public class MainMethodTest { // このクラスは「MainMethodTest」という名前のクラスですよ。という意味
2: public static void main(String[] args) { // メインメソッド、固定でどんな環境でもJavaのメインメソッドはこのように書きます。一言一句違う時は別のメソッドとしてJVMに認識されます。
3: System.out.println("Hello World"); // 標準出力に"Hello World"という文字列を表示します。
4: outCaluclation(); // 下の方に定義している「outCaluclation();」メソッドを呼び出します。
5: public void outCaluclation() { // outCaluclationメソッドの宣言(定義)、返却値なし、引数なしのメソッドを定義します。
6: Systme.out.pintln("1 + 1 = " + (1 + 1)); // outCaluclation()メソッドの処理を記述します。文字列「1 + 1 = 」を作成、1 + 1の計算結果を左の文字列に連結しコンソールに出力
コメントが、長ったらしくなりましたが。以上のような内容で処理を行なっています。
引数
ここで、ちょっときになる部分があります。
System.out.println("Hello World");
の"Hello World"
は一体なんなのか?というところです。実際にプログラムをいじって見ると、ここの部分は変更してやると表示内容が変わります。
この部分を引数と呼びます。そしてvoidと書いてある部分は「返り値」を定義する部分になります。「void」は「返り値なし」という意味です。
例を下に挙げます。メソッドの書き方です。
アクセス修飾子 返り値 メソッド名(引数) { ... };
①「どのクラスからもアクセスできる、返り値がStringの引数なし」のメソッド「say」を定義すると下のようになります。
public String say() { ... }
②「どのクラスからもアクセスできる、返り値がStringの引数がint型」のメソッド「hello」を定義すると下のようになります。
public String hello(int num) { ... }
アクセス修飾子に関してはこちらの記事をご参考ください。
サンプルとして下の動画を作成しました。
ついでに、プログラム引数を使用してみた動画も作りました。
ソースコードを中心に解説
Step1_1.javaを解説しています。パッケージの書き方、メインメソッド、JavaDoc、通常のコメントなどです。
今回はここら辺で。
関連ページ
- Java はじめて 1 〜メインメソッド〜
- Java はじめて2 〜メソッドを呼び出す〜
- Java はじめて3 〜コメントの書き方〜
- Java はじめて4〜練習問題をやってみる〜
- Java はじめて5 〜変数について〜
- Java はじめて6 〜変数について2、byte, char, boolean型〜
- Java はじめて7 〜配列とは、配列の使い方〜
- Java はじめて8 〜booleanとif~
- Java はじめて 9 〜switch文〜
- Java はじめて 10 〜ループ処理A: for文1〜
- Java はじめて 11 〜ループ処理A: for文2 拡張for文〜
- Java はじめて12 〜ループ処理B: while文〜
- Java はじめて13 〜ループ処理C: do-while文〜
- Java はじめて14 〜クラスの作り方〜
- Java はじめて15 〜クラス型変数の使い方〜
- Java はじめて16 〜クラス設計から実装〜
- Java はじめて17 〜設計後の部品を実装する1〜
- Java はじめて18 〜設計後の部品を実装する2〜
- Java はじめて19 〜コンストラクタの役割を見る〜
- Java はじめて20 〜チェック処理クラスを作る〜
- Java はじめて21 〜オブジェクト指向的分析、アプリの拡張をする〜
- Java はじめて22 〜オブジェクト指向的分析、アプリ拡張の実装とテスト〜
- Java はじめて23 〜テスト駆動型開発を行う〜
- Java はじめて24 〜JUnitでのテスト駆動型開発1〜
- Java はじめて25 〜JUnitでのテスト駆動型開発2: テストケース作成〜
- Java はじめて26 〜JUnitでのテスト駆動型開発3: クラスの実装〜
- Java はじめて27 〜JUnitでのテスト駆動型開発4: 追加修正と実装〜
- Java はじめて28 〜JUnitでのテスト駆動型開発5: ファイル出力の実装〜
- Java はじめて29 〜JUnitでのテスト駆動型開発6: ファイル読み込みのテスト〜
- Java はじめて30 〜JUnitでのテスト駆動型開発7: テストクラスの実装方法〜
- Java はじめて31 〜JUnitでのテスト駆動型開発8: 処理をつなげたテスト〜
Java Basic Level1~
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Summary from Level1 to 5
- Java クラスの書き方〜ワンポイントレッスン的な〜