国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Java JavaErste Schritte Detaillierte Einführung in neue Funktionen von JDK8

Detaillierte Einführung in neue Funktionen von JDK8

Nov 26, 2019 pm 01:45 PM
jdk8 Neue Eigenschaften

Detaillierte Einführung in neue Funktionen von JDK8

Funktionale Programmierung

Objektorientiert betont, dass ?alles ein Objekt ist“, wenn man etwas tun m?chte damit man es machen kann. Beim funktionalen Programmierdenken geht es eher darum, ?was zu tun ist“ als darum, ?wie es zu tun ist“.

Gew?hnlicher Er?ffnungsthread

// 匿名內(nèi)部類對象
Runnable task = new Runnable() {
    @Override
    public void run() {
        System.out.println("烏鴉坐飛機(jī)");
    }
};
new Thread(task).start();

Weitere kostenlose Java-Video-Tutorials: Java-Online-Tutorial

Funktion ?ffnen Sie a Thread mit Programmierung

rrree

Die Klammern davor: Methodenparameter Wenn keine Parameter vorhanden sind, zeigt der Pfeil an, was sp?ter getan werden soll K?rperstütze, die das spezifische Was zu tun darstellt.

Lambda-Ausdruck

Der Lambda-Ausdruck, auch als Abschluss bekannt, ist die wichtigste neue Funktion, die die Ver?ffentlichung von Java 8 vorantreibt.

Lambda erm?glicht die übergabe von Funktionen als Parameter einer Methode (Funktionen werden als Parameter an Methoden übergeben). Die Verwendung von Lambda-Ausdrücken kann den Code pr?gnanter und kompakter machen.

Drei Elemente: Parameter, Pfeile, Code

Format: (Parametertyp-Parametername) -> Lambda-Ausdruck verwenden Die Pr?misse der Formel: Es muss eine Schnittstelle geben und es darf nur eine abstrakte Methode in der Schnittstelle geben

Demonstration: Schreiben Sie eine Cook-Schnittstelle, und es gibt eine makeFood()-Methode in der Schnittstelle

new Thread(() -> System.out.println("龍卷風(fēng)摧毀停車場")).start();

Lambda-Ausdruck Formel-Auslassungsregeln:

Der Parametertyp kann weggelassen werden. Sie k?nnen jedoch nur die Typen aller Parameter gleichzeitig weglassen oder sie überhaupt nicht weglassen. Wenn es einen und nur einen Parameter gibt, k?nnen die Klammern weggelassen werden. Wenn es eine und nur eine Anweisung in den geschweiften Klammern gibt. Unabh?ngig davon, ob ein Rückgabewert vorhanden ist, k?nnen Rückgabe, geschweifte Klammern und Semikolons weggelassen werden.

public static void main(String[] args) {
    method(() -> {
        System.out.println("閃刀啟動!");
    });
}
 
private static void method(Cook cook) {
    cook.makeFood();
}

Wenn eine Schnittstelle neu ist, k?nnen Sie auch Lambda-Ausdrücke anstelle anonymer innerer Klassen verwenden

    public static void main(String[] args) {
        method((a, b)-> a + b);
    }
 
    private static void method(Calculator calculator) {
        int result = calculator.sum(1234, 9876);
        System.out.println(result);
    }

Funktionale Schnittstelle

Die Schnittstelle hat und Es gibt nur eine abstrakte Methode, eine sogenannte funktionale Schnittstelle.

Es gibt eine neue Annotation

in JDK8, die verwendet wird, um zu erkennen, ob eine Schnittstelle eine funktionale Schnittstelle ist. Handelt es sich nicht um eine funktionsf?hige Schnittstelle, wird beim Kompilieren ein Fehler gemeldet. Die Annotation @FunctionalInerface ist optional, auch wenn diese Annotation nicht verwendet wird, solange die Schnittstelle die Definitionsanforderungen einer funktionalen Schnittstelle erfüllt.

Runnable task = () -> System.out.println("閃刀啟動!");
new Thread(task).start();
@FunctionalInterface

Methodenreferenz

Dieser Code kann tats?chlich abgekürzt werden.

Printer printer = (str) -> System.out.println(str);Solange es ableitbar ist, ist es referenzierbar, sodass die übergabe von Parametern eigentlich keinen Sinn ergibt. Hier k?nnen Sie also tats?chlich Methodenreferenzen zum Abkürzen verwenden

System.out::printlnAb Java8, a Der Ausdruck im neuen Operator, der Methodenreferenzoperator (zwei nacheinander geschriebene Doppelpunkte), ist eine Methodenreferenz und Lambda. Das Wesentliche von Methodenreferenz und Lambda ist genau das Gleiche, und der Zweck besteht darin, das Schreiben von Lambda-Ausdrücken zu vereinfachen.

