最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的static關(guān)鍵字深入理解

 更新時間:2021年03月01日 17:03:57   作者:smart_1234  
這篇文章主要介紹了Java中的static關(guān)鍵字深入理解,文字和代碼列舉了實際例子,有感興趣的同學(xué)可以研究下

在學(xué)習(xí)Java以來很長一段時間,我都不能理解為什么修飾一個方法的關(guān)鍵字各不相同,為什么有的方法可以直接調(diào)用,而有的方法需要用對象才能調(diào)用。毫不夸張的說,最近一次讓我決定去整理清楚static關(guān)鍵字,是因為在寫jdbc工具類時,其中通過靜態(tài)代碼塊來實現(xiàn)加載驅(qū)動才讓我對它有了新的認(rèn)識。

通俗來講,歸為幾點:

  • 由static關(guān)鍵字修飾的方法或成員變量,不需依賴對象,就可直接訪問。(通過 類名.方法名() 或 類名.屬性 直接調(diào)用)
  • static關(guān)鍵字不會影響到變量或方法的作用域
  • static關(guān)鍵字不允許修飾局部變量
  • 靜態(tài)方法中不能使用this
  • 無論方法還是變量:由static修飾的靜態(tài)方法不能訪問非靜態(tài)的方法或成員變量,但是反之,非靜態(tài)的方法可以訪問靜態(tài)的或非靜態(tài)的。
  • static 關(guān)鍵字避免了先要new出對象的繁瑣和資源消耗,因此常被用在工具類中。

下面來仔細(xì)介紹以下static關(guān)鍵字的作用,主要為以下四個方面:

修飾成員變量

static關(guān)鍵字修飾的成員變量稱為靜態(tài)成員變量,也稱靜態(tài)變量。有了靜態(tài)變量與之對應(yīng)的就是非靜態(tài)變量

  • 靜態(tài)變量:被所有對象共享,內(nèi)存中只有一個副本,當(dāng)且僅當(dāng)類被初次加載時被初始化一次
  • 非靜態(tài)變量:是對象擁有的,當(dāng)對象被創(chuàng)建時被初始化,內(nèi)存中存在多個副本且互不影響
public class Test{
	public static void main(String[] args) {
		System.out.println(Person.name);
		System.out.println(new Person().age);
	}	
}
class Person{
	static String name; 
	int age;
}

修飾方法

static修飾的方法稱為靜態(tài)方法。靜態(tài)方法可以直接調(diào)用類的靜態(tài)變量和其他靜態(tài)方法,不能直接調(diào)用成員變量和非靜態(tài)方法(除非通過對象調(diào)用)。

class A {
	static {
		System.out.println("靜態(tài)代碼塊");
	}
	static final int i;
	int j;
	static void method() {
		System.out.println(i);//直接訪問靜態(tài)變量
		System.out.println(new D().j);//靜態(tài)方法中訪問非靜態(tài)變量需要通過對象調(diào)用
		
		method1();//直接調(diào)用靜態(tài)方法
		new D().method2();//靜態(tài)方法中訪問非靜態(tài)方法需要通過對象調(diào)用
	}
	
	static void method1() {
		System.out.println(i);//靜態(tài)方法中直接訪問靜態(tài)變量
	}
	void method2() {
		System.out.println(i);//非靜態(tài)方法中可以直接訪問靜態(tài)變量
	}
}

靜態(tài)代碼塊

static修飾的代碼塊叫做靜態(tài)代碼塊。當(dāng)類初次被加載時,會按照代碼塊順序執(zhí)行一次。用來優(yōu)化程序。
例如在開頭提到的用在JDBC工具類中,使用靜態(tài)代碼塊來加載資源,當(dāng)類被初始化時只執(zhí)行一次。
注:構(gòu)造方法用于對象的初始化,靜態(tài)代碼塊用于類的初始化操作。

靜態(tài)導(dǎo)包

相比于以上三種,第四種是我之前沒有接觸過的。
在用import導(dǎo)入包或者類時,可以用static修飾包名或者類,表示靜態(tài)導(dǎo)入。不同于非static導(dǎo)入,采用static導(dǎo)入包后,在不與當(dāng)前類的方法名沖突的情況下,無需使用“類名.方法名”的方法去調(diào)用類方法了,直接可以采用"方法名"去調(diào)用類方法,就好像是該類自己的方法一樣使用即可。

public class Test {
	static void method1() {
		System.out.println("static method1");
	}
	
	static void method2() {
		System.out.println("static method2");
	}
}

靜態(tài)導(dǎo)入之后:

import static com.liu.stuatic.Test.method1;

public class Client {
	public static void main(String[] args) {
		method1(); // 通過靜態(tài)導(dǎo)入的方法不需類名直接調(diào)用
		StaticTest.method2();
	}
}

到此這篇關(guān)于Java中的static關(guān)鍵字深入理解的文章就介紹到這了,更多相關(guān)Java中的static關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用SSE進行實時通知前端的實現(xiàn)代碼

    SpringBoot使用SSE進行實時通知前端的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot使用SSE進行實時通知前端,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作

    mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作

    這篇文章主要介紹了mybatis分割字符串并循環(huán),實現(xiàn)in多個參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java關(guān)鍵詞final示例解讀

    Java關(guān)鍵詞final示例解讀

    這篇文章主要介紹了Java關(guān)鍵詞final解讀,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Java基礎(chǔ)之練習(xí)打印三角形

    Java基礎(chǔ)之練習(xí)打印三角形

    這篇文章主要介紹了Java基礎(chǔ)之練習(xí)打印三角形,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringMvc定制化深入探究原理

    SpringMvc定制化深入探究原理

    SpringMVC是一種基于Java,實現(xiàn)了Web MVC設(shè)計模式,請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進行職責(zé)解耦,這篇文章主要介紹了SpringMvc定制化原理
    2022-10-10
  • SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    本文主要介紹了SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • springboot?pom文件加入監(jiān)控依賴后沒有起作用的解決

    springboot?pom文件加入監(jiān)控依賴后沒有起作用的解決

    這篇文章主要介紹了springboot?pom文件加入監(jiān)控依賴后沒有起作用的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Jenkins環(huán)境搭建之下載與安裝過程

    Jenkins環(huán)境搭建之下載與安裝過程

    Jenkins是一個功能強大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項目,集成Jenkins可以用于一些測試和部署技術(shù),對Jenkins環(huán)境搭建之下載與安裝過程感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • Java日期時間與正則表達式超詳細(xì)整理(適合新手入門)

    Java日期時間與正則表達式超詳細(xì)整理(適合新手入門)

    如果使用得當(dāng),正則表達式是匹配各種模式的強大工具,下面這篇文章主要給大家介紹了關(guān)于Java日期時間與正則表達式超詳細(xì)整理的相關(guān)資料,本文非常適合新手入門,需要的朋友可以參考下
    2023-04-04
  • Spring中的AOP操作你了解嗎

    Spring中的AOP操作你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Spring中的AOP操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

宽甸| 平邑县| 赣州市| 伊吾县| 温宿县| 濮阳市| 罗江县| 阿拉尔市| 刚察县| 中西区| 铜山县| 乳山市| 凉城县| 安西县| 永胜县| 湘潭县| 盖州市| 渭南市| 青浦区| 谢通门县| 乌鲁木齐县| 家居| 枞阳县| 江口县| 蒙山县| 保亭| 长海县| 保康县| 怀柔区| 松原市| 潮安县| 武隆县| 华容县| 新田县| 辽源市| 抚州市| 繁峙县| 麟游县| 石狮市| 巴彦淖尔市| 宁波市|