1. Switch unterstützt die Zeichenfolge als Parameter
/*** * Switch unterstützt String -Parameter jdk7 * @author huangjiawei brechen; Fall "Mike": System.err.println ("Ich bin Mike!"); brechen; Standard: System.err.println ("Ich bin nur dein!"); brechen; }} public static void main (String [] args) {switchTest ("lisa"); // Ich bin Lisa! Switchest ("Mike"); // Ich bin Mike! Switchest (""); // Ich bin dein einziger! }}Unterstützung der Aufzählung des Schalters
/** * Switch Enumeration unterstützt jdk5 * @author huangjiawei brechen; Fall Februar: System.err.println ("Dies ist Februar"); brechen; Fall März: System.err.println ("Dies ist März"); brechen; }} public static void main (String [] args) {SwithonthTest (monat.january); // Dies ist Januar SwithonthTest (Monat.February); // Dies ist Februar SwithonthTest (monat.March); // Dies ist März}}}}}}}}}}}}}}2. Verbesserung der numerischen Literale
2.1. Vor Java7 unterstützt es Decimal (1234), Octal (01234) und Hexadezimal (0x1234)
Java 8 unterstützt Binary (0B11110001)
2.2. Kann durch Unterstrich getrennt werden
public class BinaryTest {private statische int a = 16; // Dezimal private statische statische int b = 020; // Octal Private static int c = 0x10; // hexadezimale private statische statische int d = 0b0001_0000; // Binary, Delimiters trennen öffentliche statische statische Hauptstreich [] args) {system.err.err.err.err.err.r.r.r.r.r.r.r.r.ER.R.R.R.PRINTLN (A); System.err.println (b); // 16 system.err.println (c); // 16 system.err.println (d); // 16}}3. Die Ressourcen werden automatisch geschlossen
In Java gibt es viele Ressourcen, die nach ihrer Verwendung geschlossen werden müssen. Nehmen Sie eine Kastanie, InputStream, Schriftsteller, Sockeln, Verbindung usw. Vor Java 7 werden normalerweise die Close () -Methode angezeigt. In Java 7 können Sie ignorieren, ob es nicht geschlossen ist. Wir können den Codeblock von Try-with-Ressources verwenden.
Importieren Sie Java.io.BufferedReader; Importieren Sie Java.io.Filereader; Public Class Trytest { /** Akzeptieren Sie den Pfad zu einer Datei vor Java 7* / public static String trytest (String -Pfad) {BufferedReader BR = NULL; try {br = new bufferedReader (neuer fileReader (path)); return br.readline (); } catch (Ausnahme e) {System.err.println ("BufferedReader -Ausnahme" + e); } endlich {if (br! = null) {try {br.close (); br. } } } zurückkehren ""; } / * * Der Pfad zum Akzeptieren einer Datei Java7 * /public static String tryest1 (String -Pfad) { / * * Wenn der Block für Try -Anweisungen ausgeführt wird, wird FileInputStream automatisch geschlossen. Dies liegt daran, dass FileInputStream die Schnittstelle java.lang.autoclosenable in Java implementiert. * Alle Klassen, die diese Schnittstelle implementieren, können in der Struktur von Try-with-Resources verwendet werden. */ try (bufferedReader BR = neuer BufferedReader (neuer FileReader (Pfad)) {return br.readline (); } catch (Ausnahme e) {System.err.println ("BufferedReader -Ausnahme" + e); } zurückkehren ""; } public static void main (String [] args) {tryTest ("c: //users/huangjiawei//desktop//my-release-key.keystore"); tryTest1 ("c: //users//huangjiawei//desktop//my-release-key.keystore"); }}4. Fangen Sie mehrere Ausnahmen auf
Vor Java 7 müssen mehrere Fangklauseln enthalten sein, um mehrere Ausnahmen zu erfassen. In Java 7 können wir auf diese Weise schreiben:
Importieren Sie java.util.date;/*** Mehrere Fanganweisungen führen nur die erste Fangausnahme aus, die entspricht. Egal wie viele Fänge es gibt, sie werden ignoriert. int b = 0; Datum Datum = null; Versuchen Sie {System.err.println (Date.getTime ()); // Ausnahme wird hierher ausgelegt, und die folgende Anweisung wird nicht ausgeführt! int result = a/b; // system.err.println (result); // nicht ausgeführt} catch (nullPointerexception e) {System.err.println (e); // java.lang.NullPoIterException} catch (ArithmeTicexception E) {system.err.println (e); } catch (Ausnahme e) {System.err.println (e); }} / * * Java 7 * / public static void CatchTest1 () {int a = 100; int b = 0; Datum Datum = null; try {int result = a/b; System.err.println (Ergebnis); System.err.println (Date.getTime ()); } catch (AritheMeticexception | CatchTest1 (); }}5. Instanzerstellungstyp Inferenz
Importieren Sie Java.util.ArrayList; Import java.util.list; öffentliche Klasse Typetest { /** Vor und nach Java 7 müssen beide Typen deklariert werden* / list <string> list = new ArrayList <string> (); /** Java 7 muss nach <> den Typ nicht deklarieren, und sein Typ wird automatisch auf der Grundlage der vorherigen <>*/ list <string> list1 = new ArrayList <> ();} abgeleitet;}6. Verbessertes Dateisystem
Java7 hat eine neue NIO2.0 -API auf den Markt gebracht, um die Unannehmlichkeiten gegen das Dateimanagement zu ändern, sodass häufig verwendete Typen wie Pfad, Pfade, Dateien, WatchService, Dateisystem und andere Produkte unter dem Java.nio.file -Paket die Codierungsarbeiten der Entwickler in der Dateiverwaltung erheblich vereinfachen können.
6.1 Pfadschnittstelle und Pfadeklasse
Einige Funktionen der Pfadschnittstelle können tatsächlich der Dateiklasse unter dem Paket von Java.io entsprechen. Natürlich beschränken sich diese Funktionen auf schreibgeschützte Operationen. In der tatsächlichen Entwicklung können Entwickler die Pfadschnittstelle und die Pfadklasse verwenden, um eine Reihe von Kontextinformationen der Datei zu erhalten.
Verwenden Sie die Pfadschnittstelle und Pfadart, um Dateiinformationen zu erhalten:
Importieren Sie java.nio.file.path; importieren java.nio.file.paths; public class pathpathstest {public static void main (String [] args) {path path = paths.get ("c: ///users//huangjiaweistore System.out.println ("Anzahl der Dateiknoten:" + path.getNaMeCount ()); // Anzahl der Dateiknoten: 4 System.out.println ("Dateiname:" + path.getFileName ()); // Dateiname: my-release-key.keyStore system.out.println ("Dateiroot-Verzeichnis:" + path.getroot ()); // Dateistammverzeichnis: c:/System.out.println ("Datei Superior Association Directory:" + path.getParent ()); // Datei Superior Association Directory: C:/Benutzer/Huangjiawei/Desktop}}6.2. Dateienklasse
Wenn Sie die Pfadschnittstelle und die Pfadklasse verwenden, können Sie problemlos auf die Kontextinformationen der Zieldatei zugreifen. Natürlich sind diese Operationen alle schreibgeschützt. Wenn Entwickler andere nicht lesende Operationen in Dateien wie Erstellung, Änderung, Löschung usw. ausführen möchten, können sie mit dem Type-Type-Type verwendet werden.
Häufige Methoden des Dateityps sind wie folgt:
Beispiel für das Kopieren und Einfügen von Dateien mithilfe von Dateien -Typ:
Dateien.Copy (paths.get ("/test/src.xml"), paths.get ("/test/target.xml"));Die Verwendung von Dateien zum Verwalten von Dateien ist bequemer und einfacher als herkömmliche E/A -Methoden. Da die spezifische Operationsimplementierung an die NIO2.0 -API übergeben wird, müssen Entwickler nicht aufpassen.
6.3. Watchservice
Java7 bietet Entwicklern auch eine neue Reihe von Dateisystemfunktionen, nämlich die Dateiüberwachung. Hier kann es viele Freunde geben, die nicht wissen, wie wichtig und der Zweck der Dateiüberwachung ist. Bitte erinnern Sie sich an den Webcontainer, der in eine heiße Release -Funktion ausgedrückt wurde. Wenn das Projekt iteriert und neu gestaltet wird, müssen Entwickler es nicht manuell neu starten, da der Webcontainer feststellt, dass sich die Datei ändert, sich automatisch an diese "Änderungen" anpassen und intern neu laden. Die Hot Publishing -Funktion von Webcontainern basiert auch auf der Dateiüberwachungsfunktion. Daher muss zugegeben werden, dass die Entstehung der Dateiüberwachungsfunktion für das Java -Dateisystem von großer Bedeutung ist.
Die Dateiüberwachung ist ereignisorientiert und die Ereignisauslöser ist eine Voraussetzung für die Überwachung. Entwickler können die 3 buchstäblichen Konstanten verwenden, die vom StandardwatcheEventkinds -Typ unter dem Paket java.nio.file bereitgestellt werden, um die Überwachungsereignisse zu definieren. Es ist erwähnenswert, dass die Überwachungsereignisse bei der WatchService -Instanz registriert werden müssen.
Überwachung von Ereignissen, die vom StandardwatcheEventkinds -Typ bereitgestellt werden:
Vollständiges Beispiel für die Implementierung der Dateiüberwachung mithilfe der WatchService -Klasse:
importieren java.nio.file.filesystems; import java.nio.file.path; import java.nio.file.paths; import java.nio.file Dateiüberwachungssystem* @Author Huangjiawei*/public class WatchViewTest {public static void testWatch () {/* Zielspfad überwachen*/Path paths Versuchen Sie { /* ein Dateiüberwachungsobjekt erstellen. */ WatchService WatchService = DateiSystem.getDefault (). NewWatchService (); /* Registrieren Sie alle Ereignisstypen für die Dateiüberwachung. */ path.register (WatchService, StandardWatcheventkinds.entry_create, StandardWatcheventkinds.enterry_Delete, StandardWatcheventkinds.entry_Modify); /* Schleifenüberwachungsdatei. */ while (true) {watchkey watchey = watchService.take (); /* Iterieren Sie alle Dateien, die das Ereignis auslösen } if (! watchey.reset ()) {return; }}} catch (exception e) {e.printstacktrace (); }} public static void main (String [] args) {TestWatch (); }} In den oben genannten Programmbeispielen können wir feststellen, dass die Verwendung der WatchService -Schnittstelle zur Dateiüberwachung sehr einfach und bequem ist. Zuerst müssen wir den Zielüberwachungsweg definieren und dann die Methode von NewWatchService () von Dateisystemen aufrufen, um ein WatchService -Objekt zu erstellen. Als nächstes müssen wir die Methode "Register () der Pfadschnittstelle verwenden, um die WatchService -Instanz zu registrieren und Ereignisse zu überwachen. Wenn all diese grundlegenden Arbeitsschichten fertig sind, schreiben wir einen peripheren Echtzeitüberwachungszyklus. Iterieren Sie schließlich über Watchkey, um alle Dateien zu erhalten, die Überwachungsereignisse auslösen.
Jetzt kenne ich endlich das Grundprinzip des sogenannten Dev-Tools Hot Update im Spring Boot! Es stellt sich heraus, dass JDK solche APIs liefert.
Zusammenfassen
Das obige ist die Codeanalyse der JDK 7 New Features kurze Einführung durch den Editor. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!