Lambda-Schreibmethode:

s->System.out.println(s)Methodenreferenz-Schreibmethode:

System.out::printlnDie beiden Schreibmethoden sind v?llig gleichwertig

@FunctionalInterface
public interface MyInterface {
    void method();
}

Schnittstelle

Standardmethode

Die Schnittstelle hatte ursprünglich zwei abstrakte Methoden, muss aber jetzt in drei abstrakte Methoden umgewandelt werden Die Klasse muss auch eine neue Methode implementieren.

Wenn zu viele Implementierungsklassen vorhanden sind, ist die Bedienung sehr problematisch. Das JDK verwendete früher den Open-Close-Designmodus: offen für Erweiterungen und geschlossen für ?nderungen. Das hei?t: Erstellen Sie eine neue Schnittstelle, erben Sie die ursprüngliche Schnittstelle und definieren Sie neue Methoden. In diesem Fall verfügen die ursprünglichen Implementierungsklassen jedoch nicht über neue Methoden. Zu diesem Zeitpunkt kann die Standardmethode der Schnittstelle verwendet werden.

Das Schlüsselwort wird standardm??ig ge?ndert und die Methode erfordert einen Methodenk?rper. Alle Unterklassen einer solchen Methode werden standardm??ig implementiert (Sie müssen sie nicht selbst schreiben, Sie k?nnen sie auch in der Implementierungsklasse überschreiben

 
    public static void main(String[] args) {
        method(System.out::println);
    }
 
    private static void method(Printer printer) {
        printer.print("hello");
    }

Hinweis). : Die Standardmethode in der Schnittstelle ist ?quivalent. Ein neues Schlüsselwort und der ?Standard“ der vier Modifikatoren sind also nicht dasselbe Konzept.

Durch die Verwendung des Standardschlüsselworts kann das Programm den Effekt einer ?Mehrfachvererbung“ erzielen.

statische Methode

Ab Java8 dürfen statische Methoden in Schnittstellen definiert werden, und ihre Verwendung ist die gleiche wie statische Methoden allgemeiner Klassen.

/**
 * 從java8開始,接口當(dāng)中允許定義default默認(rèn)方法
 * 修飾符:public default(public可以省略,default不能省略)
 */
public interface MyInterface {
 
    void method1();
 
    void method2();
 
    default void methodNew() {
        System.out.println("接口默認(rèn)方法執(zhí)行");
    }
 
}

Streaming-Vorgang

Der erste Eindruck, den die Streaming-Verarbeitung vermittelt, ist, dass sie den Erfassungsvorgang erheblich vereinfacht Der Vorgang kann mit Hilfe der Streaming-Verarbeitung in einer Zeile implementiert werden.

Wenn wir beispielsweise alle geraden Zahlen aus einer Sammlung mit Ganzzahlen herausfiltern und sie zur Rückgabe in eine neue Liste einkapseln m?chten, müssen wir dies vor Java8 durch den folgenden Code implementieren:

Für eine Sammlung von Nums:

public interface Animal {
 
    void eat();
 
    static Animal getAnimal() {
        return new Cat();
    }
}

Durch die Streaming-Verarbeitung von Java8 k?nnen wir den Code wie folgt vereinfachen:

List<Integer> evens = new ArrayList<>();
for (final Integer num : nums) {
    if (num % 2 == 0) {
        evens.add(num);
    }
}

Lassen Sie uns kurz die Bedeutung der obigen Anweisungszeile stream() erkl?ren Operation Wandeln Sie die Sammlung in einen Stream um, filter() führt unseren benutzerdefinierten Filterprozess aus, hier filtern wir alle geraden Zahlen durch Lambda-Ausdrücke heraus, und schlie?lich kapseln wir die Ergebnisse durch Collect() und spezifizieren sie durch Collectors.toList() Eingekapselt in a Listenabholung und Rückgabe.

