Vérifiez si le type est spécifié.
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.
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");
}
}
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 {}
*** - 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.
(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".
Correspondance exacte> Relation d'héritage> Conversion de type implicite (conversion étendue) (conversion de bits)> Autoboxing> Argument de longueur variable
★ 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é.
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
★ Types de classes d'imbrication
★ 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é
//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
★ Règles de classe anonymes
★ Conditions requises pour devenir une interface fonctionnelle
Recommended Posts