71. Apa mengkono yen kita ora ngalahake toString () cara kanggo Enum?
Ayo kita duwe enum ing ngisor iki :public enum Role {
STUDENT,
TEACHER,
DIRECTOR,
SECURITY_GUARD;
}
Ayo nampilake siswa ing console kanthi nelpon toString() ing dheweke :
System.out.println(Role.STUDENT.toString());
Asil ing konsol:
72. Iku bisa kanggo nemtokake konstruktor nang Enum?
Iya tenanan. Liwat konstruktor, nilai variabel enum internal disetel. Minangka conto, ayo nambah rong kolom menyang enum sadurunge - ageFrom lan ageTo - kanggo nuduhake kisaran 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 pangembang Jawa sing paling umum. Ayo dadi miwiti karo kasunyatan sing nalika kita mbandhingaké nilai prasaja ( int , char , pindho ...), kita nindakaken nggunakake == , amarga variabel ngemot nilai tartamtu lan kita bisa mbandhingaké. Lan variabel primitif ora obyek lengkap - padha ora oleh warisan saka Obyek lan ora padha () cara . Nalika kita pirembagan bab mbandhingaké variabel sing nuduhake obyek, == mung bakal mbandhingaké Nilai saka referensi - apa padha deleng obyek padha utawa ora. Lan sanajan siji obyek identik liyane, comparison liwat == bakal menehi asil negatif ( palsu ), amarga iki obyek beda. Nalika sampeyan ngerti, cara sing padha () digunakake kanggo mbandhingake variabel referensi . Iki minangka salah sawijining metode standar kelas Obyek , sing dibutuhake kanggo mbandhingake obyek kanthi lengkap. Nanging kudu njlentrehake langsung: supaya cara iki bisa digunakake kanthi bener, kudu didefinisikan maneh kanthi nulis persis carane obyek saka kelas iki kudu dibandhingake. Kajaba sampeyan ngilangi metode kasebut, kanthi standar bakal mbandhingake obyek kanthi == . Ing IntelliJ IDEA , sampeyan bisa ngilangi kanthi otomatis (nggunakake alat IDEA) -> alt + insert , ing jendhela sing katon, pilih padha () lan hashCode () -> pilih lapangan kelas sing kudu melu -> lan voila, implementasi otomatis saka cara wis rampung. Iki minangka conto saka cara sing digawe kanthi otomatis kanggo kelas Cat sing prasaja 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);
}
Yen kita pirembagan bab prabédan antarane == lan witjaksono kanggo enums , ana ora akeh. Sawise kabeh, enum nyimpen konstanta, lan sanajan mbandhingake nilai sing padha nggunakake == , kita bakal nampa bener , amarga referensi bakal tansah kanggo obyek sing padha. Inggih, nalika nggunakake witjaksono, kita uga bakal bisa metu fungsi bener, utamané yen sampeyan pindhah menyang awak saka cara witjaksono kanggo enum , sampeyan bakal weruh sing ing kelas Enum implementasine saka cara punika: Yaiku, nang - comparison lawas apik dening referensi! Kanggo ngringkes: kanggo enum , comparison loro liwat == lan padha bener.
74. Apa cara ordinal () ing Enum?
Nalika nelpon cara int ordinal () ing unsur enum , kita bakal njaluk nomer ordinal saka nul Nilai iki ing seri umum enumerations. Ayo nggunakake metode iki ing siji unsur saka enum sadurunge sing dibahas - Peran :System.out.println(Role.DIRECTOR.ordinal());
Dadi, konsol bakal nampilake:
75. Apa bisa nggunakake Enum karo TreeSet utawa TreeMap ing Jawa?
Panggunaan jinis enum ing TreeSet lan TreeMap bisa ditampa. Lan kita bisa nulis: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 () ing Enum?
Kaya sing wis kasebut sadurunge, ordinal () ngasilake nomer ordinal saka nilai ing dhaptar enumerasi umum. Uga, ing analisis saka pitakonan sadurungé, sampeyan weruh sing unsur enumerations, sapisan, contone, ing TreeSet (diurutake pesawat) njupuk urutan kang padha diumumake ing enum . Lan kita ngerti, TreeSet lan TreeMap ngurutake unsur kanthi nelpon cara compareTo () saka antarmuka Comparable . Saka iki kita bisa nganggep sing kelas Enum ngleksanakake antarmuka Comparable , ngleksanakake ing compareTo () cara , ing kang ordinal () digunakake kanggo nyetel urutan urutan. Duwe mlebu kelas Enum , kita ndeleng konfirmasi iki: Lan awak saka cara dhewe: Cara ordinal () ora disebut kene. Nanging, variabel ordinal digunakake - nomer ordinal saka unsur ing enumerasi. Cara ordinal () dhewe ora luwih saka getter kanggo variabel ordinal .77. Tulisen conto EnumM
Ing pitakonan sing dibahas ing ndhuwur, aku wis menehi conto enum lan aku ora weruh titik kanggo duplikat kode (contone, pitakonan nomer 72 babagan konstruktor ing enum).78. Apa bisa nggunakake Enum ing kasus ngalih?
Iku bisa lan perlu! Nggoleki praktikku, aku nyathet yen salah sawijining papan sing paling umum kanggo nggunakake enum yaiku konstruksi logis kaya switch . Ing kasus iki, sampeyan bisa nyedhiyani kabeh kemungkinan variasi kasus , lan sawise nulis logika kanggo kabeh nilai enum - lan nggunakake operator standar malah ora perlu! Sawise kabeh, yen sampeyan nggunakake String utawa angka numerik, contone, saka jinis int , sampeyan bisa nampa nilai sing ora dikarepke, kang siji mokal nggunakake enum . Kaya apa saklar kanggo conto sing dibahas sadurunge:public void doSomething(Role role) {
switch (role) {
case STUDENT:
// некая логика для STUDENT
break;
case TEACHER:
// некая логика для TEACHER
break;
case DIRECTOR:
// некая логика для DIRECTOR
break;
case SECURITY_GUARD:
// некая логика для SECURITY_GUARD
break;
}
}
79. Kepiye carane entuk kabeh nilai sing kasedhiya ing conto Enum?
Yen sampeyan perlu kanggo njaluk kabeh kedadean saka enum, ana Nilai () cara sing ngasilake array saka kabeh nilai kasedhiya saka enum tartamtu ing urutan alam (ing urutan padha kasebut ing enum ). Tuladha:Role[] roles = Role.values();
for (Role role : roles) {
System.out.println(role);
}
Konsol bakal nampilake output ing ngisor iki:
Stream API
80. Apa sing diarani Alur ing Jawa?
Java Stream minangka cara sing relatif anyar kanggo sesambungan karo aliran data, sing ngidini sampeyan ngolah data gedhe kanthi luwih trep lan kompak, uga ngolah data paralel ing antarane sawetara benang, sing bisa nambah kinerja nalika nggunakake. fungsi. Topik iki ora bisa dibahas luwih jero kanthi ringkes, mula aku bakal ninggalake link menyang artikel sing bisa mbantu sampeyan nyilem topik iki.81. Apa sifat utama transaksi?
Topik kasebut diarani Stream API, nanging pitakonan babagan transaksi kasebut. Hmm... Kaping pisanan, ayo ngerteni apa transaksi kasebut. Transaksi minangka klompok operasi database sekuensial sing nggambarake unit logis kanggo nggarap data. A transaksi bisa rampung salah siji tanggung lan kasil, ngramut integritas data lan independen saka transaksi liyane mlaku ing podo karo, utawa ora bisa rampung ing kabeh, kang cilik ora duwe efek. Dadi, transaksi duwe papat sifat utama, sing diarani ACID . Ayo kang katon ing carane saben huruf singkatan iki stands for: A - Atomicity - atomicity - property iki njamin sing ora transaksi bakal sebagian direkam ing sistem. Kabeh sub-operasi bakal ditindakake, utawa ora ana sing bakal ditindakake ( kabeh utawa ora ana ). C - Konsistensi - konsistensi minangka properti sing njamin saben transaksi sing sukses mung ngrekam asil sing bener. Yaiku, iki minangka jaminan yen ana transaksi sing sukses, kabeh aturan lan watesan sing ditindakake sistem ing data tartamtu bakal ditindakake, yen ora, transaksi kasebut ora bakal rampung lan data ing sistem bakal bali menyang sadurunge. negara. I - Isolasi - isolasi minangka properti sing nyatakake yen sajrone eksekusi transaksi, transaksi paralel ora kena pengaruhe. Properti iki intensif sumber daya, mula biasane dileksanakake sebagian kanthi ngidini tingkat insulasi tartamtu sing ngrampungake masalah insulasi tartamtu. Kita bakal ngrembug babagan iki kanthi luwih rinci ing pitakonan sabanjure. D - Kekiatan - properti iki njamin yen pangguna wis nampa konfirmasi saka sistem sing transaksi wis rampung, kang bisa manawa owah-owahan sing wis digawe ora bakal dibatalake amarga sawetara Gagal. Tegese, sampeyan bisa yakin manawa sawetara jinis kegagalan sistem operasi ora bakal nindakake apa-apa kanggo data sampeyan yen sampeyan wis nampa konfirmasi yen wis rampung transaksi sampeyan.82. Apa tingkat isolasi transaksi?
Kaya sing dakkandhakake sadurunge, nyedhiyakake isolasi ACID minangka proses intensif sumber daya. Mulane, properti iki sebagian wareg. Ana macem-macem tingkat isolasi, lan sing luwih dhuwur level kasebut, luwih gedhe pengaruhe ing produktivitas. Sadurunge pindhah menyang tingkat isolasi transaksi, kita kudu ndeleng macem-macem masalah isolasi transaksi sing ora cukup :-
maca phantom - nalika sampel sing padha (query sing padha) bola-bali diarani ing transaksi sing padha, data sing ditampa beda-beda, sing kedadeyan amarga sisipan data dening transaksi liyane;
-
maca non-baleni - nalika sampel padha (query padha) wis bola-bali disebut ing transaksi padha, data ditampa beda-beda, kang dumadi amarga owah-owahan (nganyari) lan pambusakan data dening transaksi liyane;
-
maca reged - proses maca data sing ditambahake utawa diganti dening transaksi sing sabanjure ora dikonfirmasi (digulung maneh), yaiku. maca data sing ora bener;
-
nganyari ilang - nalika transaksi beda ngganti data sing padha ing wektu sing padha, kabeh owah-owahan kajaba sing pungkasan bakal ilang (kaya masalah "kondisi balapan" ing lingkungan multi-threaded).
Tingkat isolasi | Phantom maca | Wacan sing ora bola-bali | Wacan reged | Nganyari ilang |
---|---|---|---|---|
SERIALIZED | + | + | + | + |
REPEATABLE diwaca | - | + | + | + |
MACA KOMITED | - | - | + | + |
MACA UNCOMMITTED | - | - | - | + |
NONE | - | - | - | - |
83. Apa bedane Statement lan PreparedStatement?
Lan ing kene ora ana transisi sing lancar kanggo fitur teknologi JDBC . Dadi, pisanan, ayo ngerteni apa sejatine Pernyataan kasebut . Iki minangka obyek sing digunakake kanggo ngasilake pitakon SQL. JDBC nggunakake telung jinis - Statement , PreparedStatement lan CallableStatement . Kita ora bakal ndeleng CallableStatement dina iki: ayo ngomong babagan prabédan antarane Statement lan PreparedStatement .-
Pranyatan digunakake kanggo nglakokake pitakon SQL sing prasaja tanpa parameter sing dilebokake kanthi dinamis. PrepareStatement digunakake kanthi kemampuan kanggo nglebokake paramèter input kanthi dinamis.
-
Kanggo nyetel paramèter ing PreparedStatement, paramèter input ing panyuwunan ditulis minangka tandha pitakonan, supaya nilai banjur bisa dilebokake tinimbang nggunakake macem-macem setters, kayata setDouble () , setFloat () , setInt () , setTime () ... . Akibaté, sampeyan ora bakal nglebokake jinis data sing salah menyang pitakon sampeyan.
-
PreparedStatement wis "precompiled" lan nggunakake caching, supaya eksekusi bisa rada luwih cepet tinimbang takon saka obyek Statement . Akibaté, pitakon SQL sing kerep dieksekusi ditulis minangka obyek PreparedStatement kanggo nambah kinerja .
-
Statement rentan kanggo injeksi SQL, nalika PreparedStatement nyegah. Waca liyane babagan ngilangi injeksi SQL lan praktik paling apik liyane babagan keamanan Java ing artikel iki .
GO TO FULL VERSION