1. Variabel statis

Nalika kelas dimuat menyang memori obyek statis digawe langsung. Objek iki nyimpen variabel kelas statis (kolom kelas statis). Objek statis ana sanajan ora ana obyek biasa (non-statis) saka kelas sing digawe.

Nalika kita ngumumake variabel ing kelas, kita nuduhake manawa bakal digawe mung sapisan, utawa kudu ana kedadeyan sing beda saka variabel kasebut ing saben obyek. Kanthi gawan, salinan anyar saben variabel digawe kanggo saben obyek.

Variabel statis diikat menyang obyek statis kelas lan mesthi ana siji conto.

Kanggo nggawe variabel statis ing kelas, sampeyan kudu nulis statictembung kunci sadurunge jenenge. Format umum kanggo nyatakake variabel statis yaiku:

static Type name = value;

Yen variabel statis ora diwenehi nilai dhisikan, diinisialisasi kanthi nilai standar:

Jinis Nilai standar
byte
0
short
0
int
0
long
0
float
0.0
double
0.0
char
'\u0000'
(sing padha karo
0
)
boolean
false
Object
lan kelas apa wae
null

Tuladha:

Kode Cathetan
public static int WIDTH = 100;
public static String message = "Hello";
private static Scanner console;
private static int count = 0;
private static boolean flag;

Ing njero kelas, sampeyan bisa ngrujuk marang variabel statis kanthi nggunakake jenenge. Nanging kanggo ngakses saka kelas liyane, sampeyan kudu nulis jeneng kelas sadurunge jeneng variabel statis.

ClassName.variable

Tuladha:

Variabel kelas Ngakses variabel ing njaba kelas
public static int WIDTH = 100;
Solution
Solution.WIDTH
public static String message = "Hello";
Main
Main.message
private static Scanner console;
JavaGame
Variabel kasebut yaiku private. Ora katon ing njaba kelas.
private static int count = 0;
Counter
Variabel kasebut yaiku private. Ora katon ing njaba kelas.
private static boolean flag;
Arithmetic
Variabel kasebut yaiku private. Ora katon ing njaba kelas.


2. Bedane antarane variabel statis lan non-statis

Variabel non-statis (biasa) saka kelas diumumake kanthi cara sing padha karo variabel statis, mung tanpa tembung statickunci.

Apa bedane antarane variabel biasa lan variabel statis?

Variabel biasa saka kelas kaiket menyang obyek saka kelas (kedadean saka kelas), nalika variabel statis kaiket kanggo obyek statis kelas.

Yen ana sawetara kedadean saka kelas, saben wong duwe salinan dhewe saka variabel non-statis (biasa). Variabel statis saka kelas tansah disimpen ing obyek statis lan mung ana siji conto.

Sampeyan bisa ngakses variabel biasa (lapangan) saka kelas mung yen sampeyan duwe referensi kanggo obyek saka kelas. Lan cara nang kelas, mesthi.

Tuladha:

Ngakses lapangan kelas nggunakake referensi obyek
public class DataInfo
{
   public int value = 100;
}

public class Solution
{
   public static void main(String[] args)
   {
      DataInfo info = new DataInfo();
      System.out.println(info.value);
   }
}

Sampeyan bisa ngakses variabel statis saka ngendi wae (sawise nyathet modifikasi visibilitas): saka cara biasa, saka metode statis saka kelas sing padha, saka metode kelas liyane, lsp.

Tuladha:

Ngakses lapangan statis saka kelas tanpa nggunakake referensi obyek
public class DataInfo
{
   public static int value = 100;
}

public class Solution
{
   public static void main(String[] args)
   {
      System.out.println(DataInfo.value);
   }
}

Carane memori diatur:

Ayo kita duwe Personkelas karo 4 lapangan: loro statis lan loro ora.

public class Person
{
   public static int count = 0;
   public static int sum = 0;
   public int age = 0;
   public String name;
}

Sanalika sawise mbukak kelas

Nalika mesin Java wis rampung mbukak Personkelas, memori bakal katon kaya iki:

Sawise nggawe obyek pisanan

Yen kita nggawe Personobyek, gambar kasebut dadi:

Bedane antarane variabel statis lan non-statis 2

Wigati dimangerteni manawa obyek loro kasebut duwe rong variabel, iki variabel sing beda: obyek biasa duwe variabel biasa, lan obyek statis duwe variabel statis.

We kudu liyane obyek

Ayo nggawe rong Personobyek liyane. Saiki memori bakal katon kaya iki:

Bedane antarane variabel statis lan non-statis 3

Elinga yen saben obyek duwe variabel umur lan jeneng dhewe.



3. Mbusak lan nambah staticmodifier

Saka statis nganti biasa

Apa sing kedadeyan yen kita njupuk variabel statis lan ngowahi dadi biasa kanthi ngilangi staticmodifier? Contone, static int sumvariabel.

Kode sing diowahi bakal katon kaya iki:

public class Person
{
   public static int count = 0;
   public int sum = 0;
   public int age = 0;
   public String name;
}

Saiki memori katon kaya iki:

Bedane antarane variabel statis lan non-statis

Variabel statis ilang saka obyek statis, lan saiki saben obyek biasa duwe sumvariabel dhewe.

Saka biasa kanggo statis

Kita bisa nindakake ngelawan: nambah staticmodifier kanggo variabel biasa saka kelas. Bakal ilang saka kabeh obyek biasa lan bakal katon ing obyek statis. Upaminipun kita arep nggawe agelan namevariabel statis. Banjur kode bakal katon kaya iki:

public class Person
{
   public static int count = 0;
   public int sum = 0;
   public static int age = 0;
   public static String name;
}

Lan saiki memori bakal katon kaya iki:

Mbusak lan nambah modifier statis