1. Metode statis

Saliyane variabel statis, kelas uga bisa duwe metode statis.

Cara reguler diikat menyang obyek (instance) saka kelas lan bisa ngrujuk marang variabel biasa (non-statis) saka kelas kasebut (uga variabel statis lan metode ). Cara statis diikat menyang obyek statis kelas lan mung bisa ngakses variabel statis lan / utawa cara statis liyane saka kelas kasebut.

Kanggo nelpon cara biasa (non-statis) ing kelas, sampeyan kudu nggawe obyek saka kelas lan banjur nelpon cara ing obyek. Sampeyan ora bisa nelpon cara biasa ing kelas tinimbang obyek.

Tuladha:

Sampeyan ora bisa nelpon cara non-statis ing kelas!
public class DataInfo
{
   public int getValue()
   {
      return 100;
   }
}

public class Solution
{
   public static void main(String[] args)
   {
      System.out.println(DataInfo.getValue()); // This will generate an error!
   }
}

Nanging kanggo nelpon cara statis, cukup kanggo obyek statis kelas mung ana (lan tansah ana sawise kelas dimuat menyang memori). Iki kok cara utama () statis. Iku bound kanggo obyek statis kelas kang, supaya sampeyan ora perlu kanggo nggawe obyek sembarang kanggo nelpon.

Kanggo ngumumake metode statis, sampeyan kudu nulis tembung kunci statis sadurunge header metode. Tampilan umum saka konstruksi iki kaya ing ngisor iki:

static Type name(parameters)
{
   method code
}

Tuladha:

Kode Cathetan
public class Solution
{
   public static void main(String args[])
   {
      test();
   }

   public static void test()
   {
      int d = 2/0;
   }
}


Mesin Java nyebut maincara kasebut kanthi prentah kaya mangkene: Solution.main();



Metode statis test()diarani main()metode statis.

Kanggo nelpon cara statis saka kelas liyane, sampeyan kudu nemtokake jeneng kelas sadurunge jeneng cara statis. Tampilan umum saka konstruksi iki kaya ing ngisor iki:

Type name = ClassName.methodName(arguments)

Tuladha:

Kode Metode statis
int x = Math.min(a, b);
int min(int a, int b)
Thread.sleep(200);
void sleep(long ms)
Path path = Path.of("c:\\readme.txt");
Path of(String str)


2. Metode statis vs biasa (non-statis).

Apa bedane metode statis lan cara biasa?

Cara biasa diikat menyang obyek biasa (kayata kelas), dene cara statis ora. Cara biasa bisa ngakses variabel ing contone, nanging cara statis ora bisa: mung ora duwe conto sing gegandhengan.

Bedane antarane rong jinis metode kasebut dituduhake ing tabel ing ngisor iki:

Kapabilitas / properti Cara biasa Metode statis
Diikat karo conto kelas ya wis Ora
Bisa nelpon cara biasa saka kelas ya wis Ora
Bisa nelpon metode statis saka kelas ya wis ya wis
Bisa ngakses variabel biasa saka kelas ya wis Ora
Bisa ngakses variabel statis saka kelas ya wis ya wis
Bisa diarani obyek ya wis ya wis
Bisa diarani ing kelas Ora ya wis

Apa sebabe cara-cara kasebut dibutuhake yen winates banget? Jawaban iki yaiku pendekatan iki uga nduweni kaluwihan.

Pisanan, sampeyan ora perlu ngliwati referensi obyek kanggo ngakses metode statis lan variabel.

Kapindho, kadhangkala sampeyan kudu ana mung siji conto variabel. Contone, System.out( variabel metu statis kelas Sistem ).

Lan, kaping telu, kadhangkala sampeyan kudu nelpon cara sadurunge bisa nggawe obyek. Contone, mesin Java nelpon cara utama () kanggo miwiti eksekusi program malah sadurunge Kayata saka kelas digawe.

Diikat karo conto kelas

