Java war das erste Mal, dass ich von iOS auf Android umgestiegen bin, daher werde ich eine Notiz über das hinterlassen, was ich damals gelernt habe.
Java ist eine objektorientierte Programmiersprache, die 1995 von Sun Microsystems entwickelt wurde. Wenn wir einfach Java sagen, bedeutet dies möglicherweise nicht nur Java als Programmiersprache, sondern auch die gesamte Plattform einschließlich Java-Bibliotheken und Entwicklungsumgebungen. Im Folgenden bedeutet Java, wenn es einfach als Java beschrieben wird, Java als Programmiersprache.
Java ist eine Programmiersprache mit den folgenden Funktionen.
Ausführung | Stichwort |
---|---|
Java5 | Generics, Autoboxing / Unboxing, Aufzählungstyp, Annotation, erweitert für Anweisung, Concurrency Utilities |
Java6 | Beschleunigung von AWT / Swing, JDBC4.0, Leistungsverbesserung, Verbesserung der Concurrency Utilities |
Java7 | NIO2、Fork/Treten Sie dem Framework bei und versuchen Sie es-with-Ressourcen, Diamantnotation, Mehrfachfang von Ausnahmen |
Java8 | Lambda-Notation, Methodenreferenz, Stream-API, Schnittstellenstandardmethode, neue Zeit-API |
JRE (Java-Laufzeitumgebung) ist eine Java-Ausführungsumgebung, dh eine Reihe von Umgebungen, die zum Ausführen eines in Java geschriebenen Programms erforderlich sind. Die JRE besteht aus einer Java Virtual Machine (JVM) und einer API (Application Programming Interface), einer Reihe von Standard-Java-Klassenbibliotheken.
Andererseits ist JDK (Java Development Kit) eine Java-Entwicklungsumgebung. Das JDK ist eine Binärdatei für Java-Entwickler auf jedem Betriebssystem und wird von Oracle veröffentlicht. Das JDK enthält eine JRE und bietet die für die Entwicklung von Java erforderliche Umgebung.
Java-Typen werden grob in primitive Typen und Referenztypen unterteilt. Es gibt die folgenden acht Typen, die zum primitiven Typ gehören.
Modellname | Kommentar | Wert | Standardwert |
---|---|---|---|
boolean | Boolescher Wert | true, false | false |
byte | 8-Bit-Ganzzahl | -128〜127 | (byte)0 |
short | 16-Bit-Ganzzahl | -32768〜32767 | (short)0 |
int | 32-Bit-Ganzzahl | -2147483648〜2147483647 | 0 |
long |64-Bit-Ganzzahl| -9223372036854775808L〜9223372036854775807L | 0L
char | UTF-16 Codepunkte| 'a'、'Ah'、'Wörter'、'\u03b1'Eine solche| '\u0000' (Nullzeichen)
float |32-Bit-Gleitkommazahl| 1.54f usw.| 0.0f
double |64-Bit-Gleitkommazahl| 2.45d usw.| 0.0d
Es gibt vier Arten von Referenztypen: Klassentyp, Schnittstellentyp, Typparameter und Array-Typ. Jedes wird separat beschrieben.
Ein Literal ist eine Darstellungsmethode zum Beschreiben primitiver Typwerte, Zeichenfolgen und Nullwerte im Codefeld. Die Literale jedes Typs sind unten gezeigt.
Arten von Literalen | Art des generierten Werts | Beschreibungsmethode | Beispiel |
---|---|---|---|
Ganzzahl (dezimal) | int | Zahlen aufzählen | 128 |
Ganzzahl (Sechseck) | int | Stellen Sie der Nummer 0x oder 0X voran | 0xab |
Ganzzahl (8-fache Zahl) | int | Stellen Sie der Zahl 0 voran | 012 |
Ganzzahl (binär) | int | Stellen Sie der Nummer 0b oder 0B voran | 0b11 |
ganze Zahl | long | Fügen Sie l oder L am Ende des ganzzahligen Werts hinzu | 123L |
Gleitkommazahl | float | Addiere f oder F am Ende der Fraktion | 2.34f |
Gleitkommazahl | double | Bruch- oder Exponentialdarstellung | 3.45、345e-2 |
Brief | char | Schließen Sie Zeichen in einfache Anführungszeichen ein | 'a' |
String | String | Schließen Sie die Zeichenfolge in doppelte Anführungszeichen ein | "abc" |
Boolescher Wert | boolean | true, false | true |
Nullwert | Null-Typ | null | null |
Da es sich bei den Grundlagen um dieselben Operatoren wie in der Sprache C handelt, werden nur einige der selten verwendeten Bitoperatoren beschrieben.
Operator | Beispiel | Kommentar |
---|---|---|
>> | a>>1 | Verschieben Sie a um 1 Bit nach rechts. Füllen Sie den linken Rand mit dem gleichen Wert wie das höchstwertige Bit |
>>> | a>>>1 | Verschieben Sie a um 1 Bit nach rechts. Füllen Sie den linken Rand mit 0 |
~ | ~a | Invertiere alle Bits von a |
Wie bei der Sprache C sollten Kommentare als // einzeilige Kommentare oder / * Blockkommentare * / geschrieben werden. Grundsätzlich sind Kommentare im Format Javadoc wünschenswert.
Da die bedingte Verzweigung grundsätzlich dieselbe ist wie in der C-Sprache, werden Details weggelassen, aber nur einige Anmerkungen beschrieben.
In Java gibt es drei Arten von Ausnahmen, die alle durch Klassen dargestellt werden, die von der Throwable-Klasse erben.
Das Auslösen einer Ausnahme wird oft als Auslösen einer Ausnahme bezeichnet. In Java können Sie eine Ausnahme mit "throw new exception class ()" auslösen. Wenn Sie eine aktivierte Ausnahme auslösen, ist es ratsam, @throws in Javadoc zu verwenden, um zu beschreiben, unter welchen Umständen die Ausnahme ausgelöst wird. Einige der am häufigsten verwendeten Laufzeitausnahmen sind:
Ausnahme | Fall werfen |
---|---|
IllegalArgumentException | Wenn der Wert des Arguments zum Zeitpunkt des Aufrufs ungültig ist |
IllegalStateException | Wenn eine Methode aufgerufen wird, wenn der Status des Objekts ungültig ist |
NullPointerException | Wenn null an ein Argument übergeben wird, das null verbietet |
IndexOutOfBoundsException | Wenn für ein Argument, das einen Index angibt, ein Wert außerhalb des Bereichs angegeben wird |
Verwenden Sie bei Verwendung der ressourcenbasierten Verarbeitung wie Dateiöffnung, DB-Verbindung und Netzwerkverbindung die Syntax Try-with-Resources. Der Vorgang des Schließens der Ressource wird zum Zeitpunkt des Verlassens des Blocks automatisch ausgeführt, und der Vorgang des Schließens der Ressource wird ausgeführt, selbst wenn im Block eine Ausnahme auftritt. Wenn beim Schließen der Ressource eine Ausnahme auftritt, können Sie einen Handler für die Ausnahme schreiben, indem Sie am Ende die Catch-Theorie hinzufügen.
try (Klassenname Variablenname=Ressourcen abrufen) {
Verarbeitung mit Ressourcen
}
Die folgenden ** Modifikatoren ** können für Klassen, Schnittstellen, Methoden, Konstruktoren und Variablen angegeben werden.
Qualifikation | class | interface | method | constructor | block | var | Einstufung | Erläuterung |
---|---|---|---|---|---|---|---|---|
public | ○ | ○ | ○ | ○ | × | ○ | Zugriffsmodifikator | Zugänglich von allen Klassen |
[protected](http://www.tohoho-web.com/java/modifier.htm#access)|○|○|○|○|×|○|Zugriffsmodifikator|<spanstyle="color:rgb(0,0,0);">Schützen Sie den Zugriff vor anderen Dateien und Klassen</span>
[private](http://www.tohoho-web.com/java/modifier.htm#access) | ○ | ○ | ○ | ○ | × | ○ |Zugriffsmodifikator|Zugriff nur von der eigenen Klasse
[static](http://www.tohoho-web.com/java/modifier.htm#access)|○|○|○|×|×|○|statischerModifikator|<spanstyle="color:rgb(0,0,0);">Gibt an, dass darauf verwiesen werden kann, auch wenn es nicht instanziiert ist</span>
[final](http://www.tohoho-web.com/java/modifier.htm#final) | ○ | × | ○ | × | × | ○ |letzter Modifikator|Zeigt an, dass es nicht überschrieben wird. Verbot von Vererbung, Überlastung und Veränderung
[abstract](http://www.tohoho-web.com/java/modifier.htm#abstract)|○|○|○|×|×|×|AbstrakterModifikator|<spanstyle="color:rgb(0,0,0);">Es ist abstrakt und zeigt an, dass der Inhalt am Vererbungsziel definiert und implementiert wird.</span>
[native](http://www.tohoho-web.com/java/modifier.htm#native)|×|×|○|×|×|×|nativerModifikator|<spanstyle="color:rgb(34,24,21);">Gibt an, dass es in einer anderen Sprache als Java implementiert ist</span>
[synchronized](http://www.tohoho-web.com/java/modifier.htm#synchronized)|×|×|○|×|○|×|Modifikatorsynchronisieren|<spanstyle="color:rgb(0,0,0);">Zeigt an, dass beim Multithreading eine ausschließliche Steuerung durchgeführt wird</span>
[transient](http://www.tohoho-web.com/java/modifier.htm#transient) | × | × | × | × | × | ○ |Temporärer Modifikator|Zeigt an, dass keine Serialisierung erforderlich ist
[volatile](http://www.tohoho-web.com/java/modifier.htm#volatile)|×|×|×|×|×|○|FlüchtigerModifikator|<spanstyle="color:rgb(34,24,21);">Unterdrücken Sie den Cache und zeigen Sie, dass die Werte für alle Threads gleich sind</span>
[strictfp](http://www.tohoho-web.com/java/modifier.htm#strictfp)|○|○|○|×|×|×|StrengerModifikatorfürschwebendeFraktionen|<spanstyle="color:rgb(0,0,0);">Gleitkomma-Arithmetik ist plattformunabhängig und arbeitet streng</span> |
Annotation bedeutet "Annotation" und ist eine Funktion zum Eingeben zusätzlicher Informationen für eine Klasse, Methode oder ein Paket. In Java SE 5 hinzugefügt und im Format "@ + Annotation Name" verwendet.
Die folgenden Anmerkungen sind in den Anmerkungen vorhanden.
Die standardmäßig bereitgestellten Anmerkungen werden nachfolgend anhand von Beispielen erläutert.
import java.lang.annotation.*;
//Geben Sie an, wie viele Informationen der definierten Anmerkung gespeichert werden sollen (behalten Sie die Informationen auch zum Zeitpunkt der Ausführung mit RUNTIME bei).
@Retention(RetentionPolicy.RUNTIME)
//Geben Sie im Codefeld an, wo die definierte Anmerkung angehängt werden soll. Es wird möglich sein, mit TYPE in Klasse, Schnittstelle und Aufzählung zu beschreiben.
@Target(ElementType.TYPE)
//Die Informationen der definierten Anmerkung werden auch in Javadoc beschrieben.
@Documented
public @interface Beta {
String from(); //Es kann ein String-Typ-Argument mit dem Namen von annehmen.@Beta(from = "1.0");Und so weiter. Wenn der Argumentname value ist, kann die Beschreibung des Werts weggelassen werden.
}
Eine Methode, die nur den Methodennamen, die Signatur und den Rückgabetyp deklariert, wird als abstrakte Methode bezeichnet und im folgenden Format beschrieben.
abstract [Rückgabetyp] <Methodenname>(Unterschrift);
Diejenigen, die diese abstrakte Methode, Konstanten, Standardmethode und statische Methode als Mitglieder haben können, werden als Schnittstellen bezeichnet und im folgenden Format beschrieben.
[Qualifikation] interface <Name der Schnittstelle> {
Datentyp Variablenname=Wert;
Modifikator Rückgabewert Datentyp Methodenname(Argumenttypdeklaration);
}
Eine funktionale Schnittstelle ist eine Schnittstelle, für die nur eine abstrakte Methode definiert ist. Selbst wenn die Standardmethode und die statische Methode enthalten sind und nur eine abstrakte Methode vorhanden ist, ist sie in der Funktionsschnittstelle enthalten.
Der Lambda-Ausdruck ist eine in Java SE 8 eingeführte Syntax, die die Implementierung einer funktionalen Schnittstelle präzise beschreiben kann. In einem Methodenaufruf, der eine Funktionstypschnittstelle als Argument verwendet, kann ein Lambda-Ausdruck im Argumentteil der entsprechenden Funktionstypschnittstelle verwendet werden und wird wie folgt beschrieben.
(Lambda-Ausdrucksargumente) -> {wird bearbeitet}
Referenz-URL: http://www.ne.jp/asahi/hishidama/home/tech/java/lambda.html
Methodenreferenz ist eine in Java SE 8 eingeführte Syntax, und die Methode selbst wird der Variablen der Funktionsschnittstelle hinzugefügt. Es ist eine Syntax, die zugewiesen werden kann. Die Methodenreferenz wird wie folgt angegeben.
//Für statische Methoden (und in einigen Fällen Instanzmethoden)
Name der Klasse::Methodenname
//Zum Beispiel Methoden
Name der Instanzvariablen::Methodenname
Optional ist eine in Java SE 8 eingeführte Klasse, die nur einen Wert umschließt. Gibt es. Optional enthält einfach den Wert, aber jede Methode von Optional ändert ihr Verhalten abhängig davon, ob der gehaltene Wert null ist oder nicht. (Grundsätzlich wird die Verarbeitung nur ausgeführt, wenn sie nicht null ist.)
Eine optionale Instanz wird zu einem Objekt mit dem Namen leer, wenn der enthaltene Wert null ist. Wenn ein Wert vorhanden ist, wird sie zu einer Instanz, die normalerweise den Wert enthält. Die Seite, die die Option empfängt, bestimmt, ob die Option leer ist, und führt die Verarbeitung durch. Verwenden Sie die isPresent-Methode, um festzustellen, ob Optional null enthält. Zusätzlich zu isPresent gibt es orElse, das den angegebenen Wert zurückgibt, wenn der Wert nicht gespeichert ist, oder elseThrow, das eine Ausnahme auslöst, wenn der Wert nicht gespeichert wird.
Recommended Posts