請(qǐng)問java中static的作用
來源:新能源網(wǎng)
時(shí)間:2024-08-17 13:31:35
熱度:
請(qǐng)問java中static的作用【專家解說】:有時(shí)你希望定義一個(gè)類成員,使它的使用完全獨(dú)立于該類的任何對(duì)象。通常情況下,類成員必須通過它的類的對(duì)象訪問,但是可以創(chuàng)建這樣一個(gè)成員,它
【專家解說】:有時(shí)你希望定義一個(gè)類成員,使它的使用完全獨(dú)立于該類的任何對(duì)象。通常情況下,類成員必須通過它的類的對(duì)象訪問,但是可以創(chuàng)建這樣一個(gè)成員,它能夠被它自己使用,而不必引用特定的實(shí)例。在成員的聲明前面加上關(guān)鍵字static(靜態(tài)的)就能創(chuàng)建這樣的成員。如果一個(gè)成員被聲明為static,它就能夠在它的類的任何對(duì)象創(chuàng)建之前被訪問,而不必引用任何對(duì)象。你可以將方法和變量都聲明為static。static 成員的最常見的例子是main( ) 。因?yàn)樵诔绦蜷_始執(zhí)行時(shí)必須調(diào)用main() ,所以它被聲明為static。
聲明為static的變量實(shí)質(zhì)上就是全局變量。當(dāng)聲明一個(gè)對(duì)象時(shí),并不產(chǎn)生static變量的拷貝,而是該類所有的實(shí)例變量共用同一個(gè)static變量。聲明為static的方法有以下幾條限制:
·
它們僅能調(diào)用其他的static 方法。
·
它們只能訪問static數(shù)據(jù)。
·
它們不能以任何方式引用this 或super(關(guān)鍵字super 與繼承有關(guān),在下一章中描述)。
如果你需要通過計(jì)算來初始化你的static變量,你可以聲明一個(gè)static塊,Static 塊僅在該類被加載時(shí)執(zhí)行一次。下面的例子顯示的類有一個(gè)static方法,一些static變量,以及一個(gè)static 初始化塊:
// Demonstrate static variables,methods,and blocks.
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
static {
System.out.println("Static block initialized.");
b = a * 4;
}
public static void main(String args[]) {
meth(42);
}
}
一旦UseStatic 類被裝載,所有的static語(yǔ)句被運(yùn)行。首先,a被設(shè)置為3,接著static 塊執(zhí)行(打印一條消息),最后,b被初始化為a*4 或12。然后調(diào)用main(),main() 調(diào)用meth() ,把值42傳遞給x。3個(gè)println ( ) 語(yǔ)句引用兩個(gè)static變量a和b,以及局部變量x 。
注意:在一個(gè)static 方法中引用任何實(shí)例變量都是非法的。
下面是該程序的輸出:
Static block initialized.
x = 42
a = 3
b = 12
在定義它們的類的外面,static 方法和變量能獨(dú)立于任何對(duì)象而被使用。這樣,你只要在類的名字后面加點(diǎn)號(hào)運(yùn)算符即可。例如,如果你希望從類外面調(diào)用一個(gè)static方法,你可以使用下面通用的格式:
classname.method( )
這里,classname 是類的名字,在該類中定義static方法??梢钥吹?,這種格式與通過對(duì)象引用變量調(diào)用非static方法的格式類似。一個(gè)static變量可以以同樣的格式來訪問——類名加點(diǎn)號(hào)運(yùn)算符。這就是Java 如何實(shí)現(xiàn)全局功能和全局變量的一個(gè)控制版本。
下面是一個(gè)例子。在main() 中,static方法callme() 和static 變量b在它們的類之外被訪問。
class StaticDemo {
static int a = 42;
static int b = 99;
static void callme() {
System.out.println("a = " + a);
}
}
class StaticByName {
public static void main(String args[]) {
StaticDemo.callme();
System.out.println("b = " + StaticDemo.b);
}
}
下面是該程序的輸出:
a = 42
b = 99
-
發(fā)動(dòng)機(jī)的基本作用是什么2024-08-17
-
孢子宇宙階段10種職業(yè)技能作用2024-08-17
-
太陽(yáng)能有多少作用2024-08-17
-
磁感應(yīng)式電子點(diǎn)火系統(tǒng)各組成的結(jié)構(gòu)特點(diǎn) 作用優(yōu)缺點(diǎn)2024-08-17
-
生物,免疫學(xué),調(diào)理作用的名詞解釋?2024-08-17
-
植物中有哪些微生物?微生物對(duì)林業(yè)有哪些作用?2024-08-17
-
植物中有哪些微生物?微生物對(duì)林業(yè)有哪些作用?2024-08-17
-
led光觸媒滅蚊器是否有作用2024-08-17
-
愛達(dá)屋空氣凈化器的光觸媒殺菌有什么作用2024-08-17
-
比優(yōu)迪 光觸媒滅蚊燈好用嗎?我用了幾天,真的沒什么作用。有用過的人嗎?出來說一下。2024-08-17
-
無負(fù)壓供水設(shè)備倒流防止器有什么作用?2024-08-17
-
太陽(yáng)能電池透明電極是什么,它有什么功能和作用2024-08-17
-
如果濕度不夠,砼會(huì)失水干燥而影響水泥水化作用的正常進(jìn)行。2024-08-17
-
太陽(yáng)能有什么作用2024-08-17
-
太陽(yáng)能硅片有什么作用?2024-08-17