[Java] Syntaxe orientée objet - Méthode / argument de classe

Méthode / champ de classe

Méthode de classe

//Définissez la méthode de classe getTriangleArea pour la classe Figure
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));
  }
}

Classe d'utilité

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

Champ de classe

Figure.java


//Champ Pi, définition de la méthode getCircleArea dans le membre de classe de la classe Figure

public class Figure {
  public static double pi = 3.14;

  //Accéder aux champs de classe à partir des méthodes de classe
  public static void getCircleArea(double r) {
    System.out.println("L'aire du cercle est" +  r * r * pi);
  }
}

StaticBasic.java


public class StaticBasic {
  public static void main(String[] args) {
    //La figure est accessible de l'extérieur
    System.out.println(Figure.pi); //3.14
    Figure.getCircleArea(5); //L'aire du cercle est de 78.5
  }
}

Modèle d'une tonne

public class MySingleton {

  //Enregistrer uniquement l'instance dans le champ de classe
  private static MySingleton instance = new MySingleton();

  //Déclarer le constructeur privé
  private MySingleton() {}
  //Obtenez l'instance préparée par la méthode de classe
  public static MySingleton getInstance() {
    return instance;
  }
}

Constante de classe

public class MyApp {
  public static final String BOOK_TITLE = "Maître Java!";
}
public class ConstantBasic {
  public static void main(String[] args) {
    System.out.println(MyApp.BOOK_TITLE); //Maître Java!
    //Ne peut pas être affecté au champ final
    //MyApp.BOOK_TITLE = "Je serai un maître Java!"; //Erreur
  }
}

bloc d'initialisation statique

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";
  }
}

Ordre d'exécution d'initialisation

** (1) Initialisation de classe une seule fois **

** (2) Exécuté à chaque fois qu'un objet est créé **

//Mauvais exemple
//Le bloc d'initialisation a priorité sur l'initialiseur de champ
public class Order {
  //Initialiseur de champ
  String value = "First!";
  //constructeur
  public Order() {
    System.out.println(value); //Second!!
  }
  //Le bloc d'initialisation s'exécute avant la construction
  {
    value = "Second!!";
  }
}
public class OrderBasic {

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

Méthode d'argument de longueur variable

public class ArgsParams {
  //Comme argument...Recevoir des arguments de longueur variable avec
  public int totalProducts(int... values) {
  // public int totalProducts(int[] values) {
    var result = 1;
    //Valeurs d'argument reçues par étendu pour et appliquées au résultat
    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}));
  }
}
//Le premier argument est une initiale normale
//Déclarez le deuxième argument et les suivants avec une longueur variable
//Erreur de compilation sans arguments
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
  }
}

Arguments et types de données

public class ParamPrimitive {
  public int update(int num) { //Argument formel num
    //Manipuler des arguments formels
    num *= 10;
    return num;
  }
}
public class ParamPrimitiveBasic {
  public static void main(String[] args) {
    //Nombre variable
    var num = 2;
    var p = new ParamPrimitive();
    System.out.println(p.update(num)); //20
    //N'affecte pas la variable d'origine num
    System.out.println(num); //2
  }
}
public class ParamRef {
  //Copiez l'adresse de référence des données variables dans les données d'argument formel
  public int[] update(int[] data) { //Données d'argument formel
    //Manipulation des données d'argument formel
    data[0] = 5;
    return data;
  }
}
public class ParamRefBasic {

  public static void main(String[] args) {
    //Données d'argument réelles
    var data = new int[] { 2, 4, 6 };
    var p = new ParamRef();
    //La même valeur que l'argument réel et l'argument formel sera référencée dans l'appel de méthode.
    System.out.println(p.update(data)[0]); //5
    //La manipulation des données d'argument formel affecte la variable d'origine
    System.out.println(data[0]); //5
  }
}
public class ParamRefArray {
  //L'argument réel et l'argument formel pointent vers le même au moment de l'appel de méthode
  public int[] update(int[] data) {
    //Lorsqu'un nouveau tableau est attribué, l'adresse de référence elle-même change.
    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
  }
}

mesures nulles

import java.util.Map;

