JavaRush /Blog Java /Random-MS /Coffee break #167. Perkara yang perlu disemak sebelum tem...

Coffee break #167. Perkara yang perlu disemak sebelum temu duga Java. Apakah perbezaan antara enum dan iterator di Jawa?

Diterbitkan dalam kumpulan

Perkara yang perlu disemak sebelum temu duga Java

Sumber: Sederhana Dalam artikel ini, anda akan menemui 17 petua daripada pembangun berpengalaman yang akan membantu anda dalam temu bual Java. Coffee break #167.  Perkara yang perlu disemak sebelum temu duga Java.  Apakah perbezaan antara enum dan iterator di Jawa?  - 1Saya telah bekerja dalam industri IT selama lebih 20 tahun dan menghabiskan sebahagian besar masa itu bekerja dengan Java. Di samping itu, saya mendapat banyak pengalaman menemu bual pembangun Java. Walaupun bahasa Java sentiasa berkembang, konsep teras sebahagian besarnya tetap sama. Berikut ialah beberapa petua yang saya ingin kongsikan dengan bakal pembangun sebelum mereka pergi temu duga. Jika anda mengulanginya, ia akan menyelamatkan anda daripada kesilapan yang serius.
  1. Kelas Objek berada di akar hierarki kelas Java. Semua kelas Java menjejak kembali ke Object . Walaupun kelas tidak memanjangkan mana-mana kelas secara eksplisit, ia memanjangkan Object . Walau bagaimanapun, kelas bebas untuk memanjangkan Objek secara eksplisit.

  2. Di Jawa, anda boleh melanjutkan hanya satu kelas (warisan berbilang tidak dibenarkan kerana kekaburan). Walau bagaimanapun, kelas boleh melaksanakan sebarang bilangan antara muka pada masa yang sama.

  3. Antara muka memanjangkan antara muka lain (berbanding dengan pelaksanaan).

  4. Terdapat empat pengubah akses dalam Java: awam (tersedia untuk semua orang), dilindungi (hanya tersedia untuk subkelas), peribadi (hanya tersedia dalam satu kelas), lalai (tersedia dalam satu pakej). Perlu diingatkan bahawa subkelas kelas yang sama boleh berada dalam pakej yang berbeza. Kelas induk dan subkelas tidak perlu menjadi sebahagian daripada pakej yang sama.

  5. Rentetan kelas tidak boleh diubah. Ketidakbolehubahan bermakna kelas String itu sendiri tidak menyediakan sebarang kaedah untuk menggantikan nilai dalam rujukan String . Jika anda ingin menggantikan nilai rujukan rentetan, anda mesti menetapkan nilai secara eksplisit menggunakan operator = . Bandingkan ini dengan kelas StringBuffer atau StringBuilder , yang mempunyai kaedah seperti append supaya anda tidak perlu menggunakan operator = di sana .

  6. ConcurrentHashMap adalah lebih cekap daripada Hashtable . ConcurrentHashMap beroperasi pada segmen struktur data asas, di mana operasi tulis hanya mengunci segmen tertentu (tidak kira segmen mana kepunyaan kunci). Walau bagaimanapun, dalam Hashtable keseluruhan struktur data akan dikunci.

  7. ConcurrentHashMap adalah lebih perlahan daripada HashMap kerana HashMap tidak melaksanakan keselamatan benang. HashMap boleh membuang ConcurrentModificationException jika utas berulang pada HashMap dan utas lain cuba mengubah suai HashMap yang sama . ConcurrentHashMap tidak akan membuang pengecualian di sini.

  8. Bagaimana untuk melaksanakan kesamaan dua objek kelas yang sama yang telah anda tentukan? Jawapan: Ini boleh dilakukan dengan mengatasi kaedah hashcode() .

  9. Apakah hasil lalai kaedah toString() ? Jawapan: Ia adalah gabungan nama kelas, tanda @ dan nilai kod cincang() .

  10. Bagaimana untuk melaksanakan polimorfisme di Jawa? Satu cara untuk melakukan ini adalah dengan membebankan kaedah. Cara lain ialah mengatasi kaedah tersebut.

  11. Bagaimanakah anda memanggil pembina superclass dari kelas kanak-kanak? Jawapan: Ini boleh dilakukan menggunakan kata kunci super() . Kaedah super() tanpa hujah sentiasa dipanggil, walaupun ia tidak dinyatakan secara eksplisit. Kaedah super() dengan hujah mesti dinyatakan secara eksplisit. Panggilan kepada super() (dengan atau tanpa hujah) mestilah sentiasa menjadi baris pertama dalam pembina kelas kanak-kanak jika ia perlu dipanggil.

  12. Apakah pengecualian yang disemak dan tidak disemak? Jawapan: Pengecualian yang disemak adalah pengecualian yang mesti diisytiharkan atau ditangkap dalam kaedah di mana ia dijangka dilemparkan. Pengecualian yang tidak disemak tidak mempunyai had ini. java.io.IOException ialah contoh pengecualian yang diperiksa. Pengecualian yang tidak ditanda datang daripada kelas RunTimeException .

  13. Kelas akar hierarki pengecualian ialah Throwable (yang seterusnya secara tersirat memanjangkan Object ). Pengecualian dan Ralat datang daripada Throwable .

  14. Sejak Java 8, kaedah boleh mempunyai pelaksanaan dalam antara muka. Kaedah lalai dan kaedah statik boleh mempunyai pelaksanaan.

  15. Kelas yang layak sebagai abstrak tidak boleh dibuat seketika. Mana-mana kelas yang tidak menyediakan badan untuk mana-mana kaedah mesti diisytiharkan abstrak. Pembangun boleh mengisytiharkan kelas sebagai abstrak walaupun semua kaedah mempunyai badan - walau bagaimanapun, ini tidak begitu disyorkan kerana dalam kes ini kelas tidak boleh dijadikan instantiated.

  16. Kelas akhir tidak boleh dilanjutkan. Pembolehubah akhir tidak boleh diberikan nilai lain. Kaedah terakhir tidak boleh ditindih.

  17. Apakah kata kunci yang diperlukan dalam binaan try-catch-finally ? Ini boleh jadi cuba-tangkap , cuba-akhirnya atau ketiga-tiganya. Dalam kes ini, tangkapan bukanlah kata kunci yang diperlukan.

