konstanta

"Amigo, sampeyan ngerti yen ing Jawa ora kabeh variabel bisa diganti?"

"Piye, Kim? Pancen, tembung 'variabel' ngomongake owah-owahan."

"Ora ana sangsi babagan iki. Kaya akeh basa pamrograman liyane, Jawa nduweni konstanta , yaiku, variabel sing ora bisa diowahi nilai . Lan tembung 'konstan' ngomongake konsistensi."

"Lan kanggo apa?"

"Biasane, digunakake kanggo sawetara perkara dhasar kayata nomer Piutawa jumlah dina ing sasi ing taun. Sing jarene, ing prinsip, programmer bisa nggawe variabel apa wae dadi konstan, yen dheweke mutusake yen nindakake. dadi perlu."

"Maksudmu kaya jeneng, warna mobil, utawa jeneng dina minggu?"

"Sampeyan wis entuk gagasan sing bener. Apa wae sing ora kudu diganti."

"Lan kaya apa konstanta iki ing Jawa?"

"Jawa nduweni tembung kunci khusus kanggo wong-wong mau: final. Nggawe variabel sing ora bisa diganti katon padha karo nggawe sing biasa. Bentenipun mung sadurunge jinis variabel sampeyan kudu nulis tembung final, kaya iki:

final Type name = value;

"Apa sing kedadeyan yen sampeyan nggawe konstanta banjur nyoba nemtokake nilai sing beda?"

"Iki pitakonan sing tepat kanggo takon! Lan jawaban sing bener yaiku: yen sampeyan nyoba nemtokake nilai sing beda menyang variabel final, program sampeyan ora bakal kompilasi."

"Apa yen sampeyan ngumumake finalvariabel nanging ora menehi nilai?"

"Ora ana gunane nindakake iki, mula uga ora diidini ing Jawa. Variabel finalkudu diinisialisasi nalika diumumake, yaiku, sampeyan kudu menehi nilai. Ana siji pangecualian kanggo aturan iki: sampeyan bisa mindhah initialization saka variabel kelas statis dadi konstruktor. Nanging sampeyan bakal sinau babagan mengko.

"Sing jarene, ora kabeh sing finalkonstan. Kanggo nyuda jumlah tembung kunci, pangembang Jawa nggunakake tembung kasebut finalluwih saka mung nyatakake konstanta. finalBisa uga ditrapake kanggo metode lan malah kelas. Metode sing diumumake minangka finalora bisa diganti, lan kelas. nyatakake yen finalora bisa diwarisake."

"Eh... Ditimpa? Warisan? Saiki nganggo basa apa?"

"Basa pemrograman berorientasi obyek. Sampeyan bakal entuk banget. Nganti saiki, nikmati terminologi sing apik."

"Oke. Dadi, finalbisa dilebokake sadurunge variabel, kelas, lan metode, lan tembung kunci iki ndadekake ora bisa diganti ing sawetara pangertèn?"

"Ya. Salajengipun, finalmodifier bisa ditambahake sadurunge variabel apa wae: variabel lokal, parameter metode, kolom kelas, lan variabel kelas statis.

"Iki sing penting kanggo elinga: finalsadurunge jeneng variabel mung pangayoman marang owah-owahan ing variabel kasebut . Yen variabel nyimpen referensi menyang obyek, obyek kasebut isih bisa diganti."

"Aku ora ngerti."

"Sampeyan bakal cepet ngerti. Iki contone:

final int[] data = {1, 2, 3, 4, 5, 6};

data = {6, 7, 8, 9};

data[0] = 0;
data[1] = 0;
data[2] = 0;
Kita nggawe array.

Iki ora diidini: variabel kasebut datadiumumake minangka final.

Nanging sampeyan bisa nindakake iki.
Lan uga iki.

"Get it. Sing angel."

konstanta global

"Apa sampeyan mikir konstanta global?"

"Aku guess konstanta global mbokmenawa kaya variabel global, mung konstanta?"

"Persis. Yen sampeyan kudu ngumumake konstanta global ing program sampeyan, nggawe variabel kelas statis , lan gawe publiclan final. Ana gaya khusus kanggo jeneng variabel kasebut: ditulis nganggo huruf kapital kabeh, kanthi karakter garis ngisor sing digunakake kanggo tembung kapisah.

Tuladha:

class Solution
{
   public static final String SOURCE_ROOT = "c:\\projects\\my\\";
   public static final int DISPLAY_WIDTH = 1024;
   public static final int DISPLAY_HEIGHT = 768;
}

Variabel bayangan

"Kaya sing dakkandhakake sadurunge, sampeyan ora bisa nggawe macem-macem variabel lokal kanthi jeneng sing padha ing siji metode. Ing cara sing beda, sampeyan bisa."

