[Java] Objektorientierte Syntaxklassenmethode / Argument

Klassenmethode / Feld

Klassenmethode

//Definieren Sie die Klassenmethode getTriangleArea für die Figure-Klasse
public class Figure {
  public static double getTriangleArea(double width, double height) {
    return width * height / 2;
  }
}

StaticBasic.java


public class StaticBasic {

  public static void main(String[] args) {
    System.out.println(Figure.getTriangleArea(10, 20));
//    var f = new Figure();
//    System.out.println(f.getTriangleArea(10, 20));
  }
}

Utility-Klasse

public final class Math{
  private Math() {}
}

Klassenfeld

Figure.java


//Definition des Pi-Felds und der getCircleArea-Methode im Klassenmitglied der Figure-Klasse

public class Figure {
  public static double pi = 3.14;

  //Greifen Sie über Klassenmethoden auf Klassenfelder zu
  public static void getCircleArea(double r) {
    System.out.println("Die Fläche des Kreises ist" +  r * r * pi);
  }
}

StaticBasic.java


public class StaticBasic {
  public static void main(String[] args) {
    //Die Figur ist von außen zugänglich
    System.out.println(Figure.pi); //3.14
    Figure.getCircleArea(5); //Die Fläche des Kreises beträgt 78.5
  }
}

Einzelne Tonne Muster

public class MySingleton {

  //Speichern Sie nur die Instanz im Klassenfeld
  private static MySingleton instance = new MySingleton();

  //Deklarieren Sie den Konstruktor als privat
  private MySingleton() {}
  //Lassen Sie die Instanz von der Klassenmethode vorbereiten
  public static MySingleton getInstance() {
    return instance;
  }
}

Klassenkonstante

public class MyApp {
  public static final String BOOK_TITLE = "Java Master!";
}
public class ConstantBasic {
  public static void main(String[] args) {
    System.out.println(MyApp.BOOK_TITLE); //Java Master!
    //Kann dem letzten Feld nicht zugeordnet werden
    //MyApp.BOOK_TITLE = "Ich werde ein Java-Meister sein!"; //Error
  }
}

statischer Initialisierungsblock

public class Initializer {
  public static final String DOG;
  public static final String CAT;
  public static final String MOUSE;

  static {
    DOG = "inu";
    CAT = "neko";
    MOUSE  = "nezumi";
  }
}

Ausführungsreihenfolge der Initialisierung

** (1) Klasseninitialisierung nur einmal **

** (2) Wird jedes Mal ausgeführt, wenn ein Objekt erstellt wird **

//Schlechtes Beispiel
//Der Initialisierungsblock hat Vorrang vor dem Feldinitialisierer
public class Order {
  //Feldinitialisierer
  String value = "First!";
  //Konstrukteur
  public Order() {
    System.out.println(value); //Second!!
  }
  //Der Initialisierungsblock wird vor dem Konstruieren ausgeführt
  {
    value = "Second!!";
  }
}
public class OrderBasic {

  public static void main(String[] args) {
    var o = new Order();
  }
}

Argumentmethode mit variabler Länge

public class ArgsParams {
  //Als Argument...Erhalten Sie Argumente mit variabler Länge mit
  public int totalProducts(int... values) {
  // public int totalProducts(int[] values) {
    var result = 1;
    //Argumentwerte, die von extended for empfangen und auf result angewendet werden
    for (var value : values) {
      result *= value;
    }
    return result;
  }
}
public class ArgsParamsBasic {

  public static void main(String[] args) {
    var v = new ArgsParams();
    System.out.println(v.totalProducts(12, 15, -1));
    System.out.println(v.totalProducts(5, 7, 8, 2, 4, 3));

    // System.out.println(v.totalProducts(new int[] {12, 15, -1}));
  }
}
//Das erste Argument ist eine normale Initiale
//Deklarieren Sie das zweite und nachfolgende Argument mit variabler Länge
//Kompilierungsfehler ohne Argumente
public class ArgsParamsGood {
  public int totalProducts(int initial, int... values) {
    var result = initial;
    for (var value : values) {
      result *= value;
    }
    return result;
  }
}
public class ArgsParamsGoodClient {
  public static void main(String[] args) {
    var v = new ArgsParamsGood();
    System.out.println(v.totalProducts()); //no arguments
  }
}