常用操作案例:

        //初始化list集合
        List<String> list = new ArrayList<String>();
        list.add("測試數(shù)據(jù)1");
        list.add("測試數(shù)據(jù)2");
        list.add("測試數(shù)據(jù)3");
        list.add("測試數(shù)據(jù)12");
        
        //使用λ表達(dá)式遍歷集合
        list.forEach(s -> System.out.println(s));
        
        //結(jié)合Predicate使用和過濾條件篩選元素
        Predicate<String> contain1 = n -> n.contains("1");
        Predicate<String> contain2 = n -> n.contains("2");
        
        //根據(jù)條件遍歷集合
        list.stream().filter(contain1).forEach(n -> System.out.println(n));
        list.stream().filter(s -> contain1.test(s)).forEach(s -> System.out.println(s));
        list.stream().filter(contain1.and(contain2)).forEach(n -> System.out.println(n));
        list.stream().filter(contain1.or(contain2)).forEach(n -> System.out.println(n));
        
        //將過濾后的元素重新放到一個集合中
        List<String> newList = list.stream().filter(contain1.and(contain2)).collect(Collectors.toList());
        
集合中decimal求和
		BigDecimal sum = list
				.stream()
				.map(Person::getAmount)
				.reduce(BigDecimal::add)
				.get();
 
//排序 , 也需要新的集合接收
	List<Student> resultList = new ArrayList<Student>();
	resultList = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList())

推薦java相關(guān)文章:java零基礎(chǔ)入門

歡迎大家一起來學(xué)習(xí)!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in neue Funktionen von JDK8. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Was sind die neuen Funktionen von PHP8? Was sind die neuen Funktionen von PHP8? Sep 25, 2023 pm 01:34 PM

Zu den neuen Funktionen von PHP8 geh?ren JIT-Compiler, Typableitung, benannte Parameter, Union-Typen, Eigenschaften, Verbesserungen bei der Fehlerbehandlung, Unterstützung für asynchrone Programmierung, neue Standardbibliotheksfunktionen und anonyme Klassenerweiterungen. Detaillierte Einführung: 1. JIT-Compiler, PHP8 führt den JIT-Compiler ein, der eine wichtige Leistungsverbesserung darstellt. Der JIT-Compiler kann einige hochfrequente Ausführungscodes in Echtzeit kompilieren und optimieren, wodurch die Ausführungsgeschwindigkeit verbessert wird führt die Typinferenzfunktion ein, die es Entwicklern erm?glicht, beim Deklarieren von Variablen usw. automatisch den Typ von Variablen abzuleiten.

Ein Leitfaden zum Erlernen der neuen Funktionen von PHP8 und zum Erwerb eines tiefgreifenden Verst?ndnisses der neuesten Technologie Ein Leitfaden zum Erlernen der neuen Funktionen von PHP8 und zum Erwerb eines tiefgreifenden Verst?ndnisses der neuesten Technologie Dec 23, 2023 pm 01:16 PM

Eine ausführliche Analyse der neuen Funktionen von PHP8, um Ihnen zu helfen, die neueste Technologie zu beherrschen. Im Laufe der Zeit hat sich die Programmiersprache PHP st?ndig weiterentwickelt und verbessert. Die kürzlich ver?ffentlichte PHP8-Version bietet Entwicklern viele spannende neue Funktionen und Verbesserungen, die unsere Entwicklungsarbeit komfortabler und effizienter machen. In diesem Artikel analysieren wir die neuen Funktionen von PHP8 eingehend und stellen spezifische Codebeispiele bereit, die Ihnen helfen, diese neuesten Technologien besser zu beherrschen. Der JIT-Compiler PHP8 führt die JIT-Kompilierung (Just-In-Time) ein

PHP 8.3 ver?ffentlicht: Neue Features auf einen Blick PHP 8.3 ver?ffentlicht: Neue Features auf einen Blick Nov 27, 2023 pm 12:52 PM

PHP8.3 ver?ffentlicht: überblick über neue Funktionen Da sich die Technologie weiterentwickelt und sich ?ndern muss, werden Programmiersprachen st?ndig aktualisiert und verbessert. PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und wurde st?ndig verbessert, um Entwicklern leistungsf?higere und effizientere Tools zur Verfügung zu stellen. Die kürzlich ver?ffentlichte PHP 8.3-Version bringt viele lang erwartete neue Funktionen und Verbesserungen. Werfen wir einen Blick auf einen überblick über diese neuen Funktionen. Initialisierung von Nicht-Null-Eigenschaften Wenn in früheren Versionen von PHP einer Klasseneigenschaft nicht explizit ein Wert zugewiesen wurde, ist es ihr Wert

Interpretation neuer Funktionen der Go-Sprache: effizientere Programmierung Interpretation neuer Funktionen der Go-Sprache: effizientere Programmierung Mar 10, 2024 pm 12:27 PM