Apakah perbezaan antara enum dan iterator di Jawa?

Sumber: Rrtutors Siaran ini dibawa kepada anda membincangkan perbezaan antara penghitungan dan lelaran di Jawa. Pakej Java.util menyediakan dua antara muka untuk melintasi elemen objek Koleksi : Penghitungan dan Iterator . Walaupun kedua-duanya melalui objek Koleksi , terdapat beberapa perbezaan di antara mereka.

Perbezaan antara enum dan iterator

  • Masa ditambah ke JDK: Mereka diperkenalkan pada masa yang berbeza. Enum telah diperkenalkan dalam JDK 1.0, manakala iterator diperkenalkan dalam JDK 1.2.

  • Mengalih keluar unsur: Ini adalah perbezaan utama antara keduanya. Dalam antara muka Iterator , kita boleh mengalih keluar elemen apabila melelaran pada objek Koleksi , manakala kita tidak boleh mengubahnya apabila melelaran pada objek Koleksi menggunakan Penghitungan . Ini kerana antara muka Iterator mempunyai kaedah remove() , tetapi antara muka Enumeration tidak.

  • Jenis operasi: Iterator mempunyai jenis operasi yang gagal-cepat, dan penghitungan mempunyai jenis operasi yang gagal-selamat. Akibatnya, Iterator membuang ConcurrentModificationException apabila koleksi diubah suai semasa lelaran melainkan kaedah remove() sendiri digunakan , manakala Enumeration tidak membuang sebarang pengecualian apabila koleksi diubah suai semasa lelaran.

Contoh Penghitungan dan Iterator dalam Java

Contoh penghitungan

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Enumeration;

import java.util.List;

import java.util.Vector;

public class Enumeration_Example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "Apple", "HP"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "Samsung");

        }

        private static void delete(Vector vectali, String laptop) {

            Enumeration lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              String s = (String) lapi.nextElement();

              if (s.equals(laptop)) {

                  vectali.remove(laptop);

              }

            }

            System.out.println("The Laptop brands includes:");

            lapi = vectali.elements();

            while (lapi.hasMoreElements()) {

              System.out.println(lapi.nextElement());

            }

      }

}
Kesimpulan:
Jenama Laptop termasuk: Lenovo Apple HP

Contoh iterator:

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

import java.util.Vector;

public class Iterator_example {

      public static void main(String[] args) {

                  List laptoplist = new ArrayList(Arrays.asList( new String[] {"Samsung", "Lenovo", "HP", "Apple"}));

            Vector vectali = new Vector(laptoplist);

            delete(vectali, "HP");

        }

        private static void delete(Vector vectali, String name) {

            Iterator a = vectali.iterator();

            while (a.hasNext()) {

              String s = (String) a.next();

              if (s.equals(name)) {

                  a.remove();

              }

            }

            // Display the names

            System.out.println("The laptop brand includes:");

            a = vectali.iterator();

            while (a.hasNext()) {

              System.out.println(a.next());

            }

      }

}
Kesimpulan:
Jenama komputer riba termasuk: Samsung Lenovo Apple
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION