2019/02/06
sponsored link
メソッドの基本形
メソッドとは何なのか?一言で言えば何らかの一塊の処理を行う為の仕組みです。
それだけでは何のことやら分からないと思いますが、メソッドについてどんなに懇切丁寧に説明されてもなかなか初心者が全てを理解することは難しいと思います。
実際書いてみる、使ってみることでだんだんと理解できるので、とりあえず書き方、使い方を覚えましょう。
まずメソッドの形ですが、
メソッド名( )
このようにメソッドには必ず後ろに( )がついています。
メソッドは自分でその処理内容を定義して自由に作ることができます。( )のさらに後ろに{ }を書いてその中に処理内容を書きます。
メソッド名( ) { 処理内容 }
このような形で、そのメソッドの処理内容を定義します。
メソッドの処理内容を定義する
↓
そのメソッドを実際に使う(処理内容を実行する)
という大まかな仕組みをまずは理解できるように頑張りましょう。
勝手に呼ばれるmainメソッド
ところで、メソッドと言えば何度も登場してますよね。mainメソッドというやつです。
mainメソッドもその名の通りメソッドの一つです。
今までプログラムの実行文はmainメソッドのブロック内に書いていましたが、mainメソッドのブロック内というのは、mainメソッドの処理内容を書くところなんです。今まで変数やらif文やら配列やらを使って書いていたのは、mainメソッドの処理内容を定義していたわけです。
そしてmainメソッドを定義したclassを実行すると、そのmainメソッドの処理内容が実行される。というのが今までのところです。
なぜ、classを実行するとmainメソッドの処理内容が実行されるかと言うと、classを実行するとそこに書いてあるmainメソッドが自動的に呼ばれるようになっているからなんです。
メソッドを呼ぶというのは、要はその処理内容を実行するということです。
ここら辺は初心者が頭混乱しがちなポイントだと思います。全てを理解しようとせず、とにかく何となく大まかに理解するように努めてください。
こちらをご覧下さい。MethodTestというclassです。
MethodTest.java
public class MethodTest{ public static void main(String[] args){ System.out.println("mainメソッドが呼ばれました"); } }
このMethodTestクラスのmainメソッドの処理内容は、
System.out.println("mainメソッドが呼ばれました");
です。
この何度も出てきている「System.out.println()」というのもメソッドなのですが、ここでは単にコンソールに文字列を出力するための表記だと思っておきましょう(深入り厳禁です)。
要するに、このmainメソッドが呼ばれると「mainメソッドが呼ばれました」と出力されます。これでmainメソッドが呼ばれたらすぐ分かりますね。
この状態で、このMethodTestクラスを実行すると、
このように「mainメソッドが呼ばれました」と出力されます。つまりmainメソッドが呼ばれているのが分かると思います。
クラスを実行するとはそのクラスのmainメソッドを呼ぶということなんです。
分かったような分からんような・・。と思いながらでも進んでください。
メソッドを定義する
上記のMethodTestクラスに書いてあるのは、mainメソッドの定義です。それだけです。それ以外には何もありません。
mainがあるならsubもあっても良いだろうということで、同じようにsubメソッドも作りましょう。
MethodTest.java
public class MethodTest{ public static void main(String[] args){ System.out.println("mainメソッドが呼ばれました"); } public static void sub(){ System.out.println("subメソッドが呼ばれました"); } }
{ }ブロックに注目して下さい。余計な部分を省くと、
class MethodTest{ main(){} sub(){} }
こういう形です。classブロックの中に、「main( ){ }」と「sub( ){ }」が並んでいます。mainメソッドとsubメソッドを定義しているというのが分かりますでしょうか?これに処理内容を入れると、
class MethodTest{ main(){System.out.println("mainメソッドが呼ばれました");} sub(){System.out.println("subメソッドが呼ばれました");} }
こうなります。
ただし、メソッドを定義する際は処理内容だけでは不十分です。そのメソッドの使い方やルールについても書いておかないといけません。書く場所はメソッド名の前と( )の中です。
mainメソッドの形はもう覚えていると思いますが、メソッド名(main)の前に「public static void」、後ろの( )の中に「String[] args」を入れます。
mainメソッドに関しては決まりきった形で書く必要がありますが、自分で作るメソッドは自由にその使い方やルールも決めることができます。が、ここではとりあえずsubメソッドは、publicでstaticでvoidなメソッドですよ。と定義して下さい。 その意味については次回以降に。
それらを全部書き入れると、
class MethodTest{ public static void main(String[] args){ System.out.println("mainメソッドが呼ばれました"); } public static void sub(){ System.out.println("subメソッドが呼ばれました"); } }
さっきの形になります。横に長くなるとはみ出るから改行しただけで、改行しなくても同じです(けど、改行するのが普通です)。
ではこのmainメソッドとsubメソッドを定義したMethodTestクラスを実行してみましょう。
呼ばれたのはmainメソッドだけです。せっかく定義したのにsubメソッドにはお呼びはかかりませんでした。先ほど言ったようにmainメソッドはそのclassを実行したときに自動的に呼ばれるからです。subメソッドを定義しても勝手には呼んでもらえません。
メソッドを呼ぶ
mainメソッドは勝手に呼ばれますが、mainメソッド以外のメソッドは自分で呼ばないとダメです。では呼んであげましょう。
class MethodTest{
public static void main(String[] args){
System.out.println("mainメソッドが呼ばれました");
sub();
}
public static void sub(){
System.out.println("subメソッドが呼ばれました");
}
}
こうです。呼ぶ時は処理内容を定義するための{ }は要りませんし、使い方を定義する為のpublicもstaticもvoidも要りません。
これがメソッドを呼ぶのか定義するのかの違いです。
そして大事なのは呼ぶ場所です。mainメソッドのブロック内で呼んでますよね?mainメソッドのブロック内というのはmainメソッドの処理内容を書くところです。つまり、mainメソッドが実行されると、subメソッドも呼ばれる(実行される)ように書いてあるわけです。
これでこのクラスを実行すると、
ちゃんとsubメソッドも呼ばれているのが確認できます。
メソッドは一度定義しておけば何度でも使えるので、こんなこともできます。
class MethodTest{ public static void main(String[] args){ System.out.println("mainメソッドが呼ばれました"); sub(); sub(); sub(); sub(); sub(); } public static void sub(){ System.out.println("subメソッドが呼ばれました"); } }
「sub();」を5回繰り返すなら、こんな風にも書けますね。for文のおさらいです。
class MethodTest{
public static void main(String[] args){
System.out.println("mainメソッドが呼ばれました");
for(int i=0; i<5; i++){
sub();
}
}
public static void sub(){
System.out.println("subメソッドが呼ばれました");
}
}
実行結果はどちらもこうなります。↓
今回はsubメソッドというのを自分で定義して、自分で呼び出してみました。
メソッドを定義する、そしてそれを呼ぶ(実行する)という仕組みが何となく分かりましたでしょうか?細かい部分は書いているうちにだんだんと分かってくると思うので、まず定義と呼び出しという大まかな仕組みを理解しましょう。
次は「引数」というのを使ってメソッドを作ります。
今だけ→転職できなければ全額返金の「エンジニア転職保証コース」
絶対エンジニアになる!→テックエキスパート
フリーランスエンジニアの収入例を見てみる→レバテックフリーランス
コメント
class Super {
int num = 10;
static int snum = 20;
void method() {
System.out.println(“Super:metod”);
}
{
class Sub exteds Super {
int num = 20;
static int snum = 40;
void method() {
System.out.println(“Sub:metod”);
}
static void smethod() {
System.out.println(“Sub:smethod”);
}
}
class Sample {
public static void main (String[] args) {
Super b = new Sub();
System.out.println(b.num);
System.out.println(b.snum);
b.method();
b.smethod();
}
}
by void 2014/06/23 23:35
class MyTest
{
{
System.out.println(“initalizer”);
}
static {
System.out.println(“static initalizer”);
}
MyTest() {
System.out.println(“constructor”);
}
public static void main(string[] args){
MyTest() mt = new MyTest();
}
}
by void 2014/06/23 23:45
基本情報取得を目指している者です。分かりやすくて大変参考になります。勉強させていただきます。
by ryotaro suzuki 2015/08/06 22:55
メソッドの理解が曖昧だったので、とても勉強になりました。とてもわかりやすかったので、これからも参考にさせていただきます。
by seigo 2016/05/03 01:50
メソッドを呼び出すとなんのメリットがあるのですか?
ど素人ですみません
by ど素人です 2016/05/19 18:55
ど素人です>
メソッドを呼び出す利点
・メソッドは何回でも呼び出せます
・classの中身を分かりやすくします。
・場合によっては処理が速くなります。
mainメソッドで処理を行うので、メソッドを呼び出す形式にすればmainメソッドがごちゃごちゃにならないので分かりやすいです。
また、メソッドを使えば、同じような処理を行う時に何度も書かないで済むので、mainメソッドがごちゃごちゃになりにくいです。
mainメソッドが分かりやすいことでどんな処理をしているかもわかりやすくなります。
重複処理も、メソッド内なら見つけやすいので処理速度を上げることにつながります。
by 初心者です 2017/03/15 19:39