卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

非靜態(tài)類怎么調(diào)用靜態(tài)方法 static定義的函數(shù),怎么使用?

static定義的函數(shù),怎么使用?靜態(tài)定義了變量的使用:一、靜態(tài)局部變量:1.靜態(tài)類的內(nèi)部變量和auto自動變量一樣是特定函數(shù)的局部變量(即沒有靜態(tài)聲明的局部變量),即變量只能在定義它的函數(shù)中使用,兩

static定義的函數(shù),怎么使用?

靜態(tài)定義了變量的使用:

一、靜態(tài)局部變量:

1.靜態(tài)類的內(nèi)部變量和auto自動變量一樣是特定函數(shù)的局部變量(即沒有靜態(tài)聲明的局部變量),即變量只能在定義它的函數(shù)中使用,兩個變量的作用域是一樣的;兩者的區(qū)別在于,auto自動變量會隨著函數(shù)被調(diào)用和退出而存在和消失,而靜態(tài)局部變量不會,無論其所在的函數(shù)是否被調(diào)用,它都會一直存在;然而,雖然變量仍然存在,但它不能被使用。如果再次調(diào)用定義它的函數(shù),它可以繼續(xù)使用,并且保存上次調(diào)用后留下的值。換句話說,靜態(tài)類型的內(nèi)部變量是一個只能在特定函數(shù)中使用,但總是占用存儲空間的變量。

2.如果在定義靜態(tài)變量的時候初始化了函數(shù)體,那么以后程序就不會初始化了(函數(shù)中出現(xiàn)的靜態(tài)變量基本類型的初始化語句只會在第一次調(diào)用時執(zhí)行)。但是,將初始值賦給自動變量是在調(diào)用函數(shù)時完成的,每次調(diào)用函數(shù)時再次賦予初始值相當(dāng)于執(zhí)行一個賦值語句。

3.靜態(tài)局部變量的初始化表達式必須是常量或常量表達式。即使局部靜態(tài)變量定義時沒有初始值,系統(tǒng)也會自動賦初值0(對于數(shù)值型變量)或空字符(對于字符型變量);靜態(tài)變量的初始值是0。對于自動變量auto,如果沒有賦值初始值,它的值將是一個不確定的值。

4.當(dāng)一個函數(shù)被多次調(diào)用,并且需要在調(diào)用之間保留一些變量的值時,可以考慮靜態(tài)局部變量。雖然全局變量也可以達到上述目的,但是全局變量有時會引起意想不到的副作用,所以使用局部靜態(tài)變量還是合適的。

注意:局部靜態(tài)變量占用內(nèi)存時間長,可讀性差,除非必要,盡量避免使用局部靜態(tài)變量。

第二,靜態(tài)全局變量

全局變量(外部變量)的描述以static開頭,形成靜態(tài)全局變量。

全局變量本身就是靜態(tài)存儲方法,靜態(tài)全局變量也是靜態(tài)存儲方法。

兩者在存儲上沒有區(qū)別。

雖然兩者的區(qū)別在于:

1.非靜態(tài)全局變量的范圍是整個源程序。當(dāng)一個源程序包含多個源文件時,非靜態(tài)全局變量在所有源文件中都有效。

2.靜態(tài)全局變量限制了它的作用域,即它只在定義該變量的源文件中有效,不能在同一源程序的其他源文件中使用。

由于靜態(tài)全局變量的作用域僅限于一個源文件,并且只能由源文件中的函數(shù)共享,因此可以避免在其他源文件中引起錯誤。

從上面的分析可以看出

把局部變量改成靜態(tài)變量就改變了它的存儲,也就是改變了它的生存期。

保持當(dāng)一個全局變量被改為靜態(tài)變量時,它的作用域也隨之改變,這就限制了它的使用范圍。

所以靜電在不同地方的作用是不一樣的。應(yīng)該引起重視。

靜態(tài)定義了變量的使用:

一、靜態(tài)局部變量:

