
71. Apa sing kedadeyan yen kita ora ngilangi metode toString () Enum?
Upaminipun kita duwe enum ing ngisor iki :
public enum Role {
STUDENT,
TEACHER,
DIRECTOR,
SECURITY_GUARD;
}
Ayo nampilake kolom STUDENT ing konsol kanthi nelpon metode toString () :
System.out.println(Role.STUDENT.toString());
Akibaté, kita entuk output konsol ing ngisor iki:
72. Apa sampeyan bisa ngumumake konstruktor ing njero Enum?
Ya mesthi. Konstruktor yaiku sing nyetel nilai kolom internal enum . Minangka conto, ayo nambah rong kolom menyang enum sadurunge ( ageFrom lan ageTo ) kanggo nunjukake rentang umur saben peran:
public enum Role {
STUDENT(5,18),
TEACHER(20,60),
DIRECTOR(40,70),
SECURITY_GUARD(18,50);
int ageFrom;
int ageTo;
Role(int ageFrom, int ageTo) {
this.ageFrom = ageFrom;
this.ageTo = ageTo;
}
}
73. Apa bedane == lan padha ()?
Iki minangka salah sawijining pitakonan wawancara sing paling umum dijaluk kanggo para pangembang Java. Kanggo miwiti, nalika mbandhingake nilai prasaja ( int , char , pindho ...), kita nggunakake == , amarga variabel iki ngemot nilai konkrit sing bisa dibandhingake langsung. Apa maneh, variabel primitif dudu obyek lengkap - ora oleh warisan kelas Obyek lan ora duwe metode sing padha () . Yen kita ngomong babagan mbandhingake variabel sing ngrujuk marang obyek, mula kita kudu ngerti yen == mung mbandhingake nilai referensi, yaiku apa sing nuduhake obyek sing padha utawa ora. Sanajan kabeh data ing siji obyek identik karo kabeh data liyane, nggunakake == kanggo mbandhingake bakal ngasilake asil negatif ( palsu ), amarga obyek kasebut kapisah. Nalika sampeyan wis guessed, kita nggunakake padha () cara kanggo mbandhingaké variabel referensi. Iki salah siji saka cara standar kelas Obyek , lan perlu kanggo comparison lengkap obyek. Nanging aku kudu langsung ngomong yen cara iki bisa digunakake kanthi bener, kudu ditindhes kanggo nuduhake persis carane obyek kudu dibandhingake. Yen sampeyan ora ngilangi metode kasebut, sampeyan bakal entuk implementasi standar, sing mbandhingake obyek nggunakake == . Ing IntelliJ IDEA, sampeyan bisa ngilangi kanthi otomatis nggunakake trabasan IDEA: Alt+Insert . Ing jendhela sing katon, pilih padha () lan hashCode () . Banjur pilih lapangan sing kudu dilebokake. Voila! Cara kasebut kanthi otomatis dileksanakake. Iki minangka conto carane metode sing digawe kanthi otomatis nggoleki kelas Cat sing paling gampang kanthi rong kolom - umur int lan jeneng String :
@Override
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || this.getClass() != o.getClass()) return false;
final Cat cat = (Cat) o;
return this.age == cat.age &&
Objects.equals(this.name, cat.name);
}
Nalika nerangake enum , ora ana prabédan praktis antarane == lan padha () . 


74. Apa cara ordinal () Enum?
Nalika kita nelpon cara int ordinal () ing lapangan enum , kita njaluk indeks basis nul lapangan ing dhaftar nilai enum. Ayo nelpon metode iki ing lapangan ing enum Peran , sing sadurunge dianggep:
System.out.println(Role.DIRECTOR.ordinal());
Dadi, konsol nampilake:
75. Apa Enum bisa digunakake karo TreeSet utawa TreeMap ing Jawa?
Kita bisa nggunakake jinis enum ing TreeSet lan TreeMap . Lan kita bisa nulis iki:
TreeSet<Role> treeSet = new TreeSet<>();
treeSet.add(Role.SECURITY_GUARD);
treeSet.add(Role.DIRECTOR);
treeSet.add(Role.TEACHER);
treeSet.add(Role.STUDENT);
treeSet.forEach(System.out::println);
Lan console bakal nampilake:
76. Kepiye cara ordinal () lan compareTo () Enum?
Kaya kasebut sadurunge, ordinal () ngasilake indeks lapangan ing dhaptar kolom enum. Uga, nalika nimbang pitakonan sadurunge, sampeyan weruh yen kolom enum dilebokake ing TreeSet (yaiku set sing diurutake), padha njupuk urutan sing diumumake ing enum . Lan kita ngerti, TreeSet lan TreeMap ngurutake item kanthi nelpon metode compareTo () antarmuka Comparable sing . Iki marang kita sing kelas Enum ngleksanakake antarmuka Comparable , kang tegese iku ngleksanakake compareTo () cara, kang internal nggunakake cara ordinal () kanggo nemtokake urutan urutan. Arep menyang kelas Enum , kita bisa konfirmasi Panyangka kita:


