CodeGym /Blog Jawa /Acak /Tembung bali Jawa
John Squirrels
tingkat
San Francisco

Tembung bali Jawa

Diterbitake ing grup
Kaya sing wis dingerteni, basa Jawa minangka basa pemrograman berorientasi obyek. Ing tembung liya, konsep dhasar, yaiku pondasi dhasar, yaiku kabeh minangka obyek. Obyek diterangake nggunakake kelas. Kelas, ing siji, nemtokake negara lan prilaku. Contone, akun bank bisa uga duwe negara ing wangun jumlah dhuwit ing akun lan duwe prilaku sing nambah lan ngurangi imbangan akun. Ing Jawa, tindak tanduk ditindakake kanthi cara. Sinau carane nemtokake metode diwiwiti ing wiwitan pasinaon basa Jawa. Contone, ing tutorial resmi Oracle, ing judhul " Metode Nemtokake ". Ana rong perkara penting sing kudu digatekake ing kene:
  • Saben cara duwe tandha. Tandha kasebut kalebu jeneng metode lan paramèter input.
  • Jinis bali kudu ditemtokake kanggo metode. Sampeyan ngumumake jinis bali metode ing deklarasi metode kasebut.
Jinis bali ora bagean saka teken cara. Maneh, iki minangka akibat saka kasunyatan manawa basa Jawa minangka basa sing diketik banget lan penyusun kepengin ngerti jinis apa sing digunakake lan ing ngendi, sadurunge lan sabisane. Maneh, iki kanggo nylametake kita saka kesalahan. Sejatine, kabeh iki kanggo tujuan sing apik. Lan misale jek kula iki sepisan maneh instills ing kita budaya nangani data. Dadi, jinis nilai bali ditemtokake kanggo metode. Lan tembung kunci bali ing Jawa digunakake kanggo nindakake bali. Tembung bali Jawa - 1

Apa bali ing Jawa

Tembung kunci bali minangka statement aliran kontrol, kaya sing diterangake ing tutorial Oracle kene . Sampeyan uga bisa maca babagan cara mbalekake nilai ing bagean " Ngasilake Nilai saka Metode " ing tutorial resmi. Compiler kasebut kanthi teliti, nglacak apa bisa mesthekake yen Nilai bali cara cocog karo jinis bali sing ditemtokake cara. Ayo nggunakake IDE Online Tutorialspoint kanggo nimbang conto. Ayo katon ing conto primeval:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
Minangka kita bisa ndeleng, cara utama dieksekusi ing kene, yaiku titik entri program. Baris kode dieksekusi saka ndhuwur nganti ngisor. Cara utama kita ora bisa ngasilake nilai. Yen kita nyoba ngasilake nilai ing kana, kita bakal entuk kesalahan: "Kesalahan: Cara utama kudu ngasilake nilai jinis void" . Mulane, cara kasebut mung metu menyang layar. Saiki ayo mindhah string literal menyang cara sing kapisah kanggo ngasilake pesen:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println(getHelloMessage());
    }
    
    public static String getHelloMessage() {
        return "Hello World";
    }
    
}
Kaya sing kita deleng, kita nggunakake tembung kunci bali kanggo nuduhake nilai bali, sing banjur diterusake menyang metode println . Pranyatan metode getHelloMessage nuduhake yen metode kasebut bakal ngasilake String . Iki ngidini kompiler mriksa manawa tumindak metode kasebut cocog karo cara diumumake. Mesthine, jinis bali sing ditemtokake ing deklarasi metode bisa luwih jembar tinimbang jinis nilai sing bener bali ing kode kasebut, yaiku sing penting yaiku konversi jinis bisa. Yen ora, kita bakal entuk kesalahan ing wektu kompilasi: "Kesalahan: jinis sing ora kompatibel" . Miturut cara, sampeyan bisa uga duwe pitakonan: Kenapa balidianggep minangka statement aliran kontrol? Amarga bisa ngganggu aliran ndhuwur-mudhun normal saka program. Tuladha:

public class HelloWorld {

    public static void main(String[] args) {
        if (args.length == 0) {
            return;
        }
        for (String arg : args) {
            System.out.println(arg);
        }
    }
    
}
Nalika sampeyan bisa ndeleng saka conto, kita ngganggu cara utama ing program Jawa yen disebut tanpa bantahan. Iku penting kanggo elinga yen sampeyan duwe kode sawise statement bali , iku ora bakal bisa diakses. Compiler pinter kita bakal sok dong mirsani lan nyegah saka mbukak program kuwi. Contone, kode iki ora kompilasi:

public static void main(String[] args) {
        System.out.println("1");
        return;
// we use output method after return statement, which is incorrect 
        System.out.println("2");
 }
Ana siji hack reged kanggo njaluk watara iki. Contone, kanggo tujuan debugging, utawa kanggo sawetara alasan liyane. Kode ing ndhuwur bisa didandani kanthi mbungkus pernyataan bali ing blok if :

if (2==2) {
    return;
}

Pernyataan bali nalika nangani kesalahan

Ana liyane sing angel banget - kita bisa nggunakake bali bebarengan karo penanganan kesalahan. Aku arep ngomong langsung sing nggunakake statement bali ing pemblokiran nyekel iku banget, banget ala, supaya sampeyan kudu nyingkiri. Nanging kita kudu conto, ta? Punika:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Value: " + getIntValue());
    }
    
    public static int getIntValue() {
        int value = 1;
        try {
            System.out.println("Something terrible happens");
            throw new Exception();
        } catch (Exception e) {
            System.out.println("Cached value: " + value);
            return value;
        } finally {
            value++;
            System.out.println("New value: " + value);
        }
    }
    
}
Ing kawitan marketing, misale jek sing 2 kudu bali, wiwit pungkasanipun tansah kaleksanan. Nanging ora, nilai bali bakal dadi 1, lan owah-owahan ing variabel ing blok pungkasan bakal diabaikan. Kajaba iku, umpamane nilai kasebut ngemot obyek lan ujar nilai = null ing blok pungkasan . Banjur obyek kasebut, ora null, bakal bali ing blok nyekel . Nanging statement bali bakal bisa digunakake kanthi bener ing blok pungkasan . Temenan, rekan kerja sampeyan ora bakal matur nuwun kanggo kejutan cilik sing kalebu pernyataan bali.

batal.kelas

Lan pungkasane. Ana iki mbangun aneh sampeyan bisa nulis: void.class . Hmm. Kenapa lan apa tegese? Pancen ana macem-macem kerangka lan kasus rumit sing nglibatake API Refleksi Jawa sing bisa migunani banget. 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 frameworks test ngendi sampeyan kudu ngganti kode nyata ing cara. Nanging kanggo nindakake iki, sampeyan kudu ngerti kepiye cara tumindak (yaiku jinis apa sing bakal ditindakake). Ana uga cara liya kanggo ngetrapake metode utama ing kode ing ndhuwur:

public static void main(String[] args) {
        for (Method method : HelloWorld.class.getDeclaredMethods()) {
            System.out.println(method.getReturnType() == Void.TYPE);
        }
 }
Sampeyan bisa maca diskusi cantik menarik saka prabédan antarane loro ing Stack Overflow: Apa prabédan antarane java.lang.Void lan roso sepi?
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION