Pambuka
Kaya sing wis dingerteni, Java minangka basa pemrograman berorientasi obyek. Sing, konsep dhasar, amarga kanggo ngomong dhasar dhasar iku kabeh obyek. Obyek diterangake nggunakake kelas.
Kelas, ing siji, duwe negara lan prilaku. Contone, akun bank bisa duwe negara ing wangun jumlah dhuwit ing akun lan duwe prilaku nambah lan ngurangi imbangan. Solah bawa ing basa Jawa ditindakake kanthi nggunakake metode. Cara njlèntrèhaké cara wis dikenalaké ing wiwitan lelampahan sinau basa Jawa. Contone, ing tutorial resmi saka Oracle: "
Nemtokake Metode ". Ana rong aspek penting ing kene:
- Saben cara duwe tandha. Tandha kasebut kalebu jeneng metode lan paramèter input;
- Cara kudu nemtokake jinis bali;
- Jinis bali ora bagean saka teken cara.
Maneh, iki minangka akibat saka kasunyatan manawa basa Jawa minangka basa sing diketik banget lan penyusun pengin ngerti luwih dhisik jinis apa sing digunakake ing ngendi wae. Maneh, kanggo nglindhungi kita saka kesalahan. Umumé, kabeh iku kanggo apik. Inggih, iki sepisan maneh instills ing kita budaya nangani data, misale jek kula. Dadi, kanggo metode jinis nilai kasebut ditemtokake. Lan kanggo ngasilake nilai sing padha saka metode kasebut, tembung kunci digunakake
return
.
Pernyataan bali tembung ing basa Jawa
Tembung kunci statement
return
nuduhake "pernyataan aliran kontrol" kaya sing dibahas ing tutorial oracle "
Pernyataan Aliran Kontrol ". Sampeyan uga bisa maca babagan cara ngasilake nilai ing tutorial resmi: "
Mbalikake Nilai saka Metode ". Compiler kasebut kanthi teliti ngawasi, kanthi kemampuan sing paling apik, yen nilai bali saka cara cocog karo jinis nilai bali sing ditemtokake dening metode kasebut.
Ayo nggunakake IDE Online saka tutorialspoint minangka conto . Ayo ndeleng conto asli:
public class HelloWorld {
public static void main(String []args) {
System.out.println("Hello World");
}
}
Minangka kita bisa ndeleng, cara dieksekusi ing kene
main
, yaiku titik entri menyang program kasebut. Baris kode dieksekusi saka ndhuwur nganti ngisor. Cara kita
main
ora bisa ngasilake nilai, yen ora, kita bakal nampa kesalahan: "
Error: Main method must return a value of type void
". Mulane, cara mung bakal output menyang layar. Ayo saiki mindhah panampa senar menyang cara sing kapisah kanggo nampa pesen:
public class HelloWorld {
public static void main(String []args) {
System.out.println(getHelloMessage());
}
public static String getHelloMessage() {
return "Hello World";
}
}
Minangka kita bisa ndeleng, nggunakake tembung kunci
return
kita nemtokake nilai bali, kang digunakake mengko ing cara
println
. Ing katrangan (definisi) cara kasebut,
getHelloMessage
kita nuduhake manawa bakal ngasilake kita
String
. Iki ngidini kompiler mriksa manawa tumindak metode kasebut cocog karo cara diumumake. Alamiah, jinis nilai bali sing ditemtokake ing definisi metode bisa luwih jembar tinimbang jinis nilai bali saka kode, i.e. Ingkang utama yaiku jinis-jinis kasebut dikurangi. Yen ora, kita bakal entuk kesalahan wektu kompilasi: "
error: incompatible types
". Ngomong-ngomong, pitakonan kasebut bisa uga langsung muncul: Kenapa
return
ditrapake kanggo operator kontrol aliran program? Nanging amarga bisa ngganggu aliran normal program saka ndhuwur menyang ngisor. Tuladhane:
public class HelloWorld {
public static void main(String []args){
if (args.length == 0) {
return;
}
for (String arg : args) {
System.out.println(arg);
}
}
}
Kaya sing bisa dideleng saka conto, kita ngganggu eksekusi metode kasebut
main
yen program java diarani tanpa paramèter. Penting kanggo elinga yen sampeyan
return
duwe kode kasebut, mula ora bisa diakses. Lan kompiler pinter kita bakal sok dong mirsani iki lan ora bakal ngidini sampeyan mbukak program kasebut. Contone, kode iki ora bakal dikompilasi:
public static void main(String []args) {
System.out.println("1");
return;
System.out.println("2");
}
Ana hack reged kanggo ngubengi iki. Contone, kanggo tujuan debugging utawa kanggo sawetara alasan liyane. Kode ing ndhuwur bisa didandani kanthi mbungkus
return
ing
if
blok:
if (2==2) {
return;
}
Pernyataan bali ing penanganan kesalahan
Ana siji kahanan sing angel banget - kita bisa nggunakake
return
bebarengan karo penanganan kesalahan. Aku arep ngomong langsung yen nggunakake
return
ing
catch
blok iku banget, banget ala, supaya sampeyan kudu nyingkiri. Nanging kita kudu conto, ta? Punika piyambakipun:
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);
}
}
}
Sepisanan, misale jek sing 2 kudu bali, amarga
finally
tansah kaleksanan. Nanging ora, nilai bakal dadi 1, lan owah-owahan menyang variabel ing
finally
bakal diabaikan. Menapa malih, yen
value
ngemot obyek lan kita
finally
ngandika
value = null
, banjur
catch
isih bakal bali referensi kanggo obyek, ora
null
. Nanging saka pemblokiran
finally
operator
return
bakal bisa digunakake kanthi bener. Kolega bakal jelas ora matur nuwun kanggo hadiah kasebut.
batal.kelas
Lan pungkasane. Sampeyan bisa nulis konstruksi aneh kaya
void.class
. Kayane, kenapa lan apa gunane? Nyatane, ing macem-macem kerangka lan kasus sing angel digunakake
Java Reflection API , iki bisa uga dibutuhake. Contone, sampeyan bisa mriksa jinis apa cara ngasilake:
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);
}
}
}
Iki bisa migunani ing kerangka uji coba yen perlu ngganti kode metode sing nyata. Nanging kanggo nindakake iki, sampeyan kudu ngerti carane cara iki tumindak (i. e., jinis apa sing bakal bali). Ana cara liya kanggo ngetrapake metode kasebut
main
saka kode ing ndhuwur:
public static void main (String[] args) {
for (Method method : HelloWorld.class.getDeclaredMethods()) {
System.out.println(method.getReturnType() == Void.TYPE);
}
}
A diskusi rodo menarik saka prabédan antarane wong-wong mau bisa maca ing stackoverflow:
Apa prabédan antarane java.lang.Void lan roso sepi? #Viacheslav
GO TO FULL VERSION