"Aku ngerti!"

"Nanging sing mbokmenawa sampeyan ora ngerti yaiku variabel ing kelas lan variabel lokal ing sawijining metode bisa uga duwe jeneng sing padha.

Tuladha:

Kode visibilitas variabel
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     sum = sum + data;
     int sum = data * 2;
     count++;
   }
}

count, sum
count, sum
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum, data
count, sum

"Ing addmetode kasebut, kita ngumumake variabel lokal sing dijenengi sum. Nganti pungkasan metode kasebut, dibayangake (utawa topeng ) sumvariabel conto."

"Hmm... Aku bakal ngomong ing sawetara pangertèn iki prilaku samesthine."

"Nanging iku dudu pungkasane crita. Pranyata yen variabel conto dibayangi dening variabel lokal, isih ana cara kanggo nyebut variabel conto ing metode kasebut. Kita nindakake iki kanthi nulis tembung kunci sadurunge jenenge this. :

this.name

"Iki conto yen konflik jeneng kasil dirampungake:

Kode visibilitas variabel
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     int sum = data * 2;
     this.sum = this.sum + data;
     count++;
   }
}

this.count, this.sum
this.count, this.sum
this.count, this.sum
this.count, this.sum
this.count, this.sum
this.count, this.sum, data
this.count, this.sum, data, sum
this.count, this.sum, data, sum
this.count, this.sum, data, sum
this.count, this.sum

Variabel countlan sumkasedhiya ing endi wae kanthi utawa tanpa thistembung kunci. Ing baris ngendi sumvariabel lokal bayangan variabel sumconto, sumvariabel conto mung bisa diakses nggunakake thistembung kunci.

"Temenan, aku kudu latihan iki."

"Sampeyan bakal ngatur."

"Apa yen variabel kelas statis dibayangke tinimbang mung variabel conto (non-statis)? Sampeyan ora bisa ngakses liwat this?"

"Bener sampeyan. Tembung kunci iki ora bisa digunakake. Sampeyan kudu ngrujuk liwat jeneng kelas:

ClassName.name

Tuladha:

Kode visibilitas variabel
public class Solution
{
   public static int count = 0;
   public static int sum = 0;

   public void add(int data)
   {
     int sum = data * 2;
     Solution.sum = Solution.sum + data;
     count++;
   }
}

Solution.count, Solution.sum
Solution.count, Solution.sum
Solution.count, Solution.sum
Solution.count, Solution.sum
Solution.count, Solution.sum
Solution.count, Solution.sum, data
Solution.count, Solution.sum, data, sum
Solution.count, Solution.sum, data, sum
Solution.count, Solution.sum, data, sum
Solution.count, Solution.sum

"Padha manungsa waé: sampeyan bisa ngakses lan countvariabel sumstatis nang endi wae nganggo utawa tanpa nggunakake jeneng kelas Solutionminangka ater-ater. Ing baris ngendi sumvariabel lokal dipengini sumvariabel Kayata, akses menyang sumvariabel kelas bisa mung nalika nggunakake Solutionminangka ater-ater.

Variabel ing fordaur ulang

"Lan siji liyane cilik nanging menarik kasunyatan. Ana uga panggonan ngendi variabel diumumake kanthi cara khusus - Aku ngomong bab nang daur ulang for. " Biasane, forloop duwe countervariabel ing kurung. Lan apa sing bakal dadi visibilitas variabel iki? Sawise kabeh, ora ana ing awak daur ulang. Apa iku kabeh cara? opo ora?"

"Aku wis krungu bab iki. Nalika aku ngerti, variabel sing diumumake ing header loop formung katon ing awak loop lan ing header loop for. "

"Inggih, Amigo. Nanging isih, deleng conto kanggo nguatake materi iki:

Kode visibilitas variabel
public static void main(String[] args)
{
   int a = 0;

   for (int i = 0; i < 10; i++)
   {
     System.out.println(i);
   }

   System.out.println("end");
}


a
a
a, i
a, i
a, i
a
a
a

"Dadi sampeyan ngomong yen ing kode, aku bisa nulis sawetara puteran siji-sijine kanthi variabel counter kanthi jeneng sing padha, lan ora bakal ana masalah?"

"Ora ana masalah. Iki, delengen:

Kode visibilitas variabel
public static void main(String[] args)
{
   int a = 0;

   for (int i = 0; i < 10; i++)
   {
     System.out.println(i);
   }

   for (int i = 0; i < 10; i--)
   {
     System.out.println(i);
   }

   System.out.println("end");
}


a
a
a, i
a, i
a, i
a
a
a, i
a, i
a, i
a
a
a