Für persönliche Notizen
switch
"Nicht behandelte Datentypen"
"Vorsicht bei Verwendung der Wrapper-Klasse"
Der Anfangswert ist null. Wenn Sie also versuchen, ihn unverändert zu lassen, wird er mit nullpo gelöscht.
"Zweig an Schnur"
Die Zeichenfolgen "hashCode ()" und "equals ()" werden in dieser Reihenfolge verglichen.
Fallempfindlich.
public class Sample {
static int num1;
static Integer num2;
public static void main(String arg[]) {
//Der Basisdatentyp wird auf 0 initialisiert
switch (num1) {
case 0:
System.out.println(0);
break;
default:
System.out.println(1);
break;
}
//Fallen Sie mit Nurpo
switch (num2) {
case 0:
System.out.println(0);
break;
default:
System.out.println(1);
break;
}
}
}
//Ergebnis
[skanehira@MacBook java]$ java Sample
0
Exception in thread "main" java.lang.NullPointerException
at Sample.main(Sample.java:17)
[skanehira@MacBook java]$
Zugang Dekorateur | Bedeutung |
---|---|
public | Von überall zugänglich |
protected | Nur über dasselbe Paket oder dieselben geerbten Klassen zugänglich |
nicht spezifiziert | Nur über dasselbe Paket zugänglich |
private | Nur innerhalb der Klasse zugänglich |
** endgültige und statische Dekorateure **
"So rufen Sie ein statisches Mitglied auf" --Klassenname.Statisches Mitglied --Variable name.static member
"Direkter Zugriff innerhalb der Klasse der Instanzen und statischen Mitglieder" --static → Instanz ist NG --instance → static ist OK
"Enddekorateur"
Anwendbarer Ort | Bedeutung |
---|---|
Variable | Werden Sie eine Konstante |
Methode | Kann nicht überschrieben werden |
Klasse | Kann nicht erben |
public class Sample {
public static void main(String arg[]) {
new Init();
}
}
class Init {
//statischer Initialisierer
static {
System.out.println("static initializer");
}
//Initialisierer
{
System.out.println("initializer");
}
//Konstrukteur
Init() {
System.out.println("construct");
}
}
//Ausführungsergebnis
[skanehira@MacBook java]$ java Sample
static initializer
initializer
construct
** Aufzählungstyp **
Enum
Die definierte Variable wird automatisch mit "public static final" hinzugefügt und wird zu einer Klassenkonstante.
Kann nicht mit neu instanziiert werden.
Sie können eine Schnittstelle implementieren.
Da die Schnittstelle Comparable implementiert ist, ist die Reihenfolge der definierten Variablen garantiert.
"Konstruktor / Variable / Methodendefinition vom Zählertyp"
public class Sample {
public static void main(String arg[]) {
// toString():Der Konstantenname wird zurückgegeben
System.out.println(Status.ACTIVE);
System.out.println(Status.STOP);
//Definierte Methode
System.out.println(Status.ACTIVE.getNum());
// ordinal():Konstante Position zurückgeben
//0 aus der definierten Reihenfolge,1,2...
System.out.println(Status.ACTIVE.ordinal());
System.out.println(Status.STOP.ordinal());
// values():Holen Sie sich eine Liste der definierten Konstanten
for (Status s : Status.values()) {
System.out.println(s);
}
// valueOf():Objekte mit definierten Konstanten abrufen
Status active = Status.valueOf("ACTIVE");
// name():Erhalten Sie konstanten Namen
System.out.println(active.name());
}
}
enum Status {
//Übergabe von int an den Konstruktor, um ein neues Objekt vom Typ Status zu erstellen
ACTIVE(0), STOP(1);
//Variablen definieren
private int num;
//Konstrukteur
Status(int n) {
this.num = n;
}
//Methode
public int getNum() {
return num;
}
}
//Ergebnis
[skanehira@MacBook java]$ java Sample
ACTIVE
STOP
0
0
1
ACTIVE
STOP
ACTIVE
toString()
--Wenn beim Überschreiben "public" hinzugefügt wird (ich vergesse oft ...)
finalize()
--equals () und hashCode ()
--equals ()
vergleicht, ob es sich um dasselbe Objekt handelt
Vergleichen Sie für die String-Klasse, ob sie dasselbe Zeichen sind
equals ()
gibt false zurück, wennhashCode ()
unterschiedliche Werte hat
Selbst wenn "equals ()" falsch ist, sind beide "hashCode ()" in Ordnung.Importieren Sie den statischen Paketnamen. Klassennamen. *;
statisches Paket name.class name.static importieren;
statisches Paket importieren name.class name.static variable;
import static java.lang.System.out;
public class Sample {
public static void main(String arg[]) {
out.println("import static");
}
}
//Ergebnis
[skanehira@MacBook java]$ java Sample
import static
** Vererbung **
"Überschreiben und Verbergen"
Überschreiben
Zugangsdekorateure müssen so breit oder breiter als die übergeordnete Klasse sein.
Der Rückgabewert, der Methodenname, die Anzahl der Argumente und die Reihenfolge müssen genau übereinstimmen.
Verschleierung
Wenn ein statisches Element überschrieben wird, wird das Zugriffsziel durch den Typ der Variablen bestimmt.
Bei nicht statischen Mitgliedern wird das Zugriffsziel durch den Typ der Instanz bestimmt.
"Argument variabler Länge"
Die Syntax lautet "Datentyp ...".
Muss am Ende der Argumentliste definiert werden.
Es kann nur einer definiert werden.
Wenn kein Argument übergeben wird, ist das Array leer.
Wenn Sie null übergeben, werden Sie gewarnt, wenn Sie nicht in "string" oder "[] string" umwandeln.
Die Methode, die die Argumentliste explizit definiert, wird bevorzugt aufgerufen.
"Argumente mit variabler Länge und Überladung"
Überlastungsargumente werden in der folgenden Prioritätsreihenfolge beurteilt.
Genaue Übereinstimmung → Implizite Typkonvertierung → AutoBoxing → Variable mit variabler Länge
"das und super"
Wenn kein Konstruktor definiert ist, wird zur Kompilierungszeit ein Konstruktor ohne Argumente definiert.
Wenn ein Konstruktor definiert ist, wird zur Kompilierungszeit kein argumentfreier Konstruktor definiert.
--Wenn der Unterklassenkonstruktor nicht "super ()" oder "super (mit Argumenten)" hat,
Super ()
ohne Argumente wird zur Kompilierungszeit definiert.
--dies
und super
müssen am Anfang des Konstruktors definiert werden.
-** Abstrakte Klasse **
"Was ist eine abstrakte Klasse"?
Eine Klasse mit Zusammenfassung.
Abstrakte Methoden (mit Zusammenfassung) und konkrete Methoden (mit Implementierung) können definiert werden.
Kann nicht instanziiert werden.
"Abstrakte Klassenvererbungsklasse" --Abstraktionsmethoden müssen überschrieben werden.
Sie können zwischen abstrakten Klassen erben, müssen jedoch die abstrakte Methode nicht überschreiben.
Alle abstrakten Methoden müssen implementiert werden.
Statische Elementdefinition der abstrakten Klasse
</ summary>
Die in der abstrakten Klasse definierten Instanzmitglieder müssen von der implementierten abstrakten Methode aufgerufen werden.
Die statische Methode kann wie jede andere mit class name.static member
aufgerufen werden.
** Schnittstelle **
"Was ist eine Schnittstelle"?
Es können nur abstrakte Methoden und statische Variablen definiert werden.
Sie können öffentliche statische Variablen definieren. --Subinterfaces können definiert werden.
"Konstanten und Methoden"
Da statische Variablen zwangsweise mit "public static final" verknüpft sind, müssen sie zum Zeitpunkt der Deklaration initialisiert werden. --Die Methode muss "public abstract" haben, daher müssen Sie beim Überschreiben "public" verwenden.
"Implementierungsklasse"
Sie können Erweiterungen und Implementierungen gleichzeitig verwenden, müssen jedoch zuerst Erweiterungen schreiben.
"Vererbung"
Mehrfachvererbung (subIF erweitert XIF, YIF {}
) und Mehrfachimplementierung (Klasse A implementiert XIF, YIF {}
) sind möglich
byte
→char or short
→int
→long
→float
→double
--Besetzung
Umgekehrte Reihenfolge zur impliziten Typkonvertierung
Hinweis
Wenn die Datengröße in den Typ passt, können Sie sie dem Typ "Byte, Kurzschluss, Zeichen" so wie sie ist zuweisen.
Wenn beim Berechnen mit dem Operator ein A doppelt ist, float, long, int, Wenn ein B einen kleineren Datentyp hat, wird es in den anderen A-Datentyp konvertiert.
"Referenztyp-Typ-Konvertierungsregel" --Implizit
Behandeln Sie Instanzen von Unterklassen als Variablen der Oberklasse.
--Besetzung
Unterklasseninstanzen können in Oberklassentypen konvertiert werden. ――Das Gegenteil ist nicht möglich. (Weil Oberklassen keine Unterklassen enthalten)
Hinweis
Die Typkonvertierung ist für nicht vererbte Klassen nicht möglich.
** Verschachtelte Klasse ** --Was ist `?
Eine in einer Klasse definierte Klasse.
Da es sich um eines der Mitglieder der äußeren Klasse handelt, können Sie Zugriffsmodifikatoren, abstrakt und final verwenden.
Es gibt statische und nicht statische verschachtelte Klassen. Nicht statische Klassen werden innere Klassen genannt.
"Regel"
Sie können nicht denselben Namen in der äußeren Klasse verwenden.
Sie können Zugriffsmodifikatoren, abstrakt und endgültig verwenden.
Eine statische Klasse kann nicht statische und statische Elemente haben. Zugriff auf Instanzvariablen der äußeren Klasse nicht möglich. --Inner-Klassen können keine statischen Mitglieder haben. Sie können auf die Instanzvariablen der äußeren Klasse zugreifen.
"Definition und Zusammenstellung"
Verschachtelte Klassen werden ebenfalls kompiliert, sodass die generierte Klassendatei "äußerer Klassenname $ verschachtelter Klassenname.Klasse" lautet.
"Zugriff auf verschachtelte Klassen"
--Outer class. Nicht statischer Klassenname Variablenname = new Outer class (). New Non-static class name ();
--Outer class.static Klassenname Variablenname = new Outer class.static Klassenname ()
Bei Verwendung verschachtelter Klassen in Methoden
neuer nicht statischer Klassenname (). methodA ()
statische Klasse name.methodB ()
oder neue statische Klasse (). methodB ()
"Anwendung der verschachtelten Klasse"
Verschachtelte Klassen implementieren eine Schnittstelle und können abstrakte Klassen erben. Die Regeln sind die gleichen.
** Lokale Klasse ** --Was ist `?
Eine in einer Methode definierte Klasse.
"Regel"
Es können nur nicht statische Klassen definiert werden.
Zugriffsmodifikatoren können nicht verwendet werden. --Abstrakt und endgültig können verwendet werden.
Sie können auf die Instanzvariablen der äußeren Klasse zugreifen.
Von den Argumenten und lokalen Variablen der Methode der äußeren Klasse kann nur auf die als final angegebenen Variablen zugegriffen werden.
** Anonyme Klasse ** --Was ist `?
Ohne Angabe des Klassennamens in der Methode
Eine Klasse, die eine Klassendeklaration und -instanziierung mit einem einzelnen Ausdruck definieren kann.
Da es als Ausdruck definiert ist, ist am Ende ;
erforderlich.
"Regel"
Es können nur nicht statische Klassen definiert werden.
Zugriffsmodifikatoren können nicht verwendet werden.
Abstract und Final können nicht verwendet werden.
Sie können auf die Instanzvariablen der äußeren Klasse zugreifen.
Von den Argumenten und lokalen Variablen der Methode der äußeren Klasse kann nur auf die als final angegebenen Variablen zugegriffen werden. --Kann keinen Konstruktor definieren.
** Koagulation und Bindung **
"Zusammenhalt" Bezieht sich auf die Angemessenheit der Aufteilung der Klassenrollen. Wenn der Aggregationsgrad hoch ist, Es gibt eine starke Beziehung zwischen Methoden und Variablen zwischen Klassen. Der Einflussbereich ist groß, wenn eine Spezifikationsänderung auftritt.
"Kopplungsgrad" Bezieht sich auf den Grad der Abhängigkeit zwischen Klassen. Ein geringer Grad an Abhängigkeit wird als lose Kopplung bezeichnet. Es ist wünschenswert, dass der Grad niedrig ist. Ich weiß nicht, ob es passt, aber zum Beispiel bewegt sich ein Auto nicht ohne Reifen, weil es einen hohen Grad an Kupplung hat. Auch ohne DVD-Zange bewegt sich das Auto mit geringem Kopplungsgrad.
-** Komposition ** ――Eine besonders starke Beziehung in der Aggregation wird als Zusammensetzung bezeichnet. (↑ Beispiel eines Autos) Die Überlebenszeit der gesamten Klasse und der Teilklasse ist gleich.
-** Muster **
"Einzelton" Ein Muster, das nur ein Objekt erstellt. Erstellen Sie einen "privaten" Konstruktor Halten Sie die Instanz in der Variablen "private static final" Dies kann erreicht werden, indem eine "öffentliche" Methode vorbereitet wird, die eine Instanz zurückgibt.
DAO
Ein Muster, das das Persistenzobjekt und die Anwendungslogik trennt (DB-Verbindung (Datei öffnen), CRUD).
"Fabrik"
Ein Muster, das eine Klasse erstellt, die die Aufgabe hat, eine Instanz zu erstellen. In der Java-Standard-API ist dies der Wert von () jeder Wrapper-Klasse.
Java API
** Unterschied zwischen StringBuilder und StringBuffer ** --Was ist `?
Sie können Operationen an der einmal generierten Zeichenfolge ausführen. Der Punkt ist, dass Sie mit den Daten im Speicher herumspielen können, also duplizieren Sie sie nicht. Selbst wenn str1.append (str2) `das Referenzziel nicht ändert, scheint str2 zu str1 hinzugefügt zu werden.
"Unterschied"
--StringBuilder
ist nicht threadsicher, StringBuffer
ist threadsicher.
Davon abgesehen ist es fast dasselbe.
"Gleiche Methode"
Da die Gleichheit von Object nicht überschrieben wird, handelt es sich um einen Referenzvergleich.
Das Überschreiben von equals
ist String
und Wrapper-Klassen (wie Integer)
"Andere Methoden"
Konstrukteur | Erläuterung |
---|---|
StringBuffer() | Erstellen Sie einen StringBuffer mit einer Kapazität von 16 Zeichen |
StringBuffer(int capacyty) | Erstellen Sie einen StringBuffer mit der angegebenen Kapazität |
StringBuffer(String str) | Erstellen Sie einen StringBuffer, der mit den angegebenen Zeichen initialisiert wurde |
Methode | Erläuterung |
---|---|
StringBuffer append(String str) | Fügen Sie am Ende die angegebene Zeichenfolge hinzu |
StringBuffer insert(int offset, String str) | offset-Fügen Sie die angegebene Zeichenfolge an Position 1 ein |
StringBuffer reverse() | Kehren Sie die Zeichenfolge um(cba für abc) |
void setCharAt(int index, char ch) | Ersetzen Sie das Indexzeichen durch das angegebene Zeichen |
StringBuffer replace(int start, int end, String str) | Anfang bis Ende-Ersetzen Sie Zeichen bis zu 1 durch das angegebene Zeichen |
String subString(int start, int end) | Anfang bis Ende-Gibt eine Zeichenfolge zurück, die bis zu 1 Zeichen angibt |
String subString(int start) | Geben Sie die Zeichenfolge vom Anfang bis zum Ende zurück |
StringBuffer delete(int start, int end) | Anfang bis Ende-Löschen Sie Zeichenfolgen bis 1 |
** Wrapper-Klasse ** --Was ist `?
Eine Klasse zum Bearbeiten grundlegender Datentypen. Nützlich, wenn Sie eine Zahl in eine Zeichenfolge konvertieren möchten und umgekehrt.
"Methode"
- ValueOf()
Statische Methode, die den Basisdatentyp in eine Wrapper-Klasse konvertiert
- `parseXXX`
Statische Methode, die eine Zeichenfolge in einen Basisdatentyp konvertiert
- `ValueXXX`
Eine Methode zum Konvertieren einer Wrapper-Klasse in einen Basisdatentyp
--Verwenden der ListResourceBundle-Klasse
Implementierung des Ressourcenbündels und seiner Nutzungsklasse ①
Implementierung des Ressourcenbündels und seiner Nutzungsklasse ②
--Verwenden der PropertyResourceBundle-Klasse
--ResourceBundle.Control class
NumberFormat
DecimalFormat
DateFormat
SimpleDateFormat
java.util.regex
-** Sammlung ** --Was ist `?
List,Set,Queue,Map
--List Interface Implementierung
Comparable
- Comparator
checked
unchecked
throw
throws
rethrows
NIO.2
java.nio.file
java.nio.file.attribute
java.nio.channels
Suchen des Dateibaums`` --
Suche nach Dateien``JDBC
java.sql
javax.sql
javax.sql.rowset
Statement-Schnittstelle
ResultSetMetaData-Schnittstelle
RowSet-Schnittstelle
--RowSet-Implementierungstyp`` -
Connected RowSet -
Disconnected RowSet`-** Faden ** --Erstellen und starten