77. Tulisen tuladha Enum
Ing pitakonan sing dibahas ing ndhuwur, aku wis menehi conto enum s. Aku ora weruh alesan kanggo duplikat kode kene. Contone, waca Pitakonan 72 babagan konstruktor ing enum.78. Apa Enum bisa digunakake ing kasus switch?
Iku bisa lan kudu! Nggoleki pengalaman, aku bakal nyathet yen salah sawijining panggunaan enum sing paling umum yaiku ing konstruksi logis kaya pernyataan switch . Ing kasus iki, sampeyan bisa nyedhiyani kabeh kasus bisa s - yen sampeyan nulis logika kanggo saben lapangan enum , sampeyan malah ora perlu klausa standar ! Sawise kabeh, yen sampeyan nggunakake String utawa angka numerik, kayata int , sampeyan bisa uga nampa nilai sing ora dikarepke, nanging iku mokal karo enum . Mangkene pratelan switch kanggo conto ing ndhuwur:
public void doSomething(Role role) {
switch (role) {
case STUDENT:
// some logic for STUDENT
break;
case TEACHER:
// some logic for TEACHER
break;
case DIRECTOR:
// some logic for DIRECTOR
break;
case SECURITY_GUARD:
// some logic for SECURITY_GUARD
break;
}
}
79. Kepiye carane bisa entuk kabeh nilai Enum?
Yen sampeyan perlu kanggo njaluk kabeh nilai enum bisa, ana Nilai () cara, kang ngasilake Uploaded kabeh nilai bisa kanggo enum ing urutan alam sing (yaiku, ing urutan kang kasebut ing enum ). Tuladha:
Role[] roles = Role.values();
for (Role role : roles) {
System.out.println(role);
}
Kita bakal duwe ing console:
Stream API
80. Apa sing diarani Alur ing Jawa?
Java Stream API minangka cara sing relatif anyar kanggo sesambungan karo aliran data, ngidini kita ngolah data gedhe kanthi luwih trep lan kompak, uga ngolah data kanthi podo karo sawetara aliran, sing bisa ningkatake kinerja.81. Sebutake sifat utama transaksi
Topik ing kene yaiku Stream API, nanging pitakonan babagan transaksi. Hmm... Pisanan, ayo padha ngerti apa iku transaksi. Transaksi minangka klompok operasi berurutan ing basis data . Iku nuduhake unit logis saka karya. Transaksi bisa dileksanakake kanthi bebas saka transaksi bebarengan liyane kanthi sakabehe lan kasil, saéngga njaga integritas data, utawa ora dieksekusi babar pisan, mula ora ana pengaruhe. Transaksi duwe papat sifat utama, sing bisa gampang dielingi amarga akronim ACID . Ayo ndeleng apa tegese saben huruf saka akronim iki: A stands for Atomicity . Properti iki njamin yen ora ana transaksi sing sebagian ditindakake ing sistem kasebut. Salah siji kabeh suboperations bakal kaleksanan, utawa ora ana sing bakal kaleksanan ( kabeh utawa ora ana ). С tegese Konsistensi . Properti iki njamin yen saben transaksi sing sukses mung bakal ngasilake asil sing bener. Ing tembung liyane, iki minangka jaminan yen transaksi sukses, kabeh aturan sistem kanggo data tartamtu bakal dituruti. Yen transaksi ora sukses, mula ora bakal dieksekusi lan data sistem bakal bali menyang kahanan sadurunge. Aku stands for Isolasi . Properti iki tegese nalika transaksi dieksekusi, transaksi bebarengan ora kena pengaruhe. Properti iki intensif sumber daya, dadi, minangka aturan, sebagian dileksanakake, ngidini tingkat isolasi tartamtu sing ngatasi masalah isolasi tartamtu. Kita bakal ngrembug babagan iki kanthi luwih rinci ing pitakonan sabanjure. D singkatan saka Durability . Properti iki njamin yen pangguna nampa konfirmasi yen transaksi wis rampung, mula dheweke bisa yakin manawa owah-owahan kasebut ora bakal dibatalake amarga gagal. Yaiku, sampeyan bisa yakin manawa sawetara kegagalan sistem operasi ora bakal nindakake apa-apa kanggo data sampeyan yen sampeyan wis nampa konfirmasi yen transaksi sampeyan wis rampung kanthi sukses.82. Apa tingkat isolasi transaksi?
Kaya sing dakkandhakake sadurunge, nalika nerangake sifat ACID, mesthekake yen isolasi minangka proses intensif sumber daya. Patut, properti iki sebagian dileksanakake. Ana macem-macem tingkat isolasi: sing luwih dhuwur level kasebut, luwih abot impact ing kinerja. Sadurunge pindhah menyang tingkat isolasi transaksi, kita kudu nimbang macem-macem masalah sing kedadeyan amarga ora cukup isolasi transaksi :-
phantom maca : nalika panyuwunan sing padha, diarani luwih saka sapisan ing transaksi siji, ngasilake asil sing beda amarga sisipan dening transaksi liyane;
-
nonrepeatable reads : nalika panjalukan sing padha, diarani luwih saka sapisan ing transaksi siji, ngasilake data sing beda amarga owah-owahan (nganyari) lan pambusakan dening transaksi liyane;
-
maca reged : maca data sing durung rampung sing wis ditambahake utawa diowahi dening transaksi lan banjur digulung maneh;
-
nganyari ilang : nalika siji pamblokiran data bebarengan diganti dening transaksi beda, lan kabeh owah-owahan kajaba sing pungkasan ilang (padha karo kondisi lomba ing multithreading).
Tingkat isolasi | Phantom maca | Wacan sing ora bisa diulang | Reged maca | Nganyari ilang |
---|---|---|---|---|
SERIALIZED | + | + | + | + |
REPEATABLE diwaca | - | + | + | + |
MACA KOMITED | - | - | + | + |
MACA UNCOMMITTED | - | - | - | + |
NONE | - | - | - | - |
83. Apa bedane pratelan lan pratelan sing wis disiapake?
Ing kene kita wis owah kanthi cepet dadi fitur JDBC . Ing acara apa wae, ayo goleki apa tegese Pernyataan . Iki minangka obyek sing digunakake kanggo mbentuk pitakon SQL. JDBC nggunakake telung jinis: Statement , PreparedStatement , lan CallableStatement . Kita ora bakal nganggep CallableStatement dina iki. Nanging, kita ngomong babagan prabédan antarane Statement lan PreparedStatement .-
Pranyatan digunakake kanggo nglakokake pitakon SQL sing prasaja tanpa parameter input runtime. PrepareStatement bisa nampa parameter input nalika runtime.
-
Kanggo nyetel paramèter kanggo PreparedStatement , paramèter input ditulis minangka tandha pitakonan ing request, supaya padha bisa diganti dening sawetara nilai nggunakake macem-macem setters, kayata setDouble () , setFloat () , setInt () , setTime () ... Iki tegese sampeyan ora bakal nglebokake jinis data sing salah menyang panyuwunan.
-
PreparedStatement wis dikompilasi lan nggunakake caching, supaya bisa dieksekusi rada luwih cepet tinimbang panjaluk sing digawe saka obyek Pernyataan . Akibaté, statement SQL sing kerep dieksekusi digawe minangka obyek PreparedStatement kanggo nambah kinerja.
-
Pernyataan rentan kanggo injeksi SQL, nanging PreparedStatement nyegah.
GO TO FULL VERSION