BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(Java III)

基本

  • メソッドとは、何らかの処理を割り当てた部品
  • 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);
  }