Artikel ini membawa anda pengetahuan yang berkaitan tentang java, yang terutamanya memperkenalkan isu yang berkaitan dengan ungkapan lambda ialah bentuk sintaks baharu selepas permulaan JDK8, yang boleh Memudahkan penulisan kod kelas dalaman tanpa nama. Mari kita lihat. Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: "tutorial video java"
Gambaran keseluruhan Lambda
Ungkapan Lambda ialah bentuk sintaks baharu selepas permulaan JDK8
Fungsi: Permudahkan penulisan kod kelas dalaman tanpa nama
Format:
(匿名内部类被重写方法的形参列表)->{ 被重写方法的方法体代码 } 注:->是语法形式,无实际意义
Mula-mula kita tentukan kelas abstrak, tulis semula kaedahnya melalui kelas dalaman tanpa nama, kemudian permudahkan dan bandingkan perubahan antara kedua-duanya:
Sebelum menggunakan ungkapan Lambda:
public static void main (String[] args){ People p = new People(){ @Override public void run(){ System.out.println("小学生跑的很慢"); } }; p.run(); } abstract class People{ public abstract void run(); }
Selepas menggunakan ungkapan Lambda:
People p = ()->{ System.out.println("小学生跑的很慢"); }; //会出现报错
Ralat akan muncul, ini Mengapa? Sebabnya ialah takrifan ungkapan Lambda sebelum ini tidak dapat memudahkan semua kelas dalaman tanpa nama Ia hanya boleh memudahkan bentuk penulisan kelas dalaman tanpa nama dalam antara muka berfungsi, dan terdapat dan hanya Terdapat. ialah kaedah abstrak Biasanya, kami akan menambah anotasi @Functionalinterface pada antara muka untuk menandakan bahawa antara muka mesti memenuhi antara muka berfungsi.
Benar-benar dipermudahkan oleh ungkapan Lambda:
@FunctionalInterface//加上这个注解必须是函数式接口,且只有一个抽象方法 interface People{ void run(); } //简化之前的匿名内部类 People p = new People(){ @Override public void run(){ System.out.println("小学生跑的很慢!"); } }; //简化之后 People p = () -> { System.out.println("小学生跑的很慢!"); };
Selain itu, anda juga boleh menggantikannya ke dalam kaedah sebagai parameter:
//在原来的基础上定义一个pk方法 public static void pk(People p){ System.out.println("跑步情况如何:") p.run(); } //不使用Lambda的情况下: pk(p);//需要在定义匿名内部类之后,将p代入; //使用Lambda的情况: People p = () -> { System.out.println("小学生跑的很慢!"); }; pk(() -> { System.out.println("小学生跑的很慢!"); }); //由于等号右边即是People创建的对象p,因此可以可以直接将其代入
Faedah Lambda:
Lambda ialah fungsi tanpa nama Kami boleh memahami ungkapan Lambda sebagai sekeping kod yang boleh dihantar kepada anda boleh menulis kod yang lebih ringkas dan lebih fleksibel Sebagai gaya pengekodan yang lebih padat, keupayaan ekspresi bahasa Java telah dipertingkatkan.
Peranan praktikal Lambda
Dalam proses pembelajaran sebelum ini, kami telah mempelajari pengetahuan berkaitan Tatasusunan, antaranya terdapat kaedah isihan (yang boleh menyusun tatasusunan dalam menaik atau tertib menurun), Ia sebenarnya ialah kelas antara muka dan hanya mempunyai satu kaedah abstrak:
//精简之前: Arrays.sort(grade,new Comparator<integer>(){ @Override public int compare(Integer o1,Integer o2){ return o2 -o1; } }); //精简之后: Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; });</integer>
Peraturan peninggalan ungkapan Lambda
- Jenis parameter boleh ditinggalkan
//参考前面的实战例子 Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; }); //省略参数类型之后 Arrays.sort(grade,( o1, o2){ return o2 -o1; });
- Jika terdapat hanya satu parameter, jenis parameter boleh ditinggalkan dan () juga boleh diabaikan
//简单引用一个单个参数的例子,不需要了解其具体含义 btn.addActionListener((ActionEvent e) -> { System.out.println("我是简单的例子。"); }); //简化之后: btn.addActionListener( e -> { System.out.println("我是简单的例子。"); });
- Jika kaedah kod badan ungkapan Lambda hanya mempunyai satu baris kod. Anda boleh meninggalkan pendakap kerinting dan meninggalkan koma bernoktah
//参照上一条规则的例子 btn.addActionListener( e -> { System.out.println("我是简单的例子。"); }); //简化之后: btn.addActionListener( e -> System.out.println("我是简单的例子。") );
- jika kod badan kaedah bagi ungkapan Lambda hanya mempunyai satu baris kod. Anda boleh meninggalkan pendakap kerinting. Pada masa ini, jika baris kod ini ialah pernyataan pulangan, pulangan mesti ditinggalkan dan ";" mesti ditinggalkan
//参照第一条规则的代码 Arrays.sort(grade,(Integer o1,Integer o2) -> { return o2 -o1; }); //简化之后: Arrays.sort(grade,( o1, o2)-> o2 -o1);
Pembelajaran yang disyorkan: "tutorial video java》
Atas ialah kandungan terperinci Bagaimana untuk memahami ungkapan lambda dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Javadevelopmentisnotentirelyplatform-independentduetoseveralfactors.1) jvmvariationsaffecperformanceandbehavioracrossdifferentos.2) nativelibrariesviajniintroduceplatform-specificiSsues.3)

