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