17. Meýletin we üstünlikli ulanmagyň mysallaryny getiriň
Akymdan geçýän belli bir gymmatlyklarymyz bar diýsek, netijede birneme islege bagly bolarys:Optional<String> stringOptional = Stream.of("a", "ab", "abc", "abcd")
.filter(str -> str.length() >= 3)
.findAny();
Garaşylyşy ýaly, bu islege görä bahany almaly . Diňe get () ulanmak erbet ýol:
String result = stringOptional.get();
Thisöne bu usul, islege görä bahany alyp , bize gaýtaryp bermelimi? Bu, elbetde, dogry, ýöne manysy bar bolsa. Dogrusy, akymdaky bahalar başgaça bolan bolsa we ahyrynda boş islege eýe bolsak, get () usuly bilen ondan baha aljak bolanymyzda aşakdakylar atylar: Haýsy gowy däl. Bu ýagdaýda aşakdaky gurluşyklary ulanmak has gowudyr:
-
String result = null; if (stringOptional.isPresent()) { stringOptional.get(); }
Bu ýagdaýda, elementiň islege bagly däldigini barlaýarys . Notok bolsa, emele gelen setiriň köne gymmaty bar.
-
String result = stringOptional.orElse("default value");
Bu ýagdaýda, boş islege bagly bolan ýagdaýynda berlen setire beriljek käbir başlangyç bahany kesgitleýäris .
-
String result = stringOptional.orElseThrow(() -> new CustomException());
Bu ýagdaýda, islege görä boş bolanda kadadan çykma edýäris .
18. Esasy usuly gutarnykly diýip yglan edip bolarmy?
Hawa, elbetde, esasy () usuly gutarnykly diýip yglan etmegimize hiç zat päsgel bermeýär . Düzediji ýalňyşlyk döretmez. Finalöne ýadymyzdan çykarmaly däldiris, ony gutarnykly diýip yglan edeniňden soň islendik usul iň soňky usul bolar - ýatdan çykarylmaz. Şeýle-de bolsa, esasy kim kesgitlär ???19. Bir paket / synpy iki gezek import edip bolarmy? Netijeleri näme bolup biler?
Hawa, edip bilersiň. Netijeler? Intelijj IDEA-nyň çal reňkde görkezjek birnäçe gereksiz importy bolar. ulanylmadyk.20. Kasting näme? “ClassCastException” haçan alyp bileris?
Döküm ýa-da guýma görnüşi , bir maglumat görnüşini başga maglumat görnüşine öwürmek prosesi: el bilen (aç-açan guýma) ýa-da awtomatiki usulda (aç-açan kasting). Awtomatiki öwrüliş düzüji tarapyndan, el bilen öwrüliş bolsa dörediji tarapyndan amala aşyrylýar. Ilkinjiler we synplar üçin kasting görnüşi birneme tapawutlanýar, şonuň üçin olary aýratyn göz öňünde tutarys. Ilkinji görnüşler Ilkinji görnüşleriň awtomatiki guýulmagynyň mysaly :int value = 17;
double convertedValue = value;
Görşüňiz ýaly, bu ýerde = belgiden başga goşmaça manipulýasiýa gerek däl. Ilkinji görnüşleri elde guýmagyň mysaly :
double value = 17.89;
int convertedValue = (int)value;
Bu ýagdaýda, (int) ulanyp ýerine ýetirilýän el bilen guýulýan synlary synlap bileris , şonda verguldan soň bölegi taşlanar we öwrülen bahanyň bahasy bolar - 17. Bu makalada başlangyç görnüşleri guýmak barada has giňişleýin okaň . Bolýar, indi obýektlere geçeliň. Salgy görnüşleri Salgy görnüşleri üçin nesil synplary üçin ene-atalar synplaryna awtomatiki guýmak mümkindir. Oňa polimorfizm hem diýilýär . Pişik synpyndan miras alýan arslan synpymyz bar diýeliň . Bu ýagdaýda awtomatiki öwrülişik şeýle bolar:
Cat cat = new Lion();
Aöne aç-açan rol oýnamak bilen hemme zat birneme çylşyrymly, sebäbi primitiwler ýaly artykmaçlygy kesmek üçin funksiýa ýok. Diňe formany aç-açan öwürmek:
Lion lion= (Lion)new Cat();
Erroralňyşlyk alarsyňyz: Aslynda, Pişik synpynda bolmadyk arslan nesli synpyna usullary goşup bilersiňiz, soň bolsa olara jaň edip bilersiňiz, sebäbi obýektiňiziň görnüşi Arslan bolar . Dogrusy, munuň logikasy ýok. Şonuň üçin görnüşi daraltmak diňe asyl obýekt “Arslan” görnüşinde bolup , soňra ene-atalar synpyna atylanda mümkindir:
Lion lion = new Lion();
Cat cat = lion;
Lion newLion = (Lion)cat;
Mundan başga-da, has ygtybarlylygy üçin, mysal üçinOf konstruksiýasyny ulanyp, obýektler üçin daralýan guýma maslahat berilýär :
if (cat instanceof Lion) {
newLion = (Lion)new Cat();
}
Bu makalada salgylanma görnüşi barada has giňişleýin okaň .
21. Näme üçin häzirki zaman çarçuwalary esasan diňe barlanmadyk kadadan çykmalary ulanýarlar?
Meniň pikirimçe, bularyň hemmesi barlanylan kadadan çykmalar henizem hemme ýerde gaýtalanýan, ýöne hemme halatlarda zerur däl spagetti kody. Şeýle ýagdaýlarda, muny ýene bir gezek işläp düzüjileriň egnine geçirmezlik üçin çarçuwanyň içinde gaýtadan işlemek has aňsat. Hawa, elbetde, adatdan daşary ýagdaý ýüze çykyp biler, ýöne şol bir barlanmadyk kadadan çykmalar has amatly usulda ulanylyp bilner, synanyşykda gaýtadan işlemek bilen gyzyklanman we usullardan has köp geçmezden. Diňe kadadan çykmaHandler -de käbir HTTP jogabyna öwürmek ýeterlikdir .22. Statiki import näme?
Statik maglumatlary (usullar, üýtgeýjiler) ulananyňyzda obýektiň özüni döredip bilmersiňiz, ýöne synpyň ady bilen edip bilersiňiz, hatda bu ýagdaýda-da synpa baglanyşyk gerek. Hemme zat ýönekeý: yzygiderli import arkaly goşulýar. Classöne synpyň adyny ýazman, häzirki synpyň statiki usuly ýaly statik usuly ulanjak bolsak näme etmeli? Bu statiki import bilen mümkindir! Bu ýagdaýda statiki import we şol usula baglanyşyk ýazmalydyrys . Munuň ýaly, meselem, kosinanyň bahasyny hasaplamak üçin Matematika synpynyň statiki usuly:import static java.lang.Math.cos;
Netijede, synpyň adyny görkezmezden usuly ulanyp bileris:
double result = cos(60);
Şeýle hem, statiki importy ulanyp, synpyň ähli statiki usullaryny birbada ýükläp bileris:
import static java.lang.Math.*;
23. HashCode () bilen deň () usullaryň arasynda nähili baglanyşyk bar?
Oracle- yň pikiriçe , düzgün: Iki obýekt deň bolsa (ýagny deň () usuly dogry gaýdyp gelse ), şol bir hash kody bolmaly. Şol bir wagtyň özünde, iki dürli obýektiň bir hash kody bolup biljekdigini ýatdan çykarmaň. Deňdir () we hashCode () -iň elmydama jübüt görnüşde ýazylýandygyna düşünmek üçin aşakdaky ýagdaýlara serediň:-
Iki usul hem ýok.
Bu ýagdaýda birmeňzeş içerki ýagdaýy bolan iki dürli obýekt deňdir () - dogry , hashCode () ikisi hem şol bir belgini yzyna getirer.
Görnüşi ýaly, hemme zat gowy, sebäbi düzgün ýerine ýetirilýär.
-
Iki usul hem ýok.
Bu ýagdaýda, içerki ýagdaýlary bolan iki dürli obýekt () deň bolanda ýalňyş gaýdyp geler , sebäbi deňeşdirme == operatoryň üsti bilen amala aşyrylýar .
HashCode () usuly, ýadyň ýerleşýän salgysynyň öwrülen bahasyny öndürýänligi sebäpli dürli bahalary (iň ähtimal) yzyna getirer. Emma şol bir obýekt üçin bu baha deň bolar, edil bu ýagdaýda deňdir () diňe salgylanmalar şol bir obýekte görkezilende hakyky bolar.
Görnüşi ýaly, bu ýagdaýda hemme zat gowy we düzgün ýerine ýetirilýär.
-
Artykmaç hashCode () däl-de, () deňdir .
Bu ýagdaýda birmeňzeş içerki ýagdaýy bolan iki dürli obýekt üçin deň () hakykata gaýdyp geler we hashCode () dürli bahalary yzyna getirer.
Bu düzgüniň bozulmagy, şonuň üçin muny etmek maslahat berilmeýär.
-
deňdir () ýazylmady , hashCode () ýok edildi .
Bu ýagdaýda birmeňzeş içerki ýagdaýy bolan iki dürli obýekt üçin deň () ýalan , hashCode () şol bir bahalary yzyna getirer .
Düzgüniň bozulmagy bar, şonuň üçin çemeleşme nädogry.
24. BufferedInputStream we BufferedOutputStream sapaklary haçan ulanylýar?
“InputStream” käbir çeşmelerden maglumatlary byte-byte okamak üçin, “ OutputStream” bolsa baýt-baýt maglumatlary ýazmak üçin ulanylýar. Emma baýt-baýt amallary gaty amatsyz bolup biler we goşmaça işlemegi talap edip biler (tekstleri adaty okamak / ýazmak üçin). Aslynda, şeýle baýt ýazgylaryny ýönekeýleşdirmek üçin BufferedOutputStream girizildi we okamak üçin BufferedInputStream hödürlendi . Bu synplar maglumatlary baýt bilen däl-de, eýsem ähli maglumatlar paketleri (massiwler) bilen işlemäge mümkinçilik berýän maglumatlary ýygnaýan buferlerden başga zat däl. Döredilende, BufferedInputStream konstruktoryna maglumatlar okalýan InputStream görnüşiniň mysalyny alýar:BufferedInputStream bufferedInputStream = new BufferedInputStream(System.in);
byte[] arr = new byte[100];
bufferedInputStream.read(arr);
System.in , konsoldan maglumatlary okaýan GirişStream obýektidir . Thisagny, bu BufferedInputStream obýektini ulanyp, InputStream- den maglumatlary geçen massiwine ýazyp okap bileris . Bu, “InputStream” synpynyň bir görnüşi . Bu mysaldan gelýän massiw, BufferedInputStream- den maglumat alýan massiwdir . Bu bolsa öz gezeginde “InputStream” -den maglumatlary 2048 baýt ululykda başga bir massiw bilen okaýar. “BufferedOutputStream” üçin hem edil şonuň ýaly : “OutputStream” görnüşiniň mysaly konstruktora geçmeli , bu maglumatlary tutuş massiwde ýazarys:
byte[] arr = "Hello world!!!".getBytes();
BufferedOutputStream bufferedInputStream = new BufferedOutputStream(System.out);
bufferedInputStream.write(arr);
bufferedInputStream.flush();
System.out , konsola maglumat ýazýan OutputStream obýektidir . Flush () usuly BufferedOutputStream- den OutputStream- a maglumat iberýär we bu işde BufferedOutputStream- i ýuwýar . Bu usul bolmasa hiç zat ýazylmaz. Öňki mysala meňzeş: arr , BufferedOutputStream-a maglumatlaryň ýazylan massiwidir . Şol ýerden, OutputStream-a 512 baýt ululykdaky başga bir massiwde ýazylýar . Makalada bu iki synp hakda has giňişleýin okaň .
25. java.util.Collection we java.util.Collection synplarynyň arasynda näme tapawut bar?
Kolleksiýa, ýygnamak iýerarhiýasynyň başlygy bolan interfeýsdir. Obýektleriň ähli toparlaryny döretmäge, saklamaga we üýtgetmäge mümkinçilik berýän sapaklar bilen tanyşdyrýar. Munuň üçin köp usullar bar, goşmak () , aýyrmak () , öz içine () we başgalar. Kolleksiýa synpynyň esasy interfeýsleri :-
Set , tertipsiz üýtgeşik (gaýtalanmaýan) elementleri öz içine alýan toplumy suratlandyrýan interfeýsdir.
-
Sanaw, obýektleriň tertipli yzygiderliligini saklaýan maglumat gurluşyny beýan edýän interfeýsdir. Bu obýektler öz indeksini (sanyny) alýarlar, ulanyp, olar bilen täsirleşip bilersiňiz: alyň, pozuň, üýtgediň, gaýtadan ýazyň.
-
Nobat , düzgüne eýerýän nobat görnüşinde elementleri saklaýan maglumat gurluşyny suratlandyrýan interfeýsdir - FIFO - First In First Out .
-
addAll (Toplama <? super T> ýygyndy, T ... element) - T görnüşiniň geçen elementlerini kolleksiýa goşýar .
-
göçüriň (Sanaw <? super T> dest, Sanaw <? T> src uzadýar) - src sanawyndan ähli elementleri sanawdaky sanawyna göçüriň .
-
boş sanaw () - boş sanawy görkezýär.
-
max (Toplama <? T> kolleksiýany giňeldýär, Deňeşdiriji <? super T> comp) - Berlen kolleksiýanyň iň ýokary elementini görkezilen deňeşdiriji tarapyndan görkezilen tertibe laýyklykda yzyna berýär.
-
unmodifiableList (Sanaw <? T> sanawyny uzadýar) - geçen sanawyň üýtgewsiz görnüşini görkezýär.
GO TO FULL VERSION