Lernnotiz beim ersten Lernen von Java (persönliches Lernnotiz)

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.

1. 1. Java-Übersicht

1.1 Was ist Java?

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.

1.2 Schlüsselwörter für jede Java-Version

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

1.3 Über JDK und JRE

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.

2. Java-Grundlagen

2.1 Java-Variablen und -Typen

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.

2.2 Wörtlich

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

2.3 Bediener

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

2.4 Kommentar

Wie bei der Sprache C sollten Kommentare als // einzeilige Kommentare oder / * Blockkommentare * / geschrieben werden. Grundsätzlich sind Kommentare im Format Javadoc wünschenswert.

2.5 Zweig

Da die bedingte Verzweigung grundsätzlich dieselbe ist wie in der C-Sprache, werden Details weggelassen, aber nur einige Anmerkungen beschrieben.

2.6 Ausnahmebehandlung

[Über Ausnahmen]

In Java gibt es drei Arten von Ausnahmen, die alle durch Klassen dargestellt werden, die von der Throwable-Klasse erben.

[Wie man eine Ausnahme auslöst]

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

2.7 Ressourcen

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
}

2.8 Modifikator

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> |

2.9 Anmerkung

[Über Anmerkungen]

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.

[So erstellen Sie eine Anmerkung]

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.
}

2.10 Funktionsschnittstelle und Lambda-Ausdruck

[Funktionsschnittstelle]

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.

[Lambda-Typ]

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

2.11 Siehe Methode

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

2.12 Optionale Klasse

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

Lernnotiz beim ersten Lernen von Java (persönliches Lernnotiz)
Zum ersten Mal Java lernen [Einführung]
Einführung in Java zum ersten Mal # 2
Zum ersten Mal lernen Java # 3 Ausdrücke und Operatoren
Spring Boot zum ersten Mal
Spring AOP zum ersten Mal
[Android Studio / Java] Was Sie nicht verstehen, wenn Sie es zum ersten Mal berühren
Denken Sie daran, wenn Rails (Turbolinks) die Seite nicht zum ersten Mal lädt
Zusammenfassung der Punkte, die Java-Programmierer beim ersten Lesen der Kotlin-Quelle als rutschig empfinden
Für JAVA-Lernen (2018-03-16-01)
Erste Schritte für tiefes Lernen in Java
[DL4J] Erstes Java Deep Learning (Handschriftliche Zeichenerkennung über ein vollständig verbundenes neuronales Netzwerk)
[Erstes Java] Machen Sie etwas, das vorerst mit Intellij funktioniert
[Socket-Kommunikation (Java)] Eindrücke von der erstmaligen Implementierung der Socket-Kommunikation in der Praxis
Erste Programmierung in meinem Leben Java 1st Hello World
Die Geschichte des Lernens von Java in der ersten Programmierung
Wände von der ersten Rspec getroffen
Android Studio-Entwicklung zum ersten Mal (für Anfänger)
Verwenden Sie vorerst eine externe Java-Bibliothek
Führen Sie jetzt Dataflow, Java, Streaming aus
Java-Lernnotiz (Methode)
[WSL] Lösung für das Phänomen, dass 404 angezeigt wird, wenn versucht wird, Java mit apt einzufügen (persönliches Memo)
Java-Lernnotiz (grundlegend)
(Memo) Java für Anweisung
Java-Lernnotiz (Schnittstelle)
Java-Lernnotiz (Vererbung)
Eindrücke und Zweifel an der erstmaligen Verwendung von Java in Android Studio
[Deep Learning von Grund auf neu] in Java 1. Zur Zeit Differenzierung und teilweise Differenzierung
Wie man Kotlin zum ersten Mal studiert ~ Teil 2 ~
Wie man Kotlin zum ersten Mal studiert ~ Teil 1 ~
Vorläufiges Memo beim Erstellen der CentOS 6-Serie mit VirtualBox
Java-Lernnotiz (Datentyp)
Bücher zum Erlernen von Java
Java-Lernnotiz (logischer Operator)
Java HashMap, entrySet [Persönliches Memo]
[Rails] Ich habe zum ersten Mal versucht, die button_to-Methode zu verwenden
[Persönliches Memo] Häufig verwendete Java-Grammatik, die von Zeit zu Zeit aktualisiert wird
Erstmaliges Modellieren von Digimon mit DDD Teil 1
Java14 kam heraus, also habe ich vorerst versucht aufzunehmen
Java-Lernnotiz (Erstellen eines Arrays)
Persönliches Memo: Metaprogrammierung mit Java-Reflexion
Java-Lernnotiz (while-Anweisung, do-while-Anweisung)
Memo nach dem ersten Frühjahrsprojekt-MVC-
Memo nach dem ersten Frühjahrsprojekt-Datenbank-
[Java] Memo zur Verarbeitungszeitmessmethode
[Ruby on Rails] Beim ersten Anmelden ・ So teilen Sie den Bildschirm mit jQuery in zwei Hälften
Ein Memo, wenn Sie den Zeitteil des Kalenders löschen möchten
Die Geschichte der ersten Veröffentlichung der Android-App im Play Store.
Erstellen einer App und erstmaliges Bereitstellen mit heroku
(Lernnotiz) Java Level 2-Maßnahmen: Fragenbereich
Memo nach dem ersten Frühlingsprojekt-Was ist Frühling-
[Persönliches Memo] Der Java-Datentyp ist ärgerlich
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
Zum ersten Mal Kotlin berühren - Enum Classes
Über das Verfahren, damit Java funktioniert
Notizen im Kopf organisieren (Java-Arrangement)
Hinweise zur HTTP-Kommunikation mit Java (OkHttp)