1.靜態(tài)類的內(nèi)部變量和auto自動變量一樣是特定函數(shù)的局部變量(即沒有靜態(tài)聲明的局部變量),即變量只能在定義它的函數(shù)中使用,兩個變量的作用域是一樣的;兩者的區(qū)別在于,auto自動變量會隨著函數(shù)被調(diào)用和退出而存在和消失,而靜態(tài)局部變量不會,無論其所在的函數(shù)是否被調(diào)用,它都會一直存在;然而,雖然變量仍然存在,但它不能被使用。如果再次調(diào)用定義它的函數(shù),它可以繼續(xù)使用,并且保存上次調(diào)用后留下的值。換句話說,靜態(tài)類型的內(nèi)部變量是一個只能在特定函數(shù)中使用,但總是占用存儲空間的變量。

2.如果在定義靜態(tài)變量的時候初始化了函數(shù)體,那么以后程序就不會初始化了(函數(shù)中出現(xiàn)的靜態(tài)變量基本類型的初始化語句只會在第一次調(diào)用時執(zhí)行)。但是,將初始值賦給自動變量是在調(diào)用函數(shù)時完成的,每次調(diào)用函數(shù)時再次賦予初始值相當(dāng)于執(zhí)行一個賦值語句。

3.靜態(tài)局部變量的初始化表達式必須是常量或常量表達式。即使局部靜態(tài)變量定義時沒有初始值,系統(tǒng)也會自動賦初值0(對于數(shù)值型變量)或空字符(對于字符型變量);靜態(tài)變量的初始值是0。對于自動變量auto,如果沒有賦值初始值,它的值將是一個不確定的值。

4.當(dāng)一個函數(shù)被多次調(diào)用,并且需要在調(diào)用之間保留一些變量的值時,可以考慮靜態(tài)局部變量。雖然全局變量也可以達到上述目的,但是全局變量有時會引起意想不到的副作用,所以使用局部靜態(tài)變量還是合適的。

注意:局部靜態(tài)變量占用內(nèi)存時間長,可讀性差,除非必要,盡量避免使用局部靜態(tài)變量。

第二,靜態(tài)全局變量

全局變量(外部變量)的描述以static開頭,形成靜態(tài)全局變量。

全局變量本身就是靜態(tài)存儲方法,靜態(tài)全局變量也是靜態(tài)存儲方法。

兩者在存儲上沒有區(qū)別。

雖然兩者的區(qū)別在于:

1.非靜態(tài)全局變量的范圍是整個源程序。當(dāng)一個源程序包含多個源文件時,非靜態(tài)全局變量在所有源文件中都有效。

2.靜態(tài)全局變量限制了它的作用域,即它只在定義該變量的源文件中有效,不能在同一源程序的其他源文件中使用。

因為靜態(tài)全局變量的作用域僅限于一個源文件,并且只能由源文件中的函數(shù)共享,所以可以避免在其他源文件中使用。文件中出現(xiàn)錯誤。

把局部變量改成靜態(tài)變量就改變了它的存儲,也就是改變了它的生存期。

將全局變量更改為靜態(tài)變量會改變其范圍并限制其使用。

所以靜電在不同地方的作用是不一樣的。應(yīng)該引起重視。

多線程系統(tǒng)中如何使用靜態(tài)變量?

總體結(jié)論:java是線程安全的,即任何方法(包括靜態(tài)方法)都可以忽略線程,但有一個前提,不能有全局變量。如果有全局變量,就需要使用同步機制。

通過如下一組對比示例從頭開始解釋:

在多線程中使用靜態(tài)方發(fā)生什么?也就是說,多線程訪問同一個類的static靜態(tài)方怎么樣?會有線程安全問題嗎?

公共類測試{

公共靜態(tài)void操作(){

// ...做某事

}

}

事實證明,只要不在靜態(tài)函數(shù)中處理多線程的共享數(shù)據(jù),多線程訪問同一個靜態(tài)方法就不存在資源的問題。讓 讓我們看一個例子:

公共類StaticThread實現(xiàn)Runnable {

@覆蓋

公共無效運行(){

// TODO自動生成的方法存根

()

}

公共靜態(tài)void main(String[] args) {

for (int i 0 i lt 100 i ) {

新線程(新StaticThread())。開始()

}

}

}

公共類StaticAction {

公共靜態(tài)int i 0

公共靜態(tài)void print() {

int sum 0

for (int i 0 i lt 10 i ) {