Java 中靜態變量和實例變量區別
Java的標準指的是一種作為應用層封裝的標準,使用Java可以調用一些底層的操作。下面是小編分享的Java 中靜態變量和實例變量區別,歡迎大家參考!
Java 中靜態變量和實例變量區別
靜態變量屬於類,該類不生產對象,通過類名就可以調用靜態變量。
實例變量屬於該類的對象,必須產生該類對象,才能調用實例變量。
在程序運行時的.區別:
實例變量屬於某個對象的屬性,必須創建了實例對象,其中的實例變量才會被分配空間,才能使用這個實例變量。
靜態變量不屬於某個實例對象,而是屬於類,所以也稱為類變量,只要程序加載了類的字節碼,不用創建任何實例對象,靜態變量就會被分配空間,靜態變量就可以被使用了。
總之,實例變量必須創建對象後才可以通過這個對象來使用,靜態變量則可以直接使用類名來引用。
例如,對於下面的程序,無論創建多少個實例對象,
永遠都只分配了一個 staticInt 變量,並且每創建一個實例對象,這個 staticInt 就會加 1;但是,每創建一個實例對象,就會分配一個 random,
即可能分配多個 random ,並且每個 random 的值都只自加了1次。
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
tln("staticInt = "+staticInt+" random = "+random);
}
public static void main(String[] args) {
StaticTest test = new StaticTest();
StaticTest test2 = new StaticTest();
}
}
執行以上程序,輸出結果為:
staticInt = 3 random = 3
staticInt = 4 random = 3
h七寶 h七寶
參考地址5個月前 (03-09)
大白小愛
靜態變量是用來聲明規則的,一旦固定都是用用來引用的,類似社會中的法律,規定好後你只能拿來説。但是也可以改的,通過重新的聲明法律就行。
大白小愛 大白小愛
5個月前 (03-25)
stinkaroo
ava 實例變量在整個類內部是可訪問的,而不管實例變量聲明在類的哪個位置。
import .*;
public class Employee{
public Employee (String empName){
name = empName;
}
public void setSalary(double empSal){
salary = empSal;
}
public void printEmp(){
tln("name:" + name);
tln("salary:" + salary);
}
public static void main(String args[]){
Employee empOne = new Employee("RUNOOB");
alary(1000);
tEmp();
tln(ry);
}
public String name;
private double salary;
}
比如在上面代碼中,儘管實例變量聲明在類的尾部,在之前方法中仍可訪問。
stinkaroo stinkaroo
3個月前 (05-09)
九仞
類變量賦值方法
無final修飾,聲明時賦值,構造器中賦值,靜態語句塊或靜態方法賦值
有final修飾,聲明時賦值,聲明與賦值分開可在靜態語句塊中賦值
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
}
public static void main(String[] args) {
tln("類變量與對象變量的值變化");
StaticTest test = new StaticTest();
tln(" 實例1:staticInt:" + icInt + "----random:" + om);
StaticTest test2 = new StaticTest();
tln(" 實例2:staticInt:" + icInt + "----random:" + om);
tln("靜態變量賦值");
tln(" 靜態語句塊起作用:" + icA);
A a = new A();
tln(" 構造器起作用:" + icA);
ange();
tln(" 靜態方法1起作用:" + icA);
ange2();
tln(" 靜態方法2起作用:" + icA);
tln("常量賦值");
tln(" 靜態語句賦值:" + icB);
}
}
class A {
public static String staticA ="A" ;
//靜態語句塊修改值
static{ staticA ="A1"; }
//構造器修改值
public A (){ staticA ="A2"; }
//靜態方法起作用
public static void toChange(){ staticA ="A3"; }
public static void toChange2(){ staticA ="A4"; }
}
class B {
public static final String staticB ; // 聲明與賦值分離
static{ staticB ="B"; }
}
九仞 九仞
2個月前 (06-14)
Smiley
類變量與實例變量的區別
類變量可在類中直接使用,實例變量需實例化後才能使用。
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public static void main(String[] args) {
tln(staticInt);
StaticTest test = new StaticTest();
tln(om);