Mémorandum Java (liste)

Un mémorandum de note

◆ Erreur de compilation

-Erreur: \ <identifiant > est manquant.

Vérifiez si le type est spécifié.

◆ Avertissement (le fichier de classe a été généré)

-Attention: Le fonctionnement de "Nom de fichier" est décoché ou dangereux.

Remarque: pour plus d'informations, recompilez avec l'option -Xlint: décochée. Vérifiez si l'inférence de type par Generics <> est décrite.

◆ Autre

・ Initialiseur d'instance

ArrayList et HashMap peuvent être initialisés sur une seule ligne.


// {{}}← C'est la syntaxe de l'initialiseur d'instance

List<String> list = new ArrayList<>() {{add("A"); add("B"); add("C");}}

//Compte tenu de la lisibilité, c'est comme suit.

List<String> list = new ArrayList<> {
  { add("A");
    add("B");
    add("C");
  }
}

・ Instanceof opérateur

Si le côté gauche (instance) a le même type, la même relation d'héritage ou la même relation d'implémentation que le côté droit (type), "true" est renvoyé. Si les types sont pas du tout </ font>, vous obtiendrez une erreur de compilation.


//·syntaxe
//<exemple> instanceof <Type de type>

class Main{
  public static void main(String... args){
    System.out.println(new A() instanceof B); // false
    System.out.println(new B() instanceof A); // true
    System.out.println(new C() instanceof A); //Erreur de compilation
  }
}

class A {}
class B extends A {}
class C {}

-Comportement (exécuté) de l'initialiseur statique

*** - cas ① Au moment de l'instanciation de classe: *** initialiseur statique ⇒ initialiseur (bloc d'initialisation) ⇒ constructeur (L'initialiseur statique s'exécute même s'il n'y a pas de membre statique.)

*** - case② Lors de l'accès au champ statique: *** ★ Quand il n'y a pas de finale ... L'initialiseur statique s'exécute indépendamment du fait que le champ soit initialisé ou non. ★ Quand il y a final ... Si le champ est initialisé, il ne sera pas exécuté. Si le champ n'est pas initialisé, il sera exécuté.

*** - cas ③ Lors de l'accès à la méthode staic: *** Exécuté avec ou sans final.

· Règles à suivre lors de la substitution de equals () et hashCode ()

(1) La méthode hashCode pour la même instance doit renvoyer la même valeur entière. (2) Si la méthode equals est "true", la méthode hashCode doit également retourner "true". (3) Si la méthode equals est "false", la méthode hashCode peut retourner l'une ou l'autre. ④ Si la méthode hashCode est "false", la méthode equals doit également renvoyer "false".

· Priorité de méthode remplacée

Correspondance exacte> Relation d'héritage> Conversion de type implicite (conversion étendue) (conversion de bits)> Autoboxing> Argument de longueur variable

-Notes sur le type de données de base (classe wrapper)

★ Conversion de type (Conversion de type implicite) ➡︎

byte short int long float double
      |  char  |

⬅︎ (Conversion de type par fonte)

★ Conversion de réduction sans coulée Pour byte, short, char, (int), Si elle se trouve dans la plage valide, la valeur int peut être reçue sans conversion. (Long, float, double, les nombres ne sont pas autorisés)

★ Remarques sur l'utilisation des opérateurs arithmétiques Dans la variable définie, l'opérande sur le côté droit est traité comme de type int lorsque l'opérateur (prend deux opérandes ou plus) est utilisé.

  • Cela ne s'applique pas si le type de variable est long, float ou double.
byte b1 = 1;
b1 = 1 + 1;    //Pas de problème si vous n'utilisez pas de variables
b1 = --b1;     //Aucun problème en cas d'incrément
b1 = b1 * 1;   //Erreur de compilation
b1 = b1 / b1;  //Erreur de compilation

//approche
int b1 = 1;    //Déclaré comme type int
b1 = (byte)(b1 * 1);  //Pour lancer

・ Classe imbriquée

★ Types de classes d'imbrication

  • Classe imbriquée --Classe intérieure (classe non statique) --Classe locale (classe dans la méthode) --Classe anonyme
  • classe statique

★ Règles de classe imbriquées

--statique / non statique commun --Le nom de classe du même nom de la classe externe ne peut pas être utilisé

  • Les modificateurs d'accès peuvent être utilisés
  • Les modificateurs abstraits et finaux peuvent être utilisés
  • L'interface et la classe abstraite peuvent être définies
  • classe statique uniquement
  • Peut avoir des membres non statiques / statiques --Inaccessible aux variables d'instance définies dans la classe externe
  • Classes non statiques uniquement
  • Les membres statiques ne peuvent pas être définis --Accessible aux variables d'instance définies dans la classe externe --Autre
  • Les classes imbriquées (IF, abstract, class) peuvent être définies dans des interfaces et des classes abstraites
  • Les classes extérieures peuvent être implémentées et étendues
//Classe intérieure(Classe non statique)Syntaxe d'instanciation pour
Nom de classe externe.Nom de classe interne Nom de variable=nouvelle classe externe().nouveau nom de classe interne();

//Syntaxe d'instanciation de classe statique
Nom de classe externe.nom de la classe statique nom de la variable= new Nom de classe externe.nom de classe statique();

//Exemple de définition
class Outer{
  abstract class A {abstract void hoge();}
  class B extends A {void hoge(){}}
  static interface X {void bar();}
  static class Y implements X {public void bar(){}}
} 

★ Règles de classe locales

  • Modificateur d'accès non disponible
  • Modificateur statique non disponible
  • Modificateurs résumés et finaux disponibles --Accessible aux membres de la classe externe
  • Lors de l'accès aux arguments et aux variables locales des méthodes de la classe externe à partir de la classe locale, chaque variable doit être une variable sensiblement finale (constante). (Il est essentiellement considéré comme définitif même s'il n'est pas qualifié final. Par conséquent, il ne peut pas être réaffecté.)

★ Règles de classe anonymes

  • Modificateur d'accès non disponible
  • Modificateur statique non disponible --Résumé, modificateur final non disponible --Accessible aux membres de la classe externe --Accessible aux arguments de méthode de classe externe et aux variables locales en tant que variables finales de fond --La construction ne peut pas être définie --Parce qu'il est traité comme une expression, un point-virgule est requis à la fin.

・ Interface fonctionnelle

★ Conditions requises pour devenir une interface fonctionnelle

  • L'interface doit avoir une seule méthode abstraite
  • La méthode statique et la méthode par défaut peuvent être définies
  • La méthode publique de la classe java.lang.Object peut être déclarée comme une méthode abstraite </ font> --Si vous souhaitez le spécifier comme interface fonctionnelle, ajoutez l'annotation «@FunctionalInterface».

Recommended Posts