[Interpretation neuer Funktionen der Go-Sprache: Um die Programmierung effizienter zu gestalten, sind spezifische Codebeispiele erforderlich.] In den letzten Jahren hat die Go-Sprache im Bereich der Softwareentwicklung gro?e Aufmerksamkeit auf sich gezogen, und ihr einfaches und effizientes Designkonzept hat immer mehr Aufmerksamkeit erregt Entwickler. Als statisch typisierte Programmiersprache führt die Go-Sprache weiterhin neue Funktionen ein, um die Entwicklungseffizienz zu verbessern und den Code-Schreibprozess zu vereinfachen. In diesem Artikel werden die neuesten Funktionen der Go-Sprache ausführlich erl?utert und anhand spezifischer Codebeispiele erl?utert, wie Sie den Komfort dieser neuen Funktionen erleben k?nnen. Modulare Entwicklung (GoModules) Go-Sprache ab 1

Was sind die neuen Funktionen von es6? Was sind die neuen Funktionen von es6? Aug 04, 2023 am 09:54 AM

Die neuen Funktionen von es6 sind: 1. Bereich auf Blockebene, in dem Variablen im Bereich auf Blockebene deklariert werden k?nnen. 2. Pfeilfunktion, eine neue Art der Funktionsdeklaration. 3. Destrukturierende Zuweisung, eine M?glichkeit, Werte daraus zu extrahieren ein Array oder Objekt und weisen Sie einer Variablen einen Wert zu; 4. Standardparameter, die die Bereitstellung von Standardwerten für Parameter beim Definieren von Funktionen erm?glichen; 5. Erweiterungsoperatoren, die Arrays oder Objekte erweitern und Elemente extrahieren k?nnen; 7. Klassen und Module 8. Iteratoren und Generatoren 10. Modularer Import und Export;

Ein überblick über die neuen Funktionen von CSS3: So erzielen Sie mit CSS3 übergangseffekte Ein überblick über die neuen Funktionen von CSS3: So erzielen Sie mit CSS3 übergangseffekte Sep 09, 2023 am 11:27 AM

übersicht über die neuen Funktionen von CSS3: So erzielen Sie mit CSS3 übergangseffekte. CSS3 ist die neueste Version von CSS. Unter den vielen neuen Funktionen dürfte der übergangseffekt die interessanteste und praktischste sein. übergangseffekte k?nnen unsere Seiten w?hrend der Interaktion flüssiger und sch?ner machen und den Benutzern ein gutes visuelles Erlebnis bieten. In diesem Artikel wird die grundlegende Verwendung von CSS3-übergangseffekten mit entsprechenden Codebeispielen vorgestellt. Attribut ?transition-property“: Geben Sie den CSS-Eigenschaftsübergangseffekt an, der überführt werden muss

Ein überblick über die neuen Funktionen von CSS3: So wenden Sie CSS3-Animationseffekte an Ein überblick über die neuen Funktionen von CSS3: So wenden Sie CSS3-Animationseffekte an Sep 09, 2023 am 09:15 AM

überblick über die neuen Funktionen von CSS3: So wenden Sie CSS3-Animationseffekte an Einführung: Mit der Entwicklung des Internets hat CSS3 nach und nach CSS2 als die am h?ufigsten verwendete Stilsprache in der Front-End-Entwicklung abgel?st. CSS3 bietet viele neue Funktionen, die beliebteste davon sind Animationseffekte. Durch die Verwendung von CSS3-Animationen k?nnen Sie Webseiten atemberaubende interaktive Effekte hinzufügen und das Benutzererlebnis verbessern. In diesem Artikel werden einige h?ufig verwendete Animationsfunktionen von CSS3 vorgestellt und relevante Codebeispiele bereitgestellt. 1. TransitionAnimat

überblick über die neuen Funktionen von CSS3: So verwenden Sie CSS3, um ein horizontal zentriertes Layout zu erreichen überblick über die neuen Funktionen von CSS3: So verwenden Sie CSS3, um ein horizontal zentriertes Layout zu erreichen Sep 09, 2023 pm 04:09 PM

überblick über die neuen Funktionen von CSS3: So verwenden Sie CSS3, um ein horizontal zentriertes Layout zu erreichen. Bei Webdesign und -layout ist ein horizontal zentriertes Layout eine h?ufige Anforderung. In der Vergangenheit haben wir dazu oft komplexe JavaScript- oder CSS-Tricks eingesetzt. Mit CSS3 wurden jedoch einige neue Funktionen eingeführt, die horizontal zentrierte Layouts einfacher und flexibler machen. In diesem Artikel werden einige neue Funktionen von CSS3 vorgestellt und einige Codebeispiele bereitgestellt, um zu veranschaulichen, wie Sie mit CSS3 ein horizontal zentriertes Layout erreichen. 1. Verwenden Sie Flexbox zum Layouten der Datei

See all articles