- 相關(guān)推薦
Java 中靜態(tài)變量和實(shí)例變量區(qū)別
Java的標(biāo)準(zhǔn)指的是一種作為應(yīng)用層封裝的標(biāo)準(zhǔn),使用Java可以調(diào)用一些底層的操作。下面是小編分享的Java 中靜態(tài)變量和實(shí)例變量區(qū)別,歡迎大家參考!
靜態(tài)變量屬于類(lèi),該類(lèi)不生產(chǎn)對(duì)象,通過(guò)類(lèi)名就可以調(diào)用靜態(tài)變量。
實(shí)例變量屬于該類(lèi)的對(duì)象,必須產(chǎn)生該類(lèi)對(duì)象,才能調(diào)用實(shí)例變量。
在程序運(yùn)行時(shí)的區(qū)別:
實(shí)例變量屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象,其中的實(shí)例變量才會(huì)被分配空間,才能使用這個(gè)實(shí)例變量。
靜態(tài)變量不屬于某個(gè)實(shí)例對(duì)象,而是屬于類(lèi),所以也稱(chēng)為類(lèi)變量,只要程序加載了類(lèi)的字節(jié)碼,不用創(chuàng)建任何實(shí)例對(duì)象,靜態(tài)變量就會(huì)被分配空間,靜態(tài)變量就可以被使用了。
總之,實(shí)例變量必須創(chuàng)建對(duì)象后才可以通過(guò)這個(gè)對(duì)象來(lái)使用,靜態(tài)變量則可以直接使用類(lèi)名來(lái)引用。
例如,對(duì)于下面的程序,無(wú)論創(chuàng)建多少個(gè)實(shí)例對(duì)象,
永遠(yuǎn)都只分配了一個(gè) staticInt 變量,并且每創(chuàng)建一個(gè)實(shí)例對(duì)象,這個(gè) staticInt 就會(huì)加 1;但是,每創(chuàng)建一個(gè)實(shí)例對(duì)象,就會(huì)分配一個(gè) random,
即可能分配多個(gè) random ,并且每個(gè) random 的值都只自加了1次。
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
System.out.println("staticInt = "+staticInt+" random = "+random);
}
public static void main(String[] args) {
StaticTest test = new StaticTest();
StaticTest test2 = new StaticTest();
}
}
執(zhí)行以上程序,輸出結(jié)果為:
staticInt = 3 random = 3
staticInt = 4 random = 3
h七寶 h七寶
135***8724@qq.com
參考地址5個(gè)月前 (03-09)
大白小愛(ài)
362***275@qq.com靜態(tài)變量是用來(lái)聲明規(guī)則的,一旦固定都是用用來(lái)引用的,類(lèi)似社會(huì)中的法律,規(guī)定好后你只能拿來(lái)說(shuō)。但是也可以改的,通過(guò)重新的聲明法律就行。
大白小愛(ài) 大白小愛(ài)
362***275@qq.com5個(gè)月前 (03-25)
stinkaroo
190***276@qq.comjava 實(shí)例變量在整個(gè)類(lèi)內(nèi)部是可訪問(wèn)的,而不管實(shí)例變量聲明在類(lèi)的哪個(gè)位置。
import java.io.*;
public class Employee{
public Employee (String empName){
name = empName;
}
public void setSalary(double empSal){
salary = empSal;
}
public void printEmp(){
System.out.println("name:" + name);
System.out.println("salary:" + salary);
}
public static void main(String args[]){
Employee empOne = new Employee("RUNOOB");
empOne.setSalary(1000);
empOne.printEmp();
System.out.println(empOne.salary);
}
public String name;
private double salary;
}
比如在上面代碼中,盡管實(shí)例變量聲明在類(lèi)的尾部,在之前方法中仍可訪問(wèn)。
stinkaroo stinkaroo
190***276@qq.com3個(gè)月前 (05-09)
九仞
528***187@qq.com類(lèi)變量賦值方法
無(wú)final修飾,聲明時(shí)賦值,構(gòu)造器中賦值,靜態(tài)語(yǔ)句塊或靜態(tài)方法賦值
有final修飾,聲明時(shí)賦值,聲明與賦值分開(kāi)可在靜態(tài)語(yǔ)句塊中賦值
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public StaticTest() {
staticInt++;
random++;
}
public static void main(String[] args) {
System.out.println("類(lèi)變量與對(duì)象變量的值變化");
StaticTest test = new StaticTest();
System.out.println(" 實(shí)例1:staticInt:" + test.staticInt + "----random:" + test.random);
StaticTest test2 = new StaticTest();
System.out.println(" 實(shí)例2:staticInt:" + test.staticInt + "----random:" + test.random);
System.out.println("靜態(tài)變量賦值");
System.out.println(" 靜態(tài)語(yǔ)句塊起作用:" + A.staticA);
A a = new A();
System.out.println(" 構(gòu)造器起作用:" + a.staticA);
a.toChange();
System.out.println(" 靜態(tài)方法1起作用:" + A.staticA);
a.toChange2();
System.out.println(" 靜態(tài)方法2起作用:" + A.staticA);
System.out.println("常量賦值");
System.out.println(" 靜態(tài)語(yǔ)句賦值:" + B.staticB);
}
}
class A {
public static String staticA ="A" ;
//靜態(tài)語(yǔ)句塊修改值
static{ staticA ="A1"; }
//構(gòu)造器修改值
public A (){ staticA ="A2"; }
//靜態(tài)方法起作用
public static void toChange(){ staticA ="A3"; }
public static void toChange2(){ staticA ="A4"; }
}
class B {
public static final String staticB ; // 聲明與賦值分離
static{ staticB ="B"; }
}
九仞 九仞
528***187@qq.com2個(gè)月前 (06-14)
Smiley
448***628@qq.com類(lèi)變量與實(shí)例變量的區(qū)別
類(lèi)變量可在類(lèi)中直接使用,實(shí)例變量需實(shí)例化后才能使用。
public class StaticTest {
private static int staticInt = 2;
private int random = 2;
public static void main(String[] args) {
System.out.println(staticInt);
StaticTest test = new StaticTest();
System.out.println(test.random);
【Java 中靜態(tài)變量和實(shí)例變量區(qū)別】相關(guān)文章:
Java常量和變量06-17
php靜態(tài)成員變量06-22
java變量和常量是什么08-25
Java中靜態(tài)綁定和動(dòng)態(tài)綁定的區(qū)別08-14
Java入門(mén)教程:常量和變量09-01
java常量和變量入門(mén)教程09-07
java變量和常量是什么介紹06-03