
-
"Buang"
public static void main(String args[])
.Salah satu soalan wawancara java yang popular untuk pelajar baru, dan sangat mudah.
-
public
ialah pengubah suai akses. Kami menggunakannya untuk menentukan akses kepada kaedah ini. Di sini pengubah suai adalah "awam", jadi mana-mana Kelas mempunyai akses kepada kaedah ini. -
static
. Kata kunci Java ini bermakna kami menggunakan kaedah ini tanpa mencipta Objek Kelas baharu. -
Void
ialah jenis pulangan kaedah. Ini bermakna kaedah itu tidak mengembalikan sebarang nilai. -
main
ialah nama kaedah. JVM "mengetahuinya" sebagai titik masuk ke aplikasi (ia sepatutnya mempunyai tandatangan tertentu).Main
adalah kaedah di mana pelaksanaan utama berlaku. -
String args[]
. Ini adalah parameter yang diluluskan kepada kaedah utama. Di sini kami mempunyai hujah jenis String yang diterima oleh aplikasi Java anda apabila anda menjalankannya. Anda boleh menaipnya di terminal.
-
-
Apakah perbezaan antara
equals()
dan==
?Pertama, "
==
" ialah pengendali manakalaequals()
kaedah. Kami menggunakan==
operator untuk perbandingan rujukan (atau perbandingan alamat) danequals()
kaedah untuk perbandingan kandungan. Ini bermakna==
menyemak sama ada kedua-dua objek menghala ke lokasi memori yang sama sambilequals()
membandingkan nilai dalam objek. -
Bolehkah kita melaksanakan program tanpa
main()
kaedah?Banyak soalan temuduga asas java adalah sangat mudah. Suka yang ini. Jadi jawapan ringkas ialah: ya, kita boleh. Sebagai contoh kita boleh melakukannya menggunakan blok statik.
Anda boleh menggunakan blok statik untuk memulakan ahli data statik. Ia dilaksanakan sebelum
main
kaedah, pada masa pemuatan kelas.class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
Outputnya ialah:
static block is invoked Now main method
Bagaimana dengan jumlah ketiadaan kaedah utama? Jika anda cuba menjalankan kelas biasa tanpa kaedah utama sama sekali, anda mendapat ralat seterusnya: Kaedah utama tidak ditemui dalam Ujian kelas, sila tentukan kaedah utama sebagai: public static void main (String [] args) atau aplikasi JavaFX kelas mesti memanjangkan javafx.application.Application. Ralat itu sendiri mengatakan bahawa jika ini adalah aplikasi JavaFX dan kelas itu diwarisi daripada javafx.application.Application, maka ia boleh dilakukan.
-
Apakah
immutable
objek? Bolehkah anda menciptaimmutable
objek?Anda tidak boleh mengubah suai objek kelas
immutable
selepas penciptaannya. Jadi sebaik sahaja anda menciptanya, anda tidak boleh mengubahnya. Jika anda cuba mengubah suaiImmutable
objek anda mendapat objek baharu (klon) dan menukar klon ini semasa penciptaan.Satu contoh yang baik ialah
String
, ia adalahimmutable
di Jawa. Ini bermakna anda tidak boleh menukar objek itu sendiri, tetapi anda boleh menukar rujukan kepada objek tersebut. -
Berapakah bilangan objek yang dicipta dalam kod berikut?
Salah satu soalan wawancara teknikal java yang menggantikan #4.
String s1="Hello"; String s2="Hello"; String s3="Hello";
Jawapannya ialah "satu sahaja" kerana Java mempunyai Kolam Rentetan. Apabila kita mencipta objek String menggunakan operator new(), ia mencipta objek baharu dalam memori timbunan. Jika kami menggunakan sintaks literal String, seperti dalam contoh kami, ia mungkin mengembalikan objek sedia ada daripada kolam String, jika ia sudah wujud.
-
Berapakah bilangan objek yang dicipta dalam kod berikut?
String s = new String("Hello");
Terdapat 2 objek. Satu berada dalam kolam pemalar rentetan (jika belum ada) dan satu lagi berada dalam timbunan.
-
Apakah Perbezaan Antara
String
,StringBuilder
DanStringBuffer
Kelas di Jawa ?Terdapat salah seorang pemimpin dalam soalan temuduga java teratas.
Pertama sekali
String
ialah kelas Abadi. Ini bermakna anda tidak boleh mengubah suai kandungannya setelah dibuat. SemasaStringBuffer
danStringBuilder
ialah kelas boleh ubah, jadi anda boleh menukarnya kemudian. Jika kita menukar kandunganString
objek, ia mencipta rentetan baharu oleh itu ia tidak mengubah suai yang asal. Itulah sebabnya prestasi denganStringBuffer
lebih baik daripada denganString
.Perbezaan utama antara kaedah
StringBuffer
dan kaedahStringBuilder
ituStringBuffer
disegerakkan manakalaStringBuilder
's tidak. -
Adakah terdapat sebarang perbezaan
String
yang dibuat menggunakan literal dan dengannew()
operator?Terdapat. Jika kita mencipta String dengan
new()
pengendali, ia muncul dalam timbunan dan dalam kolam rentetan (jika belum ada). Jika anda menciptaString
menggunakan literal, ia dibuat dalam kolam rentetan (jika belum ada). Kolam rentetan ialah kawasan penyimpanan dalam timbunan, yang menyimpan literal rentetan. -
Bolehkah anda mengatasi
private
ataustatic
kaedah dalam Java?Salah satu soalan wawancara rumit java untuk pemula. Anda benar-benar tidak boleh mengatasi
private
ataustatic
kaedah dalam Java.Anda tidak boleh mengatasi
private
kaedah kerana skop penentu akses peribadi hanya dalam kelas. Apabila anda akan mengatasi sesuatu, kita sepatutnya mempunyai kelas ibu bapa dan anak. Jika kaedah superclass ialahprivate
, kelas kanak-kanak tidak boleh menggunakannya dan kaedah dalam kelas kanak-kanak akan dianggap sebagai kaedah baharu (tidak ditindih).Static
kaedah juga tidak boleh ditindih, keranastatic
kaedah adalah sebahagian daripada Kelas itu sendiri, dan bukan sebahagian daripada mana-mana objek kelas. Pasti anda boleh mengisytiharkanstatic
kaedah yang sama dengan tandatangan yang sama dalam kelas kanak-kanak, tetapi sekali lagi, kaedah tersebut akan dianggap sebagai kaedah baharu. -
Perbezaan antara
Abstract Class
danInterface
Salah satu soalan temu bual pembangun java popular yang berkaitan dengan prinsip OOP. Pertama sekali, dalam Java
interface
mentakrifkan tingkah laku danabstract class
mencipta hierarki.Kelas abstrak Antara muka Adalah mungkin untuk mempunyai badan kaedah (kaedah bukan abstrak) dalam kelas abstrak Antara muka hanya boleh mempunyai kaedah abstrak. Dalam Java 8 atau lebih baru, ia menjadi mungkin untuk menentukan kaedah lalai dan melaksanakannya secara langsung dalam antara muka. Juga, Antara Muka dalam Java 8 boleh mempunyai kaedah statik. Pembolehubah contoh boleh berada dalam kelas abstrak Antara muka tidak boleh mempunyai pembolehubah contoh. Pembina dibenarkan Antara muka tidak boleh mempunyai sebarang pembina. Kaedah statik dibenarkan Kaedah statik tidak dibenarkan Kelas hanya boleh mempunyai satu ibu bapa abstrak Satu antara muka boleh melaksanakan kelas yang berbeza Kelas abstrak mungkin menyediakan pelaksanaan antara muka. Antara Muka tidak dapat menyediakan pelaksanaan kelas abstrak. Kelas abstrak dibenarkan untuk melanjutkan kelas Java yang lain dan melaksanakan berbilang antara muka Java. Antara muka dibenarkan untuk memanjangkan antara muka Java yang lain sahaja. Kelas abstrak Java boleh mempunyai ahli kelas peribadi dan dilindungi Ahli antara muka Java adalah awam secara lalai -
Bolehkah kita mengisytiharkan
static
pembolehubah dan kaedah dalamabstract
kelas?Ya, adalah mungkin untuk mengisytiharkan
static
pembolehubah dan kaedah dalamabstract
kaedah. Tiada keperluan untuk membuat objek untuk mengakses konteks statik. Jadi kami dibenarkan untuk mengakses konteks statik yang diisytiharkan di dalamabstract
kelas dengan menggunakan nama kelasabstract
. -
Apakah jenis kawasan ingatan yang diperuntukkan oleh JVM?
Kawasan Kelas menyimpan struktur perkelas, contohnya, kumpulan pemalar masa jalan, medan, data kaedah dan semua kod untuk kaedah.
Heap ialah kawasan data masa jalan di mana memori diperuntukkan kepada objek.
Tindanan menyimpan bingkai. Ia mengandungi pembolehubah tempatan dan hasil separa, dan mengambil bahagian dalam penyeruan dan pemulangan kaedah. Setiap urutan mempunyai tindanan JVM peribadi, dibuat pada masa yang sama dengan urutan. Bingkai baharu dibuat setiap kali kaedah digunakan. Bingkai dimusnahkan apabila permohonan kaedahnya selesai.
Daftar Kaunter Program mengandungi alamat arahan mesin maya Java yang sedang dilaksanakan.
Timbunan Kaedah Asli mengandungi semua kaedah asli yang digunakan dalam aplikasi.
-
Mengapakah berbilang warisan tidak dibenarkan di java?
Ia akan menjadi sangat rumit. Bayangkan tiga kelas
A
,B
, danC
danC
mewarisiA
danB
. Sekarang,A
danB
kelas mempunyai kaedah yang sama dan anda memanggilnya daripada objek kelas kanak-kanak... Yang mana satu?A
's atauB
's? Di sini kita mempunyai kekaburan.jika anda cuba mewarisi dua kelas Java menyebabkan ralat masa kompilasi.
-
Bolehkah kita membebankan
main()
kaedah?Sudah tentu, kami dibenarkan untuk mempunyai banyak
main
kaedah dalam program Java dengan menggunakan kaedah lebih muatan. Cubalah! -
Bolehkah kita mengisytiharkan pembina sebagai
final
?Tidak. Pembina tidak boleh diisytiharkan sebagai
final
kerana ia tidak boleh diwarisi. Jadi adalah tidak masuk akal untuk mengisytiharkan pembina sebagaifinal
. Walau bagaimanapun, jika anda cuba melakukannya, pengkompil Java memberi anda ralat. -
Bolehkah kita mengisytiharkan antara muka sebagai
final
?Tidak, kita tidak boleh melakukan ini. Antara muka tidak boleh
final
kerana antara muka harus dilaksanakan oleh sesetengah kelas mengikut definisinya. Oleh itu, tidak ada gunanya untuk membuat antara mukafinal
. Walau bagaimanapun, jika anda cuba berbuat demikian, pengkompil akan menunjukkan ralat. -
Apakah perbezaan antara
static binding
dandynamic binding
?Yang
binding
boleh diselesaikan pada masa penyusunan oleh pengkompil dipanggilstatic
atau pengikatan awal.Binding
daripada semuastatic
,private
danfinal
kaedah dilakukan pada masa penyusunan.Dalam
Dynamic binding
pengkompil tidak boleh memilih kaedah untuk dipanggil. Mengatasi adalah contoh sempurnadynamic binding
. Dalam mengatasi kedua-dua kelas ibu bapa dan anak mempunyai kaedah yang sama.Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } }
-
Bagaimana untuk membuat kelas baca sahaja di Java?
Anda boleh melakukannya dengan menjadikan semua medan kelas peribadi. Kelas baca sahaja hanya mempunyai kaedah getter yang mengembalikan harta peribadi kelas kepada
main
kaedah tersebut. Anda tidak dapat mengubah suai sifat ini, sebabnya adalah kekurangan kaedah penetap.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
Bagaimana untuk membuat kelas tulis sahaja di Jawa?
Sekali lagi, anda harus membuat semua medan kelas
private
. Sekarang, kelas tulis sahaja anda sepatutnya hanya mempunyai kaedah penetap dan tiada pengambil. Oleh itu, kita tidak boleh membaca sifat kelas.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
Setiap
try
blok mesti diikuti dengancatch
blok, bukan?Tidak. Ia bukan satu keperluan. Setiap
try
blok boleh tanpacatch
blok. Ia boleh diikuti oleh sama ada blok tangkapan atau blok akhirnya atau bahkan tanpa mereka sama sekali.public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }
Pengeluaran:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Satu lagi contoh:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }
Pengeluaran:
test
PS: Sebelum kaedah Java 8 dalam antara muka boleh menjadi abstrak sahaja. Dalam Java 8 atau lebih baru, ia menjadi mungkin untuk menentukan kaedah lalai dan melaksanakannya secara langsung dalam antara muka. -
Apakah perbezaan antara
throw
katathrows
kunci?Throws
digunakan untuk mengisytiharkan pengecualian, jadi ia berfungsi serupa dengantry-catch
blok.Throw
kata kunci digunakan untuk membuang pengecualian secara eksplisit daripada kaedah atau mana-mana blok kod lain.Throw
diikuti oleh contohException
kelas dan lontaran diikuti oleh nama kelas pengecualian.Throw
digunakan dalam badan kaedah untuk membuang pengecualian.Throws
digunakan dalam tandatangan kaedah untuk mengisytiharkan pengecualian yang mungkin berlaku dalam pernyataan yang terdapat dalam kaedah.Ia dibenarkan untuk membuang satu pengecualian pada satu masa tetapi anda boleh mengendalikan berbilang pengecualian dengan mengisytiharkannya menggunakan
throw
kata kunci. Anda boleh mengisytiharkan berbilang pengecualian, cth,public void method()throws IOException
,SQLException
.
GO TO FULL VERSION