Ich musste Java bei der Arbeit verwenden und entschied mich für Java Silver zum systematischen Lernen. Daher werde ich kurz zusammenfassen, was ich dort anhand von Schlüsselwörtern gelernt habe.
Klassendeklarationen bestehen aus Feldern und Methoden. Der Konstruktor ist Teil der Methode
Auf Klassen, die zu einem Paket gehören, können nur Klassen im selben Paket zugreifen. Auf Klassen, die zu einem anonymen Paket gehören, kann nur von Klassen zugegriffen werden, die zu demselben anonymen Paket gehören
Ursprünglich müssen statische Felder und Methoden im Format Klassenname angegeben werden. Feldname (Methodenname). Statischer Import, um sie nur nach Namen abzukürzen
Importieren Sie den statischen Paketnamen.Name der Klasse.Feldname (Methodenname)
Fügen Sie Methodennamen in statischen Importdeklarationen für Methoden keine Klammern oder Argumente hinzu
Sie können mehrere Methoden in einer Klasse definieren. Die Methoden zum Starten der Verarbeitung, die Beschreibungen der Einstiegspunkte und die Regeln lauten jedoch wie folgt.
public static void main(String[] args) {
}
Der Java-Befehl ist ein Befehl zum Starten einer JVM. Die Syntax lautet wie folgt
Java voll qualifizierter Klassenname[Argument Argument ...]
Zu den Java-Datentypen gehören primitive Typen (Ganzzahl, Gleitkommazahl, Boolescher Wert, Zeichen) und Referenztyp (Objekttyp, Aufzählungstyp, Array-Typ). Die Datentypen der primitiven Typen sind wie folgt Es gibt keinen Bool-Typ
Datentyp | Wert |
---|---|
boolean | true,false |
char | 16-Bit-Unicode-Zeichen |
short | 16-Bit-Ganzzahl |
int | 32-Bit-Ganzzahl |
long | 64-Bit-Ganzzahl |
float | 32-Bit-Gleitkommazahl mit einfacher Genauigkeit |
double | 64-Bit-Gleitkommazahl mit einfacher Genauigkeit |
Ein Literal ist ein im Quellcode beschriebener Wert. In Java werden ganzzahlige Werte als int-Typ, doppelter Typ für schwebende Dezimalwerte, boolescher Typ für boolesche Werte und char-Typ für Zeichen behandelt. Wird sein
Durch Hinzufügen eines Suffixes oder Präfixes können andere Datentypen und Notationen als Dezimalzahlen angegeben werden.
・ Beispiel für ein Suffix langer Typ ・ ・ ・ L, Schwimmertyp ・ ・ ・ f
・ Beispiel für ein Präfix 0 ・ ・ ・ oktadezimal 0x ・ ・ ・ hexadezimal 0b ・ ・ ・ Binärzahl
Die numerische Notation mit Unterstrich wird verwendet, um die Sichtbarkeit von numerischen Literalen mit vielen Ziffern zu verbessern, und unterliegt den folgenden Regeln
char ist ein Datentyp, der ein Zeichen darstellt Dem Chara-Typ kann Folgendes zugewiesen werden
Zeichenliterale sollten in einfache Anführungszeichen gesetzt werden Schließen Sie Zeichenfolgenliterale in doppelte Anführungszeichen ein
Ein Bezeichner ist der Name einer Variablen, Methode, Klasse usw. Die Grundlagen können frei entschieden werden, es gibt jedoch die folgenden Regeln
null null ist ein Literal, das darstellt, dass eine Referenztypvariable keine Referenz enthält. Anders als leere Zeichen ("")
So rufen Sie die Methode auf:
Eine Signatur besteht aus einer Reihe von Methodennamen und einer Liste von Argumenten. Java verfügt über einen Mechanismus namens Überladung. Möglicherweise gibt es mehrere Methoden mit demselben Namen. Verwenden Sie daher Signaturen, um die Methoden zu identifizieren.
In der Sprache C usw. muss der Code geschrieben werden, um den Speicher im Programm zuzuweisen oder freizugeben. Java verfügt jedoch über eine automatische Speicherverwaltungsfunktion. Der Garbage Collector findet unnötige Instanzen und zerstört sie, was als Garbage Collection bezeichnet wird. Das Ziel der Garbage Collection ist eine Instanz, auf die von nirgendwo mehr verwiesen wird, und als typisches Timing, wenn einer Variablen null zugewiesen wird.
Die Arten und Bedeutungen von Zuweisungsoperatoren sind wie folgt
Operator | Anwendungsbeispiel | Bedeutung |
---|---|---|
= | a = 10; | Ersetzen Sie a durch 10 |
+= | a += 10 | a bis a+Ersatz 10 |
-= | a -= 10 | a bis a-Ersatz 10 |
*= | a *= 10 | a bis a*Ersatz 10 |
/= | a /= 10 | a bis a/Ersatz 10 |
Es gibt zwei Arten von Minusoperatoren (-): Subtraktion und positive / negative Inversion.
Eine explizite Umwandlung ist erforderlich, wenn einer kleinen Variablen ein großer Wertebereich zugewiesen wird
int a = 15;
short b = (short) a;
Numerische Ganzzahlliterale sind im Grunde genommen vom Typ int und im Fall von Gleitkomma vom Typ double. Wenn Sie diesen Wert also in eine kleine Variable einfügen, müssen Sie ihn im Prinzip explizit umwandeln. Wenn bei einem Variablenliteral, das einem Bytetyp oder einer Kurztypvariablen zugewiesen ist, der Wert innerhalb des Bereichs liegt, tritt kein Kompilierungsfehler auf.
・ Byte-Typ und kurzer Typbereich
Modellname | Reichweite |
---|---|
byte | -128~127 |
short | -32768~32767 |
Inkrement (++) und Dekrement (-) sind Operatoren zum Addieren oder Subtrahieren von 1 zum Wert einer Variablen. In Kombination mit anderen Operatoren wird es vorab inkrementiert (dekrementiert) und dann zugewiesen, und wenn es nachfixiert wird, wird es zugewiesen und dann inkrementiert (dekrementiert).
int a = 10
int b = 10
int c = ++a //Inkrementiere a und weise dann c a zu=11,c=11
int d = b++ //Ersetzen Sie b und erhöhen Sie dann d=10,b=11
Der Vergleichsoperator ist der Operator, der den linken und den rechten Wert vergleicht und den booleschen Wert zurückgibt.
Operator | Beispiel | Bedeutung |
---|---|---|
== | a == b | wahr, wenn a und b gleich sind |
!= | a != b | wahr, wenn a und b nicht gleich sind |
> | a > b | wahr, wenn a größer als b ist |
>= | a >= b | wahr, wenn a größer oder gleich b ist |
instanceof | a instanceof b | true, wenn a eine Instanz derselben Klasse wie b oder eine Unterklasse von b ist |
,> = Kann nur große und kleine Zahlen vergleichen
Logische Operatoren werden verwendet, um mehrere relationale Operatoren zu kombinieren und komplexe Bedingungen anzugeben.
Operator | Beispiel | Bedeutung |
---|---|---|
& | a>10 & b>10 | True, wenn die Ausdrücke auf beiden Seiten wahr sind |
&& | a>10 && b>10 | True, wenn die Ausdrücke auf beiden Seiten wahr sind |
| | a>10 | b>10 | True, wenn einer der Ausdrücke auf beiden Seiten wahr ist |
|| | a>10 || b>10 | True, wenn einer der Ausdrücke auf beiden Seiten wahr ist |
! | !a>0 | Falsch, wenn der Ausdruck wahr ist,wahr wenn falsch |
&&、||Wird als Verknüpfungsoperator bezeichnet. Wenn der Ausdruck auf der linken Seite falsch ist, wird false als Ganzes festgelegt, sodass der Ausdruck auf der rechten Seite nicht ausgewertet wird. Wenn der Ausdruck auf der rechten Seite eine Verarbeitung enthält, die den Wert ändert, z. B. Inkrementieren&Oder|Das Ergebnis unterscheidet sich von.
Operatoren haben Prioritäten, und wenn sie dieselbe Priorität haben, werden Elemente mit unterschiedlichen Prioritäten in absteigender Reihenfolge der Priorität von links berechnet.
Priorität | Operator |
---|---|
1 | [Array] . (Streit) a++ a-- |
2 | ++a --a +a ~ ! |
3 | new (Schimmel) |
4 | * / % |
5 | + - |
6 | << >> >>> |
7 | < > <= >= instanceof |
8 | == != |
9 | & |
10 | ^ |
11 | | |
12 | && |
13 | ?: |
14 | = += *= /= %= &= ^= != <<= >>= >>>= |
Dieselbe Instanz wird als der gleiche Wert und derselbe Wert als der gleiche Wert bezeichnet. Die Identität wird vom Operator == beurteilt
Object a = new Object;
Object b = a; //Ersetzen Sie b durch eine Kopie der Referenz für Variable a
System.out.println(a == b); //Wird wahr sein
Äquivalenz ist die Eigenschaft verschiedener Instanzen, hat jedoch denselben Wert. Verwenden Sie die Methode equals, um festzustellen, ob sie gleich sind. Die eauals-Methode der Object-Klasse verwendet den Object-Typ als Argument und gibt den Rückgabewert des booleschen Typs zurück. Es ist üblich, in der Bar zu fahren.
//Entspricht der Methode der Objektklasse
Public boolean equals(Object obj){
return(this == obj);
}
Die Methode equals ist in der API-Dokumentation beschrieben. Für Nicht-Null-Referenzwerte x gibt x.equals (null) false zurück. Dokument des Klassenobjekts
Eine Instanz von String beschreibt nur einen String. Wenn Sie verschiedene Referenzen mit == vergleichen, wird true zurückgegeben, wenn dasselbe Zeichenliteral verwendet wird. Dies ist ein Mechanismus, der als konstanter Pool bezeichnet wird, um die Verarbeitungslast zu reduzieren.
String a = "test";
String b = "test";
System.out.print(a == b); //Die Referenz ist unterschiedlich, wird jedoch als wahr angezeigt
Der Konstantenpool ist nur gültig, wenn Zeichenfolgenliterale verwendet werden. Jedes Mal, wenn eine neue Instanz mit dem neuen Operator erstellt wird, wird eine Instanz erstellt und hat eine andere Referenz. Bei der Methode equals ist nur die Zeichenfolge identisch, sie wird jedoch bestätigt.
String a = new String("test");
String b = "text";
System.out.print(a == b); //falsch
Syttem.out.println(a.equals(b)); //Wird wahr sein
Die Syntax der if-Anweisung lautet wie folgt.
if (Bedingter Ausdruck) {
//Schreiben Sie den Prozess, wenn die Bedingungen erfüllt sind
}
Wenn das {} der if-Anweisung weggelassen wird, wird nur der erste Satz von der if-Syntax verarbeitet. Wenn ich den folgenden Code ausführe, wird nur b angezeigt.
public class Main{
public static void main(String[] args){
int a = 1;
int b = 2;
if (a = b)
System.out.println("a")
System.out.println("b")
}
}
Die Syntax der if-else-Anweisung lautet wie folgt.
if (Bedingter Ausdruck) {
//Verarbeitung, wenn die Bedingungen erfüllt sind
} else {
//Verarbeitung, wenn die Bedingungen nicht erfüllt sind
}
Die Syntax der if-else if-else-Anweisung lautet wie folgt: Wenn Sie eine Zeile zwischen else und if unterbrechen, lautet die Syntax, dass die if-Anweisung in der else-Anweisung enthalten ist.
if (Bedingter Ausdruck A.) {
//Verarbeitung, wenn der bedingte Ausdruck A erfüllt ist
} else if (Bedingter Ausdruck B){
//Verarbeitung, wenn der bedingte Ausdruck B übereinstimmt
} else if (Bedingter Ausdruck C.) {
//Verarbeitung, wenn der bedingte Ausdruck C übereinstimmt
} else {
//Verarbeitung, wenn nicht alle Bedingungen erfüllt sind
}
Die Syntax der switch-Anweisung lautet wie folgt
switch (Bedingter Ausdruck){
Fallwert:wird bearbeitet
break;
Fallwert:wird bearbeitet
break;
default :wird bearbeitet
break;
}
Es gibt Einschränkungen für die Wertetypen, die von bedingten Ausdrücken zurückgegeben werden können, und die Typen, die zurückgegeben werden können, sind auf Ganzzahltypen und Wrapper-Klassen vom Typ int und darunter, Zeichen und Zeichenfolgen sowie Aufzählungstypen beschränkt. Double, Float, Boolean usw. können nicht zurückgegeben werden.
Die Werte, die für den Fallwert verwendet werden können, sind ebenfalls wie folgt begrenzt
Schreiben Sie nach dem Prozess, der dem Fallwert entspricht, eine Pause und beenden Sie den Prozess. Wenn jedoch keine Pause vorliegt, werden alle Prozesse ausgeführt, bis die nächste Pause angezeigt wird. Im folgenden Vorgang werden a, b, c, d angezeigt
int num = 1;
switch (num) {
case(1): System.out.println("a")
case(2): System.out.println("b")
case(3): System.out.println("c")
default: System.out.println("d")
}
Der ternäre Operator ist ein Operator, der den zurückzugebenden Wert abhängig davon ändert, ob die Bedingung erfüllt ist, und die Syntax lautet wie folgt.
Boolescher Ausdruck? Ausdruck für wahr: Ausdruck für falsch
Der ternäre Operator ist schwer zu erkennen, wenn er verschachtelt ist, aber schwer zu sehen, wenn er in eine Zeile geschrieben wird. Was die Syntax betrifft? Und: werden abwechselnd angezeigt, und wenn sie endet mit: am Ende die richtige Syntax
Variable=Gleichung A.?Ausdruck, wenn Ausdruck A wahr ist
:Gleichung B.?Ausdruck, wenn Ausdruck B wahr ist
:Gleichung C.?Ausdruck, wenn Ausdruck C wahr ist
:Verarbeitung, wenn alle falsch sind
Variable=Gleichung A.?Ausdruck, wenn Ausdruck A wahr ist:Gleichung B.?Ausdruck, wenn Ausdruck B wahr ist:Gleichung C.?Ausdruck, wenn Ausdruck C wahr ist:Verarbeitung, wenn alle falsch sind
Um ein Array zu verwenden, müssen Sie eine Instanz des Arrays mit dem neuen Schlüsselwort deklarieren. Die Sequenz hat die folgenden Eigenschaften.
int[] array = new int[4]
Die println-Methode ist eine Methode, die den an das Argument auf der Konsole übergebenen Wert druckt. Wenn Sie einen Objektverweis auf diese Methode übergeben, wird die toString-Methode der referenzierten Instanz aufgerufen und das Ergebnis angezeigt. Wenn Sie einen Array-Verweis auf diese Methode übergeben, wird die toString-Methode der Array-Instanz aufgerufen und ein kombinierter Wert aus Klassenname und Hash-Code zurückgegeben, um die Instanz eindeutig zu identifizieren.
Variablen vom Typ Array werden mit [] deklariert. [] Kann nicht nur nach dem Datentyp, sondern auch nach dem Variablennamen geschrieben werden.
int[] array;
int array2[];
Das Array kann mehrdimensionale Arrays wie zweidimensionale Arrays und dreidimensionale Arrays verarbeiten, und die Positionen von [] müssen nicht gleichzeitig zusammen beschrieben werden.
int[][] array2; //Zweidimensionales Array
int[] array22[]; //Ein zweidimensionales Array
int array3[][][]; //3D-Array
int[][] array33[]; //3D-Array
Wenn für ein Array die Anzahl der Elemente beim Erstellen der Instanz definiert und die Anzahl der Elemente beim Deklarieren der Variablen des Arrays angegeben wird, tritt ein Kompilierungsfehler auf.
int[2] array; //Kompilierungsfehler
Beim Erstellen einer Array-Instanz gelten die folgenden Regeln.
Beispiel für einen Kompilierungsfehler
int[] array = new int[]; //Keine Anzahl von Elementen angegeben
int[] array = new int[1.5]; //Es ist Gleitkomma
int[][] array = new int[][3]; //Die Anzahl der Elemente in der ersten Dimension ist nicht angegeben
OK Beispiel
int[][] array = new int[3][];
array[0] = new int[2];
array[1] = new int[2];
array[2] = new int[2];
//Deklarieren Sie die Anzahl der Elemente in der zweiten Dimension separat
Nach dem Erstellen einer Array-Instanz müssen Sie dem Element einen Wert zuweisen.
int[] array = new int[3]
array[0] = 10;
array[1] = 15;
array[2] = 20;
Die Standardwerte der Elemente des Arrays werden wie folgt bestimmt
Schimmel | Standardwert |
---|---|
Ganzzahliger Typ | 0 |
Gleitkomma-Typ | 0.0 |
Authentizitätstyp | false |
Zeichentyp | ¥u0000 |
Objekttyp | null |
Sie können auch den Initialisierungsoperator verwenden, um die Elemente eines Arrays zu initialisieren.
int[] array = {10,20,30};
Die Anzahl der Elemente wird beim Erstellen einer Array-Instanz angegeben, und die Array-Instanz enthält Variablen für die angegebene Anzahl von Elementen. Auf jede Variable wird über einen Index zugegriffen. Wenn Sie einem Element null zuweisen, wird auf dieses Element nirgendwo verwiesen.
public class Main {
public static void main(String[] args) throws Exception {
// Your code here!
String[] array = {"A","B","C"};
array[0] = null;
for(String str : array){
System.out.print(str); //Wird als nullBC angezeigt
}
}
}
Die allgemeine Methode zum Erstellen und Initialisieren einer Array-Instanz, zum Deklarieren einer Array-Typvariablen und zum Zuweisen einer Referenz besteht in der Verwendung eines Initialisierungsoperators.
int[] array = {1,2};
//Der folgende Code hat dieselbe Bedeutung
int[] array = new int[]{1,2};
Normalerweise geben Sie beim Erstellen einer Array-Instanz mit new die Anzahl der Elemente in [] an. Wenn Sie jedoch den Initialisierungsoperator verwenden, geben Sie nicht die Anzahl der Elemente in [] an. ..
Das Erstellen einer Array-Instanz mit null Elementen ist nicht sinnvoll, aber grammatikalisch nicht falsch.
int[] array = {};
int[] array = new int[0];
Beschreiben Sie für mehrdimensionale Arrays den Initialisierungsoperator im durch Kommas getrennten Initialisierungsoperator.
int[][] array = { {1,2,},{3,4} };
Wenn die Anzahl der Dimensionen der Variablen und die Anzahl der Dimensionen des Referenzziels nicht übereinstimmen, tritt ein Kompilierungsfehler auf.
int[][] array = new int[]{}; //Kompilierungsfehler
int[][] array = new int[][]{}; //Kein Fehler
Wenn Sie nur den Initialisierungsoperator schreiben, ohne new zu verwenden, tritt kein Kompilierungsfehler auf. Dies liegt daran, dass der Initialisierungsoperator automatisch die erforderliche Anzahl von Dimensionen berechnet und die erforderliche Initialisierung durchführt.
int[][] array = {}; //Kein Kompilierungsfehler
Die Funktion des Initialisierungsoperators, der automatisch die erforderliche Anzahl von Dimensionen berechnet, kann nur gleichzeitig mit der Variablendeklaration verwendet werden. Wenn die Variablendeklaration und die Instanziierung des Arrays in zwei Zeilen getrennt beschrieben werden, kann der Initialisierungsoperator nicht verwendet werden, und bei Verwendung muss die Anzahl der Dimensionen explizit beschrieben werden.
int[][] array;
array = new int[][]{}; //Kein Kompilierungsfehler
int[] array2;
array2 = {1,2}; //Kompilierungsfehler
In einem mehrdimensionalen Array ist es nicht erforderlich, die Anzahl der Elemente im zweiten und den nachfolgenden Arrays auszugleichen. Anordnungen mit unterschiedlicher Anzahl von Elementen nach der zweiten Dimension werden als asymmetrische mehrdimensionale Arrays bezeichnet. Der folgende Code hat eine andere Anzahl von Elementen in der zweiten Dimension, führt jedoch nicht zu einem Kompilierungsfehler. An dem Punkt, an dem die Anzahl der Elemente in tmp.length gezählt wird, kann die Anzahl der Nullelemente ohne Referenz nicht gezählt werden, sodass zur Laufzeit eine Ausnahme ausgelöst wird (Laufzeitfehler).
public class Main{
public static void main(String[] args){
string[][] array = { {"Ah", "ich"}, null, {"U.","e","Oh"} };
int total = 0;
for (String[] tmp : array) {
total += tmp.length;
}
System.out.println(total);
}
}
Wenn eine Klasse eine Vererbungsbeziehung hat, kann eine Array-Typvariable vom Typ Superklasse eine Reihe von Unterklasseninstanzen verarbeiten. Eine Array-Typvariable, die nur den Objekttyp behandelt, und eine Array-Instanz, die nur String behandelt, haben unterschiedliche Typen. Da die String-Klasse jedoch die Object-Klasse erbt, kann der folgende Code problemlos kompiliert und ausgeführt werden.
Object[] obj = {"A", "B", "C"};
Diese Beziehungen können auch zwischen Schnittstellen und Realisierungsklassen, abstrakten Klassen und ihren geerbten konkreten Klassen angewendet werden. Wenn Sie eine Schnittstelle mit dem Namen A und eine Klasse mit dem Namen B haben, die sie implementiert, können Sie einer Array-Instanz, die nur B behandelt, einen Verweis auf eine Array-Instanz zuweisen, die nur A verarbeitet.
public interface A {}
public class B implements A {}
A[] array = new B[]{ new B(), new B() };
Mit der Klonmethode können Sie eine Kopie des Arrays erstellen. Es ist nur ein Prozess zum Generieren einer Kopie, und das Referenzziel ist unterschiedlich.
int[] arrayA = {1,2,3,4};
int[] arrayB = arrayA.clone();
System.out.println(arrayA == arrayB); //Da das Referenzziel unterschiedlich ist, wird es als falsch angezeigt
Beim Klonen eines mehrdimensionalen Arrays unterscheidet sich die erste Dimensionsinstanz, die zweite und die nachfolgenden Dimensionsinstanzen werden jedoch gemeinsam genutzt.
Verwenden Sie die Arraycopy-Methode der System-Klasse, um nur einen Teil des Arrays auszuschneiden und zu kopieren. Die Arraycopy-Methode akzeptiert 5 Argumente
Streit | Erläuterung |
---|---|
Erstes Argument | Array zum Kopieren |
Zweites Argument | Von welcher Position in der Kopierquelle aus soll der Kopiervorgang gestartet werden(0 Anfang) |
Drittes Argument | Zielarray kopieren |
Viertes Argument | Von welcher Position im Kopierziel aus soll der Kopiervorgang gestartet werden(0 Anfang) |
Fünftes Argument | Wie viele Elemente müssen von der Position des zweiten Arguments kopiert werden? |
char[] arrayA = {'a','b','c','d','e'};
char[] arrayB = {'f','g','h','i','j'};
System.arraycopy(arrayA,1,arrayB,1,3);
System.out.println(arrayB); //fbcdj wird angezeigt
Java hat die folgenden vier iterativen Syntaxen.
Die while-Anweisung ist eine Syntax zum Wiederholen der Verarbeitung, während der bedingte Ausdruck true zurückgibt. Der bedingte Ausdruck muss immer einen booleschen Wert zurückgeben. Nur ein Ausdruck kann als Bedingung für die Wiederholung der while-Anweisung beschrieben werden. Wenn Sie im bedingten Ausdruck literal: true schreiben, handelt es sich um eine Endlosschleife, und wenn Sie literal: false schreiben, wird sie niemals ausgeführt.
while (Bedingter Ausdruck) {
//Iterative Verarbeitung
}
Die do-while-Anweisung führt den iterativen Prozess aus und bestimmt dann die Bedingung. Daher wird es unabhängig von den Bedingungen mindestens einmal ausgeführt. A; ist nach dem bedingten Ausdruck do-while erforderlich. Es gibt kein () nach do
do {
//Iterative Verarbeitung
}while (bedingter Ausdruck);
Recommended Posts