Rumah  >  Artikel  >  Java  >  Apakah perbezaan antara pembolehubah statik Java dan pembolehubah contoh?

Apakah perbezaan antara pembolehubah statik Java dan pembolehubah contoh?

WBOY
WBOYke hadapan
2023-05-05 15:40:071706semak imbas

Terdapat dua jenis pembolehubah ahli kelas

java: satu pembolehubah diubah suai oleh kata kunci statik, dipanggil pembolehubah kelas atau pembolehubah statik; tanpa pengubahsuaian statik, dipanggil pembolehubah instance.

Perbezaan dalam definisi sintaks: kata kunci statik mesti ditambah sebelum pembolehubah statik, tetapi bukan sebelum pembolehubah contoh.

Perbezaan apabila atur cara dijalankan: pembolehubah instance tergolong dalam atribut objek Suatu objek instance mesti dibuat sebelum pembolehubah instance di dalamnya akan diperuntukkan ruang, dan kemudian pembolehubah instance ini boleh digunakan. Pembolehubah statik bukan kepunyaan objek contoh, tetapi ke dalam kelas, jadi ia juga dipanggil pembolehubah kelas Selagi program memuatkan kod bait kelas tanpa mencipta sebarang objek contoh, pembolehubah statik akan diperuntukkan ruang, dan pembolehubah statik. pembolehubah statik boleh digunakan. Ringkasnya, pembolehubah contoh mesti mencipta objek sebelum ia boleh digunakan melalui objek ini, manakala pembolehubah statik boleh dirujuk terus menggunakan nama kelas.

Sebagai contoh, untuk program berikut, tidak kira berapa banyak objek contoh dicipta, hanya satu pembolehubah staticVar sentiasa diperuntukkan, dan setiap kali objek contoh dicipta, staticVar ini akan dinaikkan sebanyak 1; setiap kali objek instance dicipta, , satu instanceVar akan diperuntukkan, iaitu berbilang instanceVar boleh diperuntukkan dan nilai setiap instanceVar hanya dinaikkan sekali.

public class VariantTest  {  public static int staticVar = 0;  public int instanceVar = 0;  public VariantTest()  {  staticVar++;  instanceVar++;  System.out.println(“staticVar = ”++staticVar “, instanceVar = ” ++instanceVar);  }  }

Hanya terdapat satu pembolehubah statik kelas dalam memori Mesin maya Java memperuntukkan memori untuk pembolehubah statik semasa proses memuatkan kelas Pembolehubah statik terletak dalam kawasan kaedah dan dikongsi oleh semua keadaan kelas. Pembolehubah statik boleh diakses terus melalui nama kelas, dan kitaran hayatnya bergantung pada kitaran hayat kelas.

Dan pembolehubah instance bergantung pada instance kelas. Setiap kali kejadian dibuat, mesin maya Java memperuntukkan memori untuk pembolehubah contoh. Pembolehubah contoh terletak di kawasan timbunan dan kitaran hayatnya bergantung pada kitaran hayat contoh.

public class Temp {  int t; //实例变量  public static void main(String args[]){  int t=1; //局部变量  System.out.println(t); //打印局部变量  Temp a= new Temp(); //创建实例  System.out.println(a.t); //通过实例访问实例变量  }  }

Hasilnya ialah:

1

0 (pembolehubah ahli mempunyai nilai lalai ​​tetapi pembolehubah tempatan tidak)

Tukar kod kepada:

public class Temp {  static int t; //类变量  public static void main(String args[]){  System.out.println(t); //打印类变量  int t=1; //局部变量  System.out.println(t); //打印局部变量  Temp a= new Temp(); //创建实例  System.out.println(a.t); //通过实例访问实例变量  }  }

Hasilnya ialah

0

1

0

Atas ialah kandungan terperinci Apakah perbezaan antara pembolehubah statik Java dan pembolehubah contoh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam