Giriş
Bilşimiz ýaly, Java obýekte gönükdirilen programmirleme dilidir. .Agny, esasy düşünje, sebäbi esaslaryň esasyny aýtmak hemme zadyň bir zatdygydyr. Obýektler sapaklaryň kömegi bilen beýan edilýär.
Sapaklar, öz gezeginde, ýagdaýy we özüni alyp barşyna eýe. Mysal üçin, bank hasabyndaky hasapdaky pul mukdary görnüşinde döwlet bolup biler we balansy köpeltmek we peseltmek häsiýetine eýe bolup biler. Java-da özüni alyp barş usullary ulanylýar. Usullary nädip suratlandyrmaly, Java öwreniş syýahatyňyzyň başynda girizilýär. Mysal üçin, Oracle-dan resmi sapakda: “
Usullary kesgitlemek ”. Bu ýerde iki möhüm tarap bar:
- Her usulyň goly bar. Gol usulyň adyndan we giriş parametrlerinden durýar;
- Usullar gaýdyp geliş görnüşini görkezmeli;
- Yza gaýtarma görnüşi usul golunyň bir bölegi däl.
Javaene-de bu, Java-yň güýçli ýazylan dildigini we düzüjiniň haýsy görnüşleriň mümkin boldugyça ulanylýandygyna öňünden düşünmek isleýär. Againene-de ýalňyşlyklardan goramak üçin. Umuman aýdanyňda, hemme zat peýdaly. Dogrusy, bu bize ýene bir gezek maglumatlary dolandyrmak medeniýetini ornaşdyrýar, meniň pikirimçe. Şeýlelik bilen, usullar üçin bahanyň görnüşi görkezilýär. Şol bahany usullardan yzyna gaýtarmak üçin açar söz ulanylýar
return
.
Java-da açar söz
Beýannama açar söz,
return
"Dolandyryş akymynyň beýany" oracle gollanmasynda ara alnyp maslahatlaşylyşy ýaly "
gözegçilik akymynyň jümlelerini " aňladýar.
Şeýle hem resmi sapakda “ Gymmatlygy usuldan yzyna gaýtarmak ” barada resmi sapakda okap bilersiňiz . Düzüji, usuldan gaýtarylan bahanyň usul bilen görkezilen yzyna gaýtaryş bahasynyň görnüşine laýyk gelýändigine mümkin boldugyça gözegçilik edýär. Mysal üçin, okuw nokadyndan
onlaýn IDE ulanalyň. Asyl mysala seredeliň:
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello World");
}
}
Görşümiz ýaly, bu ýerde
main
programma giriş nokady bolan bir usul ýerine ýetirilýär. Kod setirleri ýokardan aşak ýerine ýetirilýär. Usulymyz
main
bahalary yzyna gaýtaryp bilmez, ýogsam ýalňyşlyk alarys: "
Error: Main method must return a value of type void
". Şonuň üçin bu usul diňe ekrana çykar. Indi setiriň kabul edilmegini habary almak üçin aýratyn usula geçireliň:
public class HelloWorld {
public static void main(String []args) {
System.out.println(getHelloMessage());
}
public static String getHelloMessage() {
return "Hello World";
}
}
Görşümiz ýaly, açar söz ulanyp
return
, bu usuldan soň ulanan gaýtaryş bahasyny kesgitledik
println
. Usulyň beýanynda (kesgitlemesinde),
getHelloMessage
bize gaýdyp geljekdigini görkezdik
String
. Bu düzüjä usulyň hereketleriniň yglan edilişine laýyk gelýändigini barlamaga mümkinçilik berýär. Elbetde, usul kesgitlemesinde görkezilen yzyna gaýtaryş bahasynyň görnüşi, koddan yzyna gaýtarylan bahanyň görnüşinden has giň bolup biler. Esasy zat, görnüşleriň biri-birine azalmagydyr. Otherwiseogsam, ýygnamak wagty ýalňyşlygy alarys: "
error: incompatible types
". Theeri gelende aýtsak, derrew bir sorag ýüze çykdy: Näme üçin
return
programma akymyna gözegçilik operatorlaryna degişlidir? Emma programmanyň ýokardan aşaklygyna adaty akymyny bozup biljekdigi sebäpli. Mysal üçin:
public class HelloWorld {
public static void main(String []args){
if (args.length == 0) {
return;
}
for (String arg : args) {
System.out.println(arg);
}
}
}
Mysaldan görnüşi ýaly,
main
java programmamyz parametrlersiz çagyrylsa, usulyň ýerine ýetirilmegini kesýäris.
return
Koduňyz bar bolsa, elýeterli bolmaýandygyny ýatdan çykarmaly däldiris . Akylly düzüjimiz muny görer we size şeýle programmany işletmäge ýol bermez. Mysal üçin, bu kod düzülmez:
public static void main(String []args) {
System.out.println("1");
return;
System.out.println("2");
}
Bu meseläni çözmek üçin hapa hack bar. Mysal üçin, düzediş maksatlary üçin ýa-da başga bir sebäp bilen. Aboveokardaky kody blok
return
bilen örtüp düzedip bolar :
if
if (2==2) {
return;
}
Erroralňyşlyk bilen işlemekde beýannama
Örän kyn bir ýagdaý bar - ony
return
ýalňyşlyk bilen işlemek bilen bilelikde ulanyp bileris.
return
Derrew bir blokda ulanmak
catch
gaty erbet görnüş, şonuň üçin bu zatlardan gaça durmaly diýesim gelýär . Emma bize mysal gerek, şeýlemi? Ine:
public class HelloWorld {
public static void main(String []args) {
System.out.println("Value is: " + getIntValue());
}
public static int getIntValue() {
int value = 1;
try {
System.out.println("Something terrible happens");
throw new Exception();
} catch (Exception e) {
System.out.println("Catched value: " + value);
return value;
} finally {
value++;
System.out.println("New value: " + value);
}
}
}
Bir seretseň, 2-i yzyna gaýtarmaly ýaly, sebäbi
finally
ol hemişe ýerine ýetirilýär. Nook, bahasy 1 bolar we üýtgeýäniň üýtgemegine
finally
ähmiýet berilmez. Mundan başga-da, eger
value
bir obýekt bar bolsa we biz
finally
diýsek
value = null
, onda ol
catch
entek obýekte salgylanmany yzyna gaýtaryp berer
null
. Emma blokdan
finally
operator
return
dogry işlärdi. Kärdeşler şeýle sowgat üçin size minnetdarlyk bildirmezler.
void.class
Netijede. Aaly geň gurluşyk ýazyp bilersiňiz
void.class
. Görnüşi ýaly, näme üçin we näme? Aslynda,
Java Reflection API ulanylýan dürli çarçuwalarda we kyn ýagdaýlarda bu gaty zerur bolup biler. Mysal üçin, usulyň haýsy görnüşine gaýdyp gelýändigini barlap bilersiňiz:
import java.lang.reflect.Method;
public class HelloWorld {
public void getVoidValue() {
}
public static void main(String[] args) {
for (Method method : HelloWorld.class.getDeclaredMethods()) {
System.out.println(method.getReturnType() == void.class);
}
}
}
Bu usullaryň hakyky koduny çalyşmak zerur bolan synag çarçuwalarynda peýdaly bolup biler. Thisöne munuň üçin bu usulyň özüni alyp barşyna düşünmeli (ýagny, haýsy görnüşlere gaýdyp gelýändigi).
main
Usuly ýokardaky koddan durmuşa geçirmegiň ikinji usuly bar :
public static void main (String[] args) {
for (Method method : HelloWorld.class.getDeclaredMethods()) {
System.out.println(method.getReturnType() == Void.TYPE);
}
}
Olaryň arasyndaky tapawut barada has gyzykly çekişmäni stackoverflow-da okap bilersiňiz:
java.lang.Void bilen boşlugyň arasynda näme tapawut bar? # Wiaçeslaw
GO TO FULL VERSION