亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

通俗來(lái)講,歸為幾點(diǎn):

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

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

修飾成員變量

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

  • 靜態(tài)變量:被所有對(duì)象共享,內(nèi)存中只有一個(gè)副本,當(dāng)且僅當(dāng)類(lèi)被初次加載時(shí)被初始化一次
  • 非靜態(tài)變量:是對(duì)象擁有的,當(dāng)對(duì)象被創(chuàng)建時(shí)被初始化,內(nèi)存中存在多個(gè)副本且互不影響
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修飾的方法稱(chēng)為靜態(tài)方法。靜態(tài)方法可以直接調(diào)用類(lèi)的靜態(tài)變量和其他靜態(tài)方法,不能直接調(diào)用成員變量和非靜態(tài)方法(除非通過(guò)對(duì)象調(diào)用)。

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

靜態(tài)代碼塊

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

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

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

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(); // 通過(guò)靜態(tài)導(dǎo)入的方法不需類(lèi)名直接調(diào)用
		StaticTest.method2();
	}
}

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

相關(guān)文章

  • java和jsp中的request使用示例

    java和jsp中的request使用示例

    這篇文章主要介紹了java和jsp中的request使用示例,需要的朋友可以參考下
    2014-02-02
  • Java中常見(jiàn)延時(shí)隊(duì)列的實(shí)現(xiàn)方案小結(jié)(建議收藏)

    Java中常見(jiàn)延時(shí)隊(duì)列的實(shí)現(xiàn)方案小結(jié)(建議收藏)

    延時(shí)隊(duì)列它要具有隊(duì)列的特性,再給它附加一個(gè)延遲消費(fèi)隊(duì)列消息的功能,也就是說(shuō)可以指定隊(duì)列中的消息在哪個(gè)時(shí)間點(diǎn)被消費(fèi),這篇文章主要介紹了Java中常見(jiàn)延時(shí)隊(duì)列的實(shí)現(xiàn)方案總結(jié),需要的朋友可以參考下
    2024-04-04
  • Spring Boot優(yōu)化后啟動(dòng)速度快到飛起技巧示例

    Spring Boot優(yōu)化后啟動(dòng)速度快到飛起技巧示例

    這篇文章主要為大家介紹了Spring Boot優(yōu)化后啟動(dòng)速度快到飛起的技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Java Agent入門(mén)學(xué)習(xí)之動(dòng)態(tài)修改代碼

    Java Agent入門(mén)學(xué)習(xí)之動(dòng)態(tài)修改代碼

    這篇文章主要給大家分享了Java Agent入門(mén)學(xué)習(xí)之動(dòng)態(tài)修改代碼的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • springboot中.yml文件參數(shù)的讀取方式

    springboot中.yml文件參數(shù)的讀取方式

    這篇文章主要介紹了springboot中.yml文件參數(shù)的讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線購(gòu)書(shū)商城系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線購(gòu)書(shū)商城系統(tǒng)的實(shí)現(xiàn)流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+mysql+servlet+ajax實(shí)現(xiàn)一個(gè)在線購(gòu)書(shū)商城系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java中的static關(guān)鍵字全面解析

    Java中的static關(guān)鍵字全面解析

    這篇文章主要介紹了Java中的static關(guān)鍵字全面解析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 詳解Spring 注解之@Import 注入的各種花活

    詳解Spring 注解之@Import 注入的各種花活

    這篇文章主要介紹了詳解Spring 注解之@Import 注入的各種花活,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • RabbitMQ進(jìn)階之消息可靠性詳解

    RabbitMQ進(jìn)階之消息可靠性詳解

    這篇文章主要介紹了RabbitMQ進(jìn)階之消息可靠性詳解,abbitmq消息的投遞過(guò)程中,怎么確保消息能不丟失,這是一個(gè)很重要的問(wèn)題,哪怕我們做了Rabbitmq持久化,也不能保證我們的業(yè)務(wù)消息不會(huì)被丟失,需要的朋友可以參考下
    2023-08-08
  • Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例

    Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的模糊匹配某文件夾下的文件并刪除功能,涉及java針對(duì)目錄與文件的遍歷、匹配、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論