JavaRush /Blog Java /Random-MS /Aras 21. Jawapan kepada soalan temu bual mengenai topik a...
zor07
Tahap
Санкт-Петербург

Aras 21. Jawapan kepada soalan temu bual mengenai topik aras

Diterbitkan dalam kumpulan
Tahap 21. Jawapan kepada soalan temu bual mengenai topik tahap - 1
  1. Senaraikan kaedah kelasObject

    • equals()
    • hashCode()
    • toString()
    • getClass()
    • notify()
    • notifyAll()
    • wait()
    • wait(long timeOut)
    • wait(long timeOut, int nanos)
  2. equalsMengapa & kaedah diperlukan hashCode?

    Digunakan untuk membandingkan objek.

    Tujuan kaedah ini equalsadalah untuk menentukan sama ada objek secara dalaman adalah sama dengan membandingkan kandungan dalaman objek. Ini equalsberfungsi dengan perlahan, mula-mula kod cincang objek dibandingkan, dan jika kod cincang adalah sama, semakan dibuat terhadapequals

  3. Apa yang berlaku jika anda mengatasi sama tetapi tidak mengatasi hashCode?

    Pada mulanya hashCode, nombor rawak.

    equalsKoleksi di Java sentiasa mencari/membandingkannya menggunakan kaedah sebelum membandingkan objek menggunakan hashCode(). Dan jika objek yang sama mempunyai berbeza hashCode, maka objek itu akan dianggap berbeza - tidak mungkin untuk membandingkan menggunakannya equals.

  4. Kenapa kaedahnya wait, notify, notifyAll?

    Kadangkala program mungkin mempunyai situasi di mana benang telah memasuki blok kod synchronized, menyekat monitor dan tidak boleh berfungsi lebih jauh, kerana beberapa data masih tiada: contohnya, fail yang sepatutnya diproses belum dimuatkan atau sesuatu seperti itu. Satu kaedah telah dicipta untuk menyelesaikan masalah ini wait(). Memanggil kaedah ini menyebabkan benang melepaskan monitor dan "jeda".

    Untuk menyahjeda, kaedah digunakan notify. notifyAllKaedah notify"menyahbeku" satu utas rawak, kaedah notifyAll- semua "beku" benang monitor yang diberikan.

  5. Bagaimana untuk mengklon objek dengan betul?

    Dua jenis pengklonan.

    Untuk mengklon objek lalai:

    • Tambahkan antara muka Cloneablepada kelas anda
    • Gantikan kaedah clonedan panggil pelaksanaan asas di dalamnya:
    class Point implements Cloneable
    {
     int x;
     int y;
    
     public Object clone()
     {
      return super.clone();
     }
    }

    Atau anda boleh menulis pelaksanaan kaedah itu clonesendiri:

    class Point
    {
     int x;
     int y;
    
     public Object clone()
     {
      Point point = new Point();
      point.x = this.x;
      point.y = this.y;
      return point;
     }
    }
  6. Mengapa kaedah itu diperlukan finalize()dan bagaimana ia berfungsi?

    Jika anda masih ingat, ini finalize()adalah kaedah khas yang dipanggil pada objek sebelum pemungut sampah memusnahkannya.

    Tujuan utama kaedah ini adalah untuk melepaskan sumber luar bukan Java yang digunakan: menutup fail, aliran I/O, dsb.

    finalize()berfungsi tidak stabil.

    Kaedah ini tidak memenuhi jangkaan yang diletakkan di atasnya. Mesin Java boleh menangguhkan pemusnahan objek, serta panggilan kaedah, finalizeselama yang ia suka. Lebih-lebih lagi, ia tidak menjamin bahawa kaedah ini akan dipanggil sama sekali. Dalam banyak situasi, demi "pengoptimuman" ia tidak dipanggil.

  7. Apakah perbezaannya final, finally, finalize?

    • final- pengubahsuai
    • Medan tidak boleh ditukar, kaedah ditindih
    • Kelas tidak boleh diwarisi
    • Pengubah suai ini hanya digunakan pada kelas, kaedah dan pembolehubah (juga pembolehubah tempatan)
    • Argumen kaedah ditandakan sebagai finalbaca sahaja; cuba mengubahnya akan mengakibatkan ralat penyusunan.
    • Переменные final не инициализируются по умолчанию, им необходимо явно присвоить meaning при объявлении or в конструкторе, иначе – ошибка компиляции
    • Если final переменная содержит ссылку на an object, an object может быть изменен, но переменная всегда будет ссылаться на тот же самый an object
    • Также это справедливо и для массивов, потому что массивы являются an objectми, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
    • Если класс объявлен final и abstract (взаимоисключающие понятия), произойдет ошибка компиляции
    • Так How final класс не может наследоваться, его методы никогда не могут быть переопределены

    finally — блок в связке try-catch-finally, code в котором выполнится независимо от того вылетело ли исключение в блоке try or нет. Используется для освобождения ресурсов.

    finalize — метод в классе Object см 6.

  8. What такое try-with-resources?

    Это специальная конструкция try, называемая try-with-resources, в которой Обрати внимание – после try следуют круглые скобки, где объявляются переменные и создаются an objectы. Эти an objectы можно использовать внутри блока try, обозначенного скобками {}. Когда выполнение команд блока try закончится, независимо от того – нормально оно закончилось or было исключение, для an object, созданного внутри круглых скобок (), будет вызван метод close();

  9. Чем отличаются методы wait(1000) и sleep(1000)?

    sleep() приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLE

    wait() меняет состояние потока на WAITING

    может быть вызвано только у an object владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае wait(int) с аргументом состояние будет TIMED_WAITING

  10. В чем отличие i++ и ++i?

    • ++i, i сначала увеличивается на 1, затем участвует в выражении.
    • i++, i сначала участвует в выражении, затем увеличивается на 1.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION