広告
↓発売日:2017年04月04日↓
Java 第2版 入門編 ゼロからはじめるプログラミング (プログラミング学習シリーズ) 新品価格 |
いよいよ最終日です!今回はメソッドについて見ていきます!
「System.out.print」命令や「if」命令みたいな「命令」の事を正しくはメソッドといいます!というのを覚えてますでしょうか?
「命令」の方が覚えやすいと思い今まで呼んできましたが正しくは「メソッド」といいます。
なので今回から正しくメソッドと呼びたいと思います。
話を戻します。
そしてこのJava言語入門で学んでいるような最初から使えるメソッドの事を標準メソッド(ひょうじゅんメソッド)といいます。
(※正確には標準クラスライブラリに用意されているメソッドです)
そしてこの標準メソッドを組み合わせて「自分だけのオリジナルメソッド」を作れるというワケです。
そうすれば同じ作業の繰り返しなんかを「自分だけのオリジナルメソッド」にまとめて好きな時に使えて便利ですよね!
そんなワケで今回はメソッドを自分で作ってみましょう!
なにやら難しそうですが、やる事はさきほども言いましたがメソッド(命令)を組み合わせて、一つにまとめるだけです!
さっそく見てみましょう!
/*最終日 プログラム1*/ class Test{ public static void main(String args[]){ System.out.print("メソッド「my_method」はhello world!と表示します!"); System.out.print("\n\n"); my_method(); System.out.print("\n\n"); System.out.print("完了しました!\n"); } public static void my_method(){ System.out.print("hello world!"); } }
「hello world!」とだけ表示するメソッド「my_method」を作ってみました。
新しくメソッドを作る時はいつもの「public static void main()」の外側にそのメソッドの事を書きます。
public static void my_method(){ System.out.print("hello world!"); }
こちらが今自分で作った新しいメソッドですね!
「my_method」というこちらの部分が名前になりますので元からあるメソッド名などとかぶらなければ自分で好きな名前をつけて大丈夫です。
その他の部分に関しては「public static」という部分が「いつでもどこでも使ますよ!」という意味で「void」とかその後の()カッコの部分は「何も値を受け取らないし、何も値を返しませんよ」という感じの意味なのですが、今はとりあえず何も考えずこのカタチで覚えてしまいましょう!
使う時は
my_method();
これだけで大丈夫です!
一度だけではなく使いたい時に何度でもこれを書けば「my_method」を実行してくれます。
さきほどのプログラムの流れです。
(1)「public static void main()」から始まります!
↓
(2)途中でメソッド「my_method」が呼び出されます!
↓
(3)メソッド「my_method」を実行したら、「public static void main()」の続きに戻ります!
プログラムは必ず「public static void main()」から始まって「public static void main()」で終わります。
なのでどんなにすごいメソッドを作っても「public static void main()」を書かないとプログラムは始まらないのでご注意ください。
こんなのでいいの?と思われた方、いると思います。
今回はプログラムのキホンに重点を置いておりますので、メソッドも「命令をひとまとめにするもの」という説明をさせて頂きますが、もちろんまだ他にもいろいろ便利な使い方があります。
もう少し詳しくメソッドの事を知りたい方は「Java言語 メソッド」などでインターネット検索してみてください。
広告
変数の宣言している場所にご注目ください!「public static void main()」の前で宣言してみます!
/*最終日 プログラム2*/ import java.util.*; class Test{ public static int tate = 0; public static int yoko = 0; public static void main(String args[]){ Scanner sc = new Scanner(System.in); System.out.print("四角形の面積を計算します!\n"); System.out.print("縦の長さを入れてください! > "); tate = sc.nextInt(); System.out.print("横の長さを入れてください! > "); yoko = sc.nextInt(); System.out.print("\n"); menseki(); } public static void menseki(){ System.out.print("縦" + tate + "、横" + yoko + "の四角形の面積は\n"); System.out.print((tate * yoko) + "です!\n"); } }
縦の長さと横の長さを入力してもらい「menseki()」というメソッドで計算して表示しております。
変数もどの場所で宣言するかによって使い方が少し変わってきます。
あらためて変数の宣言した場所にご注目ください!
class Test{ public static int tate = 0; public static int yoko = 0; public static void main(String args[]){ /*省略*/ } public static void menseki(){ /*省略*/ } }
「public static void main()」の前に宣言していますね!このような場所で頭に「public static」というのをつけて変数を宣言すると「public static void main()」の中だけではなく、どこでも使えるような変数になります。
それに対して今まで使っていた「public static void main()」の中で宣言していた変数をローカル変数といいます!
という事はその「public static void main()」の中で宣言した変数は他のメソッドでは使えないという事になりますよね。
プログラムで確認してみましょう!
/*最終日 プログラム3*/ class Test{ public static void main(String args[]){ int suji = 10; System.out.print(suji + "\n"); System.out.print("\n\n"); my_method(); } public static void my_method(){ System.out.print(suji + "\n"); } }
エラーになったかと思います。「public static void main()」の中で宣言された変数「suji」をメソッド「my_method」の中で使おうとしたのでエラーになりました。
これは他のメソッド同志でも同じ事が言えます。
例えば上のプログラムで言いますとメソッド「my_method」の中で宣言した変数はメソッド「my_method」の中でしか使えません!
全体で使いたい変数は必ず先ほどのように「public static void main()」の前で宣言しましょう!
ちなみにこの全体で使えるようにした変数の事を正確には「クラステストのパブリックな静的メンバ変数」みたいな言い方をするのですが、この言い方はクラスの事やアクセス修飾子とかの事を学ばないと意味不明だと思うので、ここでは「どこでも使えますよ!」という意味でC言語で使われる「広い範囲で使える変数」を意味するグローバル変数と呼びたいと思います。
では別々の場所で同じ名前の変数を宣言した時はどうでしょう?
こちらも確認してみましょう!
/*最終日 プログラム4*/ class Test{ public static void main(String args[]){ int suji = 100; System.out.print("[main]suji = " + suji); System.out.print("\n"); my_method(); System.out.print("\n"); System.out.print("[main]suji = " + suji); } public static void my_method(){ int suji = 50; System.out.print("[my_method]suji = " + suji); } }
変数「suji」を「public static void main()」とメソッド「my_method」2ヶ所で宣言してます。
変数「suji」の値に注目です。最初「100」から始まり、途中で「50」になって、また「100」に戻りました。
これは「public static void main()」とメソッド「my_method」の中のそれぞれの変数「suji」は
「別のもの」
という事です!
くり返しますが
「グローバル変数」・・・全ての場所で使えます。
「ローカル変数」・・・宣言したメソッドの中でだけ使えます。
メソッド「my_method」の中で宣言した変数「suji」にご注目ください!
/*最終日 プログラム5*/ class Test{ public static void main(String args[]){ System.out.print("変数「suji」に注目!\n\n"); System.out.print("my_method「一回目」"); my_method(); System.out.print("\n"); System.out.print("my_method「二回目」"); my_method(); } public static void my_method(){ int suji = 10; suji++; System.out.print("suji = " + suji + "\n"); } }
メソッド「my_method」を2回呼び出してます。変数「suji」は2回とも「11」を表示しました。
「public static void main()」以外のメソッドで宣言されたローカル変数は
「呼び出すたびに初期化」
されます!
これは言い換えると今回の場合ではメソッド「my_method」が終わった時点で変数「suji」はなくなってしまうという事です。
メソッドを実行したあと「public static void main()」に戻る時のプログラムの流れは、そのメソッドを実行した続きからになります。
なので「public static void main()」内のローカル変数が初期化されるワケではないので注意しましょう!
/*最終日 プログラム6*/ class Test{ public static int suji = 100; public static void main(String args[]){ my_method(); System.out.print("グローバル変数の「suji」 = " + suji + "\n"); my_method(); } public static void my_method(){ int suji = 10; System.out.print("my_method内の「suji」 = " + suji + "\n"); } }
この場合もそれぞれの変数は別のものになり、使う時はローカル変数が優先されます。
もうめんどくさいので全てグローバル変数にすればいいじゃん!と思った方、いると思います。
少しマトモ?なプログラムを組み始めればわかるかと思いますが、変数を甘くみてはいけません。
あまりの変数の多さに絶望します。
早いウチからローカル変数とグローバル変数にきちんと分けるクセをつけておく事をオススメします。
/*最終日 プログラム7*/ import java.util.*; class Test{ public static int suji; public static void main(String args[]){ Scanner sc = new Scanner(System.in); System.out.print("あいさつプログラムです!\n"); System.out.print("(1)朝(2)昼(3)晩のどれかを\n"); System.out.print("選んでください(1~3) > "); suji = sc.nextInt(); aisatu(); } public static void aisatu(){ switch(suji){ case 1: ohayou(); break; case 2: konnitiha(); break; case 3: konbanwa(); break; default: break; } } public static void ohayou(){ System.out.print("おはよう!\n"); } public static void konnitiha(){ System.out.print("こんにちは!\n"); } public static void konbanwa(){ System.out.print("こんばんは!\n"); } }
このようにメソッド同志を組み合わせてより複雑なメソッドを作る事もできます!
今まで習った事だけでも簡単なゲームなど作れると思いますのでいろいろ試してみてください!
これにて「小学生でもわかるJAVA言語」を終了したいと思います!
最後までお付き合いいただいた方は感謝です!
このサイトを通して少しでもプログラミングの楽しさを感じていただけたら幸いです!
広告
↓発売日:2017年04月18日↓
Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで 新品価格 |
↓発売日:2016年06月25日↓
新品価格 |
↓発売日:2016年08月31日↓
新品価格 |
↓発売日:2018年11月21日↓
新品価格 |
↓発売日:2016年12月15日↓
新品価格 |
↓発売日:2016年09月28日↓
新品価格 |