Argumente und Datentypen

public class ParamPrimitive {
  public int update(int num) { //Formelles Argument num
    //Formale Argumente manipulieren
    num *= 10;
    return num;
  }
}
public class ParamPrimitiveBasic {
  public static void main(String[] args) {
    //Variable num
    var num = 2;
    var p = new ParamPrimitive();
    System.out.println(p.update(num)); //20
    //Beeinflusst nicht die ursprüngliche Variable num
    System.out.println(num); //2
  }
}
public class ParamRef {
  //Kopieren Sie die Referenzadresse der Variablendaten in die formalen Argumentdaten
  public int[] update(int[] data) { //Formale Argumentdaten
    //Manipulation formaler Argumentdaten
    data[0] = 5;
    return data;
  }
}
public class ParamRefBasic {

  public static void main(String[] args) {
    //Aktuelle Argumentdaten
    var data = new int[] { 2, 4, 6 };
    var p = new ParamRef();
    //Im Methodenaufruf wird auf denselben Wert wie das eigentliche Argument und das formale Argument verwiesen.
    System.out.println(p.update(data)[0]); //5
    //Das Bearbeiten der formalen Argumentdaten wirkt sich auf die ursprüngliche Variable aus
    System.out.println(data[0]); //5
  }
}
public class ParamRefArray {
  //Das tatsächliche Argument und das formale Argument verweisen zum Zeitpunkt des Methodenaufrufs auf dasselbe
  public int[] update(int[] data) {
    //Wenn ein neues Array zugewiesen wird, ändert sich die Referenzadresse selbst.
    data = new int[] { 10, 20, 30 };
    return data;
  }
}
public class ParamRefArrayBasic {
  public static void main(String[] args) {
    var data = new int[] { 2, 4, 6 };
    var p = new ParamRefArray();
    System.out.println(p.update(data)[0]); //10
    System.out.println(data[0]); //2
  }
}

Nullmaße

import java.util.Map;

public class BookMap {
  //ISBN-Code: Verwalten Sie Buchinformationen nach Buchtitel
  private Map<String, String> data;
  //Initialisieren Sie Buchinformationen mit der Argumentzuordnung
  public BookMap(Map<String, String> map) {
    this.data = map;
  }
  //Erhalten Sie den Titel mit dem ISBN-Code (Argument isbn) als Schlüssel
  public String getTitleByIsbn(String isbn) {
    //Gibt null zurück, wenn der angegebene Schlüssel nicht vorhanden ist
    return this.data.get(isbn);
  }
}

Main.java


import java.util.Map;
public class Main {
  public static void main(String[] args) {
    var b = new BookMap(Map.of(
        "978-4-7981-5757-3", "Stein der Weisen",
        "978-4-7981-5202-8", "Raum der Geheimnisse",
        "978-4-7981-5382-7", "Gefangener von Azkaban"
        ));

    var title = b.getTitleByIsbn("978-4-7981-5757-3");
    if (title == null) {
      System.out.println("Disapparition!(Nicht)");
    } else {
      System.out.println(title.trim()); //Stein der Weisen
    }
  }
}

Vereinfachen Sie den obigen Code mit der optionalen Klasse!

import java.util.HashMap;
import java.util.Map;
import java.util.Optional;


public class BookMap {
  private Map<String, String> data = new HashMap<>();

  public BookMap(Map<String, String> map) {
    this.data = map;
  }

  public Optional<String> getTitleByIsbn(String isbn) {
    return Optional.ofNullable(this.data.get(isbn));
  }
}
import java.util.HashMap;

public class OptionalNullCheck {