Kod Java akan mempunyai perbezaan prestasi apabila berjalan pada platform yang berbeza. 1) Strategi pelaksanaan dan pengoptimuman JVM adalah berbeza, seperti OracleJDK dan OpenJDK. 2) Ciri -ciri sistem operasi, seperti pengurusan memori dan penjadualan thread, juga akan menjejaskan prestasi. 3) Prestasi boleh ditingkatkan dengan memilih JVM yang sesuai, menyesuaikan parameter JVM dan pengoptimuman kod.

Java'splatformindecthaslimitationscludingperformanceOverhead, VersionCompateIssues, cabaranwithnativelibraryintegration, platform-specificfeatures, danjvminstallation/penyelenggaraan.

Platformindependenceallowsprogramstorunonanyplatformwithoutmodification,whilecross-platformdevelopmentrequiressomeplatform-specificadjustments.Platformindependence,exemplifiedbyJava,enablesuniversalexecutionbutmaycompromiseperformance.Cross-platformd

JITcompilationinJavaenhancesperformancewhilemaintainingplatformindependence.1)Itdynamicallytranslatesbytecodeintonativemachinecodeatruntime,optimizingfrequentlyusedcode.2)TheJVMremainsplatform-independent,allowingthesameJavaapplicationtorunondifferen

Javaispopularforcross-platformdesktopapplicationsduetoits "writeOnce, runanywhere" falsafah.1) itusesBytecodethatrunsonanyjvm-equippedplatform.2) LibrariesLikeswingandjavafxhelpcreatenativeS.3) ITseShipBareSivaryS

Alasan untuk menulis kod khusus platform di Java termasuk akses kepada ciri sistem operasi tertentu, berinteraksi dengan perkakasan tertentu, dan mengoptimumkan prestasi. 1) Gunakan JNA atau JNI untuk mengakses Windows Registry; 2) Berinteraksi dengan pemandu perkakasan khusus Linux melalui JNI; 3) Gunakan logam untuk mengoptimumkan prestasi permainan pada macOS melalui JNI. Walau bagaimanapun, menulis kod khusus platform boleh menjejaskan mudah alih kod, meningkatkan kerumitan, dan berpotensi menimbulkan risiko overhead dan keselamatan.

Java akan meningkatkan lagi kemerdekaan platform melalui aplikasi awan asli, penempatan pelbagai platform dan interoperabilitas silang bahasa. 1) Aplikasi asli awan akan menggunakan GraalVM dan Quarkus untuk meningkatkan kelajuan permulaan. 2) Java akan diperluaskan ke peranti tertanam, peranti mudah alih dan komputer kuantum. 3) Melalui Graalvm, Java akan mengintegrasikan dengan lancar dengan bahasa seperti Python dan JavaScript untuk meningkatkan interoperabilitas silang bahasa.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
