基本
- メソッドとは、何らかの処理を割り当てた部品
- Javaのファイルを実行すると、自動的にmainメソッドが実行される
- mainメソッドの処理をメソッドに切り分けると、mainメソッドが各メソッドに指示を出し、各メソッドが個々の処理を実行するという構造
- 今のとこと良く分からないが、他の言語のfunctionみたいなもんなのか?
- メソッドはクラスの中に定義する。クラスの中に定義しないとエラーになる
- メソッドを呼び出すためには、メソッド名()とする
- 戻り値があるメソッドは、戻り値のデータ型を指定する。ここまで定型だった「public static void」のvoidの部分で指定。
- これまで定型だったvoidとは?→voidは戻り値がない、という意味
- 同名のメソッドは原則として定義できない(メソッドを呼び出したときにどのメソッドを用いればいいのか、コンピュータがわからなくなってしまうため)
- ただし、引数の型や個数が違う場合は同名のメソッドを定義できる。(同名のメソッドがあっても、引数が違えばどれを呼べばいいのかコンピュータが判断できるため)→同名のメソッドを定義することをオーバーロードと言う
- クラス名の最初の文字は大文字にし、ファイル名は「クラス名.java」としなければならない
- Javaは、ファイルではなくクラスを実行する。。
- 実行時にmainメソッドが呼ばれるが、正確にはmainメソッドを持つクラスしか実行できない(mainメソッドのないクラスは、他クラスから呼び出して使う)
- クラス名に関係なく、実行時にはmainメソッドが呼ばれる(Mainクラスだからmainメソッドが呼ばれる、というわけではない)。
- そうなんだ。助かる。→「ライブラリは、Googleで検索すれば使い方がわかりますので、覚える必要はありません。」
メソッド呼び出し 基本
class Main { public static void main(String[] args) { printData(); } public static void printData(){ System.out.println("私の名前はKate Jonesです"); } }
引数 一番シンプルなやつ
class Main { public static void main(String[] args) { printData("Kate Jones"); printData("John Christopher Smith"); } public static void printData(String name) { System.out.println("私の名前は"+name+"です"); } }
2つの引数
class Main { public static void main(String[] args) { printData("Kate Jones",27); printData("John Christopher Smith",65); } public static void printData(String name,int age) { System.out.println("私の名前は" + name + "です"); System.out.println("年齢は"+age+"歳です"); } }
return
class Main { public static void main(String[] args) { String name=fullName("Kate","Jones"); printData(name, 27); } public static void printData(String name, int age) { System.out.println("私の名前は" + name + "です"); System.out.println("年齢は" + age + "歳です"); } public static String fullName(String firstName,String lastName){ return firstName + " " + lastName; } }
オーバーロード一例
class Main { public static void main(String[] args) { printData(fullName("Kate", "Jones"), 27); printData(fullName("John", "Christopher", "Smith"), 65); } public static void printData(String name, int age) { System.out.println("私の名前は" + name + "です"); System.out.println("年齢は" + age + "歳です"); } public static String fullName(String firstName, String lastName) { return firstName + " " + lastName; } public static String fullName(String firstName,String middleName,String lastName) { return firstName + " " + middleName + " " + lastName; } }
メソッドを組み合わせる
class Main { public static void main(String[] args) { printData(fullName("Kate", "Jones"), 27, 1.6, 50.0); } public static void printData(String name, int age, double height, double weight) { System.out.println("私の名前は" + name + "です"); System.out.println("年齢は" + age + "歳です"); System.out.println("身長は" + height + "mです"); System.out.println("体重は" + weight + "kgです"); double bmi=bmi(height,weight); System.out.println("BMIは"+bmi+"です"); } public static String fullName(String firstName, String lastName) { return firstName + " " + lastName; } public static double bmi(double height,double weight){ return weight / height / height; } }
booleanメソッドを使って、変数の値によって結果を変える
class Main { public static void main(String[] args) { printData(fullName("Kate", "Jones"), 27, 1.6, 50.0); } public static void printData(String name, int age, double height, double weight) { System.out.println("私の名前は" + name + "です"); System.out.println("年齢は" + age + "歳です"); System.out.println("身長は" + height + "mです"); System.out.println("体重は" + weight + "kgです"); double bmi = bmi(height, weight); System.out.println("BMIは" + bmi + "です"); if(isHealthy(bmi)){ System.out.println("健康です"); }else{ System.out.println("健康ではありません"); } } public static String fullName(String firstName, String lastName) { return firstName + " " + lastName; } public static double bmi(double height, double weight) { return weight / height / height; } public static boolean isHealthy(double bmi) { return bmi>=18.5 && bmi<25; } }
別のクラスから呼び出す
public class Main { public static void main(String[] args) { Person.printData(Person.fullName("Kate", "Jones"), 27, 1.6, 50.0); } }
ライブラリ(コード一部省略)
import java.lang.Math; class Person { public static void printData(String name, int age, double height, double weight) { System.out.println("BMIは" + Math.round(bmi) + "です"); } }
scanner(糞めんどい)
import java.util.Scanner; class Main { public static void main (String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("名前: "); String name=scanner.next(); System.out.println("こんにちは"+name+"さん"); } }
scannerその2(整数とか小数点を受け取る)※一部省略
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("年齢:"); int age = scanner.nextInt(); System.out.print("身長(m):"); double height = scanner.nextDouble(); Person.printData(Person.fullName(firstName, lastName), age, height, weight); }