  public static void main(String[] args) {
    var b = new BookMap(
      new HashMap<String, String>() {
        {
          put("978-4-7981-5757-3", "Stein der Weisen");
          put("978-4-7981-5202-8", "Raum der Geheimnisse");
          put("978-4-7981-5382-7", "Gefangener von Azkaban");
        }
      });

    var optTitle = b.getTitleByIsbn("978-4-7981-5382-7");
    var title = optTitle.orElse("×");
    System.out.println(title.trim()); //Gefangener von Azkaban
  }
}
import java.util.Optional;

public class OptionalExample {

  public static void main(String[] args) {
    //Optionale Objekterstellung
    var opt1 = Optional.of("Probe 1");
    //Erlaube null
    var opt2 = Optional.ofNullable(null);
    var opt3 = Optional.empty();

    //Bestätigung der Wertexistenz
    System.out.println(opt1.isPresent()); //true
    //Lambda-Ausdrucksausführung, wenn Wert vorhanden ist
    opt1.ifPresent(value -> {
      System.out.println(value); //Probe 1
    });

    //Wenn der Wert von opt2 vorhanden ist, wird sein Wert angezeigt, und wenn er null ist, wird das Argument angezeigt.
    System.out.println(opt2.orElse("Nullwert")); //Nullwert

    //Ausführung des Lambda-Ausdrucks, wenn opt3 null ist
    System.out.println(opt3.orElseGet(() -> {
      return "Nullwert";
    })); //Nullwert
  }
}

Recommended Posts

[Java] Objektorientierte Syntaxklassenmethode / Argument
Java-Programmierung (Klassenmethode)
Java (Methode)
[Java] Objektorientierte Syntaxklasse / Feld / Methode / Bereich
Java-Methode
Klassenmethode
[Java] -Methode
[Java] Objektorientiert
[Java] -Methode
[Anfänger] Java-Methode / Klasse / externe Bibliothek [Anmerkung 23]
[Java] Instanzmethode, Instanzfeld, Klassenmethode, Klassenfeld, Konstruktorzusammenfassung
Java-Steuerungssyntax
Java-Klassenmethoden
Java-Steuerungssyntax
[Java] Klassenvererbung
Java-Scanner-Klasse
Java HashMap-Klasse
Objektorientiertes FizzBuzz (Java)
[Java] Objektorientierte Zusammenfassung_Teil 1
Java (abstrakte Klasse)
Java8-Methodenreferenz
[Java] Verschachtelte Klasse
Anonyme Java-Klasse
[Java] Objektorientierte Syntax - Konstruktor
[Java] forEach-Methode
Objektorientierte (Java) Grundlagen
Über die Java-Klasse
[Java] Objektorientierte Zusammenfassung_Teil 2
[Java] Abstrakte Klasse
Java8-Methodenreferenz
[Java] Objektklasse
Lokale Java-Klasse
[Java] Zufällige Methode
[Java] Split-Methode
[Java] Objektorientierte Syntax --Paket
[Android] Rufen Sie Kotlins Standardargumentmethode von Java aus auf
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
[Java SE 11 Silver] Zusammenfassung der Arrays-Klassenmethoden [Java-Anfänger]
Inkrementiert durch das dritte Argument der iterierten Methode der aus Java9 hinzugefügten Stream-Klasse
Über die Klassenteilung (Java)
[Anfänger] Java-Klassenfeldmethode / Kapselung (Getter-Setter) [Anmerkung 25]
JAVA DB-Verbindungsmethode
Informationen zur Java StringBuilder-Klasse
Java Learning 2 (Lernen Sie die Berechnungsmethode)
[Java] Über Singleton Class
Java-Lernnotiz (Methode)
Informationen zur Bindung von Java-Methoden
[Java] Hinweis zur Steuerungssyntax
Informationen zu Aufteilungsmethoden (Java)
Java 8 studieren (siehe Methode)
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
Informationen zur Java String-Klasse
Java-Programmierung (Klassenstruktur)
[Java] Grundlegende Methodenhinweise
Über die abstrakte Klasse von Java
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
[Java] Integer-Wrapper-Klassenreferenz