1. Gula sintaksis

Programer seneng nalika sawetara kode rumit utawa logika bisa ditulis ing saperangan baris, nggawe kode kompak lan bisa diwaca. Lan pangripta basa pamrograman kadhangkala mbantu iki.

Fitur basa sing apik sing ngidini sampeyan njupuk trabasan (nulis kode kurang) diarani gula sintaksis . Nanging, sejujure, ing Jawa mung sithik.

Pangripta Jawa nindakake samubarang kang bisa kanggo ngilangake redundansi ing Jawa. Yen C ++ ngijini sampeyan nindakake soko 20 cara, banjur Jawa ngijini sampeyan nindakake iku mung siji cara.

Nanging programer Jawa utawa pangripta Jawa ora seneng karo kekurangan kebebasan. Lan kadhangkala gula nggawe urip luwih gampang kanggo wong biasa kaya sampeyan lan aku.

Miturut cara, sampeyan wis nemoni sawetara gula sintaksis: autoboxing lan unboxing . Ayo mbandhingake:

Kode dawa Kode kompak
Integer a = new Integer(5);
int b = a.intValue();
Integer a = 5;
int b = a;
int b = 5;
Integer c = new Integer(b);
int b = 5;
Integer c = b;
Integer a = new Integer(1);
int b = 1;
if (a.intValue() == b)
{
   ...
}
Integer a = 1;
int b = 1;
if (a == b)
{
   ...
}

Tinimbang kode dawa kaya ing sisih kiwa, sampeyan bisa nulis kode sing luwih kompak ing sisih tengen. Lan kompiler Jawa sing cerdas bakal ngasilake versi verbose kode adhedhasar versi cendhak kode kasebut. Iki persis apa gula sintaksis.


2. Inferensi jinis variabel: vartembung kunci

Ing Jawa 11, kompiler dadi luwih pinter lan saiki bisa nemtokake jinis variabel sing diumumake adhedhasar jinis nilai sing diwenehake . Ing kode, katon kaya iki:

var name = value;

Ing endi namejeneng variabel anyar, nilai kasebut minangka nilai awal, lan varminangka tembung kunci sing digunakake kanggo ngumumake variabel kasebut. Jinis variabel jeneng bakal padha karo jinis nilai sing diwenehake.

Tuladha:

Carane kita ndeleng kode Apa compiler ndeleng
var i = 1;
int i = 1;
var s = "Hello";
String s = "Hello";
var console = new Scanner(System.in);
Scanner console = new Scanner(System.in);
var list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<String>();
var data = new int[]{1, 2, 3};
int[] data = new int[]{1, 2, 3};

Compiler dhewe nemtokake, utawa nyimpulake, jinis variabel adhedhasar nilai sing diwenehake.

Programer debat panas babagan apa bakal nambah fitur kasebut ing basa kasebut. Akeh wong sing wedi yen varbakal disalahake lan keterbacaan kode bakal nandhang sangsara.

Ana gandum saka bebener iki, supaya iku paling apik kanggo nggunakake varngendi iku nambah readability saka kode. Contone, iki ing rong kasus:

Kasus 1: Nggoleki nilai sing ditugasake kanggo variabel, jinis variabel kasebut langsung jelas

Kode Panjelasan
var stream = url.getInputStream();
Variabel yaiku aInputStream
var name = person.getFullName();
Variabel kasebut yaiku aString

Ing kasus iki, sampeyan ora kudu nggunakake var. Inggih, apa jinis variabel?

Kode Panjelasan
var result = task.execute();
Iku angel kanggo nemtokake jinis variabel
var status = person.getStatus();
Iku angel kanggo nemtokake jinis variabel

Kasus 2: Jinis variabel ora penting kanggo mangerteni kode kasebut

Kode asring ora perlu nelpon metode ing variabel, contone, nalika variabel mung digunakake kanggo nyimpen barang. Ing kasus iki, nggunakake varmesthi ora nyuda readability saka kode:

Kode dawa Kode kompak
var data = stream.getMetaData();
storage.save(data)
Kita entuk metadata saka streamstream lan disimpen ing storagerepositori. Jinis dataspesifik variabel ora penting.

Tegese emas

Saiki aku bakal menehi telung cara kanggo nulis kode sing padha. Nggunakake varbakal dadi pilihan sing paling apik.

Kode Cathetan
dest.writeHeaderInfo(src.getFileMetaInfo());
Kompak banget
var headerInfo = src.getFileMetaInfo();
dest.writeHeaderInfo(headerInfo);
pas
FileMetaInfo headerInfo = src.getFileMetaInfo();
dest.writeHeaderInfo(headerInfo);
Detil banget

Ngalih saka versi karo 1 baris kanggo versi ing 2 baris, kita digawe kode sethitik liyane diwaca kanthi nggunakake jeneng variabel ( headerInfo). Saiki jelas yen metode kasebut ora mung ngasilake informasi meta, nanging informasi header.

Versi katelu banget verbose. Kasunyatan sing headerInfowis FileMetaInfocukup cetha saka getFileMetaInfo()cara. Tujuan informasi meta luwih menarik.



3. Ngilangi jinis karo operator berlian:<>

Malah sadurunge varoperator muncul, ana upaya kanggo mulang kompiler carane nyimpulake jinis koleksi. Sampeyan bakal setuju yen notasi iki katon rada keluwih:

ArrayList<String> list = new ArrayList<String>();

Miwiti saka versi Jawa kaping pitu, nalika nulis jinis koleksi, sampeyan bisa ngilangi jinis unsur koleksi yen wis ditemtokake nalika ngumumake variabel. Ing tembung liyane, kode ing ndhuwur bisa ditulis ing wangun sing rada dicekak:

ArrayList<String> list = new ArrayList<>();

Kaya sing sampeyan ngerteni, sampeyan ora perlu maneh nulis String kaping pindho. Ora kelangan karo operator var, nanging ketoke kaya kemajuan ing wektu.

Kurung sudut kosong ing jinis koleksi kasebut diarani operator berlian , amarga rong kurung sudut samar-samar meh padha karo berlian.

Ora dikarepake nggunakake vartembung kunci lan operator berlian ing wektu sing padha :

var list = new ArrayList<>();

Ora ana informasi babagan jinis unsur sing disimpen ing koleksi kasebut, lan jinis koleksi bakal dadi ArrayList <Obyek> .



4. Kurung kriting pindho

Elinga initialization array cepet?

Kita mung nyathet nilai ing kurung kriting, kaya iki:

Tuladha
int[] data = new int[] {1, 2, 3, 4, 5, 6, 7};
int[] data = {1, 2, 3, 4, 5, 6, 7};

Pangripta Jawa seneng gagasan nggunakake kurung kriting kanggo nyederhanakake unsur nulis saka larik. Nanging kepiye babagan koleksi?

Pangripta Jawa uga nduweni pamikiran kreatif sing cukup kanggo koleksi, saengga bisa nggunakake trik nganggo kurung kriting ganda.

Kanthi gula Tanpa gula
var list = new ArrayList<String>()
{{
   add("Hello");
   add("How's");
   add("Life?");
}};
var list = new ArrayList<String>();

list.add("Hello");
list.add("How's");
list.add("Life?");

Yen kompiler nemoni kode kaya ing conto ing sisih kiwa, banjur diowahi dadi kode ing sisih tengen.

Kode ora dadi luwih kompak. Tabungan ing kene cukup sithik: sampeyan ora kudu nulis listsaben wektu. Iki bisa mbiyantu yen jeneng variabel dawa banget.

Nanging yen sampeyan nemokake kode kaya iki ing proyek, aja kaget 🙂