Überprüfen Sie, ob der Typ angegeben ist.
Hinweis: Für weitere Informationen kompilieren Sie erneut mit der Option -Xlint: nicht aktiviert. Überprüfen Sie, ob die Typinferenz von Generics <> beschrieben ist.
ArrayList und HashMap können in einer Zeile initialisiert werden.
// {{}}← Dies ist die Syntax des Instanzinitialisierers
List<String> list = new ArrayList<>() {{add("A"); add("B"); add("C");}}
//In Anbetracht der Lesbarkeit ist es wie folgt.
List<String> list = new ArrayList<> {
{ add("A");
add("B");
add("C");
}
}
Wenn die linke Seite (Instanz) denselben Typ, dieselbe Vererbungsbeziehung oder dieselbe Implementierungsbeziehung wie die rechte Seite (Typ) hat, wird "true" zurückgegeben. Wenn die Typen überhaupt nicht </ font> sind, wird ein Kompilierungsfehler angezeigt.
//·Syntax
//<Beispiel> instanceof <Typ Typ>
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); //Kompilierungsfehler
}
}
class A {}
class B extends A {}
class C {}
*** - Fall ① Zum Zeitpunkt der Klasseninstanziierung: *** statischer Initialisierer ⇒ Initialisierer (Initialisierungsblock) ⇒ Konstruktor (Der statische Initialisierer wird auch dann ausgeführt, wenn kein statisches Element vorhanden ist.)
*** - case② Beim Zugriff auf das statische Feld: *** ★ Wenn es kein Finale gibt ... Der statische Initialisierer wird unabhängig davon ausgeführt, ob das Feld initialisiert wurde oder nicht. ★ Wenn es endgültig ist ... Wenn das Feld initialisiert wird, wird es nicht ausgeführt. Wenn das Feld nicht initialisiert ist, wird es ausgeführt.
*** - Fall ③ Beim Zugriff auf die statische Methode: *** Mit oder ohne Finale ausgeführt.
(1) Die hashCode-Methode für dieselbe Instanz sollte denselben ganzzahligen Wert zurückgeben. (2) Wenn die Methode equals "true" ist, sollte die Methode hashCode auch "true" zurückgeben. (3) Wenn die Methode equals "false" ist, kann die Methode hashCode entweder zurückgeben. ④ Wenn die hashCode-Methode "false" ist, sollte die equals-Methode auch "false" zurückgeben.
Genaue Übereinstimmung> Vererbungsbeziehung> Implizite Typkonvertierung (erweiterte Konvertierung) (Bitkonvertierung)> Autoboxing> Argument variabler Länge
★ Typkonvertierung (Implizite Typkonvertierung) ➡︎
byte | short | int | long | float | double |
---|
| char |
⬅︎ (Typumwandlung durch Besetzung)
★ Reduktionsumwandlung ohne Gießen Für Byte, kurz, char, (int), Wenn es innerhalb des gültigen Bereichs liegt, kann der int-Wert ohne Casting empfangen werden. (Long, Float, Double, Zahlen sind nicht erlaubt)
★ Hinweise zur Verwendung von arithmetischen Operatoren In der definierten Variablen wird der Operand auf der rechten Seite als int-Typ behandelt, wenn der Operator (zwei oder mehr Operanden) verwendet wird.
byte b1 = 1;
b1 = 1 + 1; //Kein Problem, wenn Sie keine Variablen verwenden
b1 = --b1; //Kein Problem bei Inkrementierung
b1 = b1 * 1; //Kompilierungsfehler
b1 = b1 / b1; //Kompilierungsfehler
//Ansatz
int b1 = 1; //Als int-Typ deklariert
b1 = (byte)(b1 * 1); //Besetzung
★ Arten von Verschachtelungsklassen
★ Verschachtelte Klassenregeln
//Innere Klasse(Nicht statische Klasse)Instanziierungssyntax für
Äußerer Klassenname.Name der inneren Klasse Variablenname=neue äußere Klasse().neuer innerer Klassenname();
//Syntax zur Instanziierung statischer Klassen
Äußerer Klassenname.statischer Klassenname Variablenname= new Äußerer Klassenname.statischer Klassenname();
//Definitionsbeispiel
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(){}}
}
★ Lokale Klassenregeln
★ Anonyme Klassenregeln
★ Voraussetzungen, um eine funktionale Schnittstelle zu werden
Recommended Posts