Nalika cara biasa diarani, argumen - obyek sing diarani metode kasebut - sacara implisit diterusake. Parameter iki diarani this. Parameter implisit iki (referensi kanggo obyek sing diarani metode kasebut) mbedakake cara biasa saka cara statis.

Cara statis ora duwe parameter implisit iki, supaya sampeyan ora bisa nggunakake tembung thiskunci ing cara statis, lan sampeyan ora bisa nelpon cara non-statis ing cara statis. Ora ana ngendi wae kanggo njaluk referensi kanggo conto kelas.

Bisa nelpon cara biasa saka kelas

Cara biasa tansah nduweni thisparameter implisit, dadi sampeyan tansah duwe referensi kanggo obyek sing diarani metode kasebut. Saben sampeyan nelpon cara biasa ing cara biasa liyane, thisparameter implisit digunakake kanggo nelpon kasebut. Tuladha

Kode Cara kerjane
int min(int a, int b)
{
   return a < b ? a : b;
}

int min(int a, int b, int c)
{
   int t = min(a, b);
   return min(t, c);
}
int min(int a, int b)
{
   return a < b ? a : b;
}

int min(int a, int b, int c)
{
   int t = this.min(a, b);
   return this.min(t, c);
}

Mulane sampeyan ora bisa nelpon cara biasa saka cara statis. Ora ana variabel implisit sing dijenengi thising metode statis.

Utawa mbayangno kahanan liyane: ora ana obyek siji saka kelas kita sing durung digawe ing program kita. Apa kita bisa nelpon metode statis kelas kita? ya wis. Lan cara statis iki bisa nelpon cara biasa (non-statis)?

Nah, obyek apa sing bakal kita sebut? Sawise kabeh, ora ana conto siji saka kelas kita!

Bisa nelpon metode statis saka kelas

Cara statis bisa diarani saka ngendi wae - saka ngendi wae ing program kasebut. Iki tegese padha bisa disebut saka loro cara statis lan biasa. Ora ana watesan ing kene.

Bisa ngakses variabel biasa saka kelas

Sampeyan bisa ngakses variabel biasa kelas saka cara biasa, amarga bisa gampang diwenehi referensi kanggo conto kelas liwat thisparameter implisit.

Cara statis ora ngerti conto kelas sing kudu digunakake kanggo entuk nilai variabel biasa. Lan luwih umum, kita bisa kanthi gampang duwe kahanan sing diarani metode statis nanging ora ana siji wae kelas sing digawe ing program kasebut.

Akibaté, cara statis ora bisa ngakses variabel biasa saka kelas.

Upaminipun cara statis nelpon cara biasa. Apa obyek sing kudu diarani cara biasa kasebut?

Metode statis

Gak onok seng ngerti! Mulane sampeyan ora bisa nelpon cara biasa saka cara statis tanpa ngirim referensi menyang obyek!

Bisa ngakses variabel statis saka kelas

Kahanan karo panggilan menyang variabel statis padha karo telpon menyang metode statis. Variabel statis bisa diakses saka ngendi wae ing program. Tegese sampeyan bisa ngakses saka cara statis lan biasa.

Bisa diarani obyek

Cara statis lan biasa bisa diarani obyek. Panggil cara biasa bisa - pancen, iku mung cara kanggo nelpon cara biasa. Cara statis uga bisa diarani obyek: ing kasus iki, kompiler dhewe nemtokake jinis variabel lan nelpon metode statis adhedhasar jinise:

Kode Carane compiler ndeleng iku
Thread th = Thread.current();
th.sleep(1000);
Thread th = Thread.current();
Thread.sleep(1000);
Integer i = 1;
int x = i.parseInt("12");
Integer i = 1;
int x = Integer.parseInt("12");
"".valueOf(12);
String.valueOf(12);

Bisa diarani ing kelas

Sampeyan bisa nelpon mung cara statis ing kelas. Kanggo nelpon cara biasa, sampeyan butuh referensi kanggo conto kelas. Mulane, sampeyan ora bisa nelpon cara biasa nggunakake konstruksi iki:ClassName.methodName(arguments)