public class BookMap {
  //Code ISBN: gérer les informations du livre par titre de livre
  private Map<String, String> data;
  //Initialiser les informations du livre avec la mappe d'arguments
  public BookMap(Map<String, String> map) {
    this.data = map;
  }
  //Obtenez le titre en utilisant le code ISBN (argument isbn) comme clé
  public String getTitleByIsbn(String isbn) {
    //Renvoie null si la clé spécifiée n'existe pas
    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", "Pierre philosophale",
        "978-4-7981-5202-8", "salle des Secrets",
        "978-4-7981-5382-7", "Prisonnier d'azkaban"
        ));

    var title = b.getTitleByIsbn("978-4-7981-5757-3");
    if (title == null) {
      System.out.println("Disapparition!(ne pas)");
    } else {
      System.out.println(title.trim()); //Pierre philosophale
    }
  }
}

Simplifiez le code ci-dessus avec la classe facultative!

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", "Pierre philosophale");
          put("978-4-7981-5202-8", "salle des Secrets");
          put("978-4-7981-5382-7", "Prisonnier d'azkaban");
        }
      });

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

public class OptionalExample {

  public static void main(String[] args) {
    //Création d'objets en option
    var opt1 = Optional.of("Échantillon 1");
    //Permettre null
    var opt2 = Optional.ofNullable(null);
    var opt3 = Optional.empty();

    //Confirmation de l'existence de la valeur
    System.out.println(opt1.isPresent()); //true
    //Exécution de l'expression Lambda si la valeur existe
    opt1.ifPresent(value -> {
      System.out.println(value); //Échantillon 1
    });

    //Si la valeur de opt2 existe, sa valeur est affichée, et si elle est nulle, l'argument est affiché.
    System.out.println(opt2.orElse("valeur nulle")); //valeur nulle

    //Exécution de l'expression Lambda lorsque opt3 est nul
    System.out.println(opt3.orElseGet(() -> {
      return "valeur nulle";
    })); //valeur nulle
  }
}

Recommended Posts

[Java] Syntaxe orientée objet - Méthode / argument de classe
Programmation Java (méthode de classe)
java (méthode)
[Java] Syntaxe orientée objet --Classe / champ / méthode / portée
Méthode Java
Méthode de classe
[Java] méthode
[Java] Orienté objet
[Java] méthode
[Débutant] Méthode / classe / bibliothèque externe Java [Note 23]
[Java] Méthode d'instance, champ d'instance, méthode de classe, champ de classe, résumé du constructeur
Syntaxe de contrôle Java
Méthodes de classe Java
Syntaxe de contrôle Java
[Java] Héritage de classe
classe Scanner java
Classe Java HashMap
FizzBuzz orienté objet (Java)
[Java] Résumé orienté objet_Partie 1
java (classe abstraite)
Référence de la méthode Java8
[Java] Classe imbriquée
Classe anonyme Java
[Java] Syntaxe orientée objet --Constructeur
[Java] méthode forEach
Notions de base orientées objet (Java)
À propos de la classe Java
[Java] Résumé orienté objet_Partie 2
[java] Classe abstraite
référence de la méthode java8
[Java] Classe d'objets
Classe locale Java
[Java] Méthode aléatoire
[Java] méthode de fractionnement
[Java] Syntaxe orientée objet --Package
[Android] Appeler la méthode d'argument par défaut de Kotlin depuis Java
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
[Java SE 11 Silver] Résumé des méthodes de classe Arrays [Java débutant]
Incrémenté du troisième argument de la méthode iterate de la classe Stream ajoutée depuis Java9
À propos de la division de classe (Java)
[Débutant] Méthode / encapsulation de champ de classe Java (getter setter) [Note 25]
Méthode de connexion JAVA DB
À propos de la classe Java StringBuilder
Java Learning 2 (Apprenez la méthode de calcul)
[Java] À propos de la classe Singleton
Mémo d'apprentissage Java (méthode)
À propos de la liaison de méthode Java
[Java] Note sur la syntaxe de contrôle
A propos des méthodes de fractionnement (Java)
Etudier Java 8 (voir méthode)
Examen de la classe interne Java
Champ de type de classe Java
À propos de la classe Java String
Programmation Java (structure de classe)
[Java] Notes de méthode de base
À propos de la classe abstraite de Java
Comment obtenir le nom d'une classe / méthode exécutée en Java
[Java] Référence de classe de wrapper Integer