1. Konstanta

Akeh basa pamrograman liyane duwe konstanta , yaiku, variabel sing ora bisa diganti . 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 perlu.

Dadi kepiye carane sampeyan ngumumake variabel sing ora bisa diganti (konstan) ing Jawa? Ana tembung kunci khusus kanggo iki: final. Nggawe variabel sing ora bisa diganti katon padha karo nggawe variabel biasa. Bentenipun mung sadurunge jinis variabel sampeyan kudu nulis tembung final, kaya iki:

final Type name = value;

Yen sampeyan nyoba nemtokake nilai sing beda menyang finalvariabel, program sampeyan ora bakal dikompilasi.

Variabel finalkudu diwiwiti (nilai kudu diwenehi) nalika diumumake. Ana siji pangecualian kanggo aturan iki: sampeyan bisa mindhah initialization saka variabel kelas statis menyang konstruktor. Nanging sampeyan bakal sinau babagan iki ing Level 10 .

Kanggo nyuda jumlah tembung kunci, pangembang Jawa nggunakake tembung kasebut finalluwih saka mung nyatakake konstanta. finaluga bisa ditrapake kanggo metode lan malah kelas. Metode sing diumumake finalora bisa diganti, lan kelas sing diumumake finalora bisa diwarisake.

Modifier finalbisa ditambahake sadurunge variabel: variabel lokal, parameter metode, kolom kelas, lan variabel kelas statis.

Elinga yen finalsadurunge jeneng variabel mung pangayoman marang owah-owahan ing variabel kasebut . Yen variabel nyimpen referensi menyang obyek, obyek kasebut isih bisa diganti.

Tuladha:

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.

konstanta global

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

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;
}


2. Variabel bayangan

Kaya sing wis dakkandhakake sadurunge, sampeyan ora bisa nggawe sawetara variabel lokal kanthi jeneng sing padha ing cara sing padha. Ing macem-macem cara, sampeyan bisa.

Nanging iki sing mbokmenawa sampeyan ora ngerti: variabel conto lan variabel metode lokal bisa 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
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 jenenge sum. Nganti pungkasan metode kasebut, mbayangake (utawa topeng ) sumvariabel conto.

Oke, sampeyan ngomong, sing wis samesthine ing sawetara pangertèn. Nanging iki dudu pungkasane crita. Pranyata yen variabel instance dibayangi dening variabel lokal, isih ana cara kanggo ngrujuk marang variabel instance ing metode kasebut. Kita nindakake iki kanthi nulis thistembung kunci sadurunge jenenge:

this.name

Ing ngisor 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.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 count lan sum kasedhiya ing endi wae kanthi utawa tanpa thistembung kunci. Ing baris ngendi sum variabel lokal bayangan variabel sumconto, sum variabel conto mung bisa diakses nggunakake thistembung kunci.

Yen variabel kelas statis tinimbang variabel conto dibayangi, sampeyan kudu ngakses liwat jeneng kelas tinimbang tembung thiskunci:

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

Sampeyan bisa ngakses count lan sum variabel statis nang endi wae kanthi utawa tanpa nggunakake jeneng kelas Solutionminangka awalan. Ing baris kasebut ing ngendi sumvariabel lokal mbayangake sumvariabel instance, akses menyang sum variabel instance mung bisa digunakake nalika digunakake Solutionminangka awalan.



3. Variabel nang fordaur ulang

Lan siji liyane kasunyatan cilik nanging menarik.

Ana uga panggonan ing ngendi variabel diumumake kanthi cara khusus - ing njero daur forulang .

Sampeyan bisa uga kelingan manawa forloop biasane duwe variabel counter ing kurung. Lan apa sing bakal dadi visibilitas variabel iki? Sawise kabeh, ora ana ing awak daur ulang. Apa iku kabeh cara? Utawa ora?

Jawaban sing bener yaiku: variabel sing diumumake ing header loop formung katon ing awak loop lan ing header forloop .

Tuladha:

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 bisa tansah nulis puteran siji-sijine ing kode lan nggunakake variabel counter kanthi jeneng sing padha - sing ora bakal nggawe masalah.

Tuladha:

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