詳解Java中static關(guān)鍵字的使用和原理
概述
關(guān)于 static 關(guān)鍵字的使用,它可以用來修飾的成員變量和成員方法,被修飾的成員是屬于類的,而不是單單是屬 于某個(gè)對(duì)象的。也就是說,既然屬于類,就可以不靠創(chuàng)建對(duì)象來調(diào)用了。
定義和使用格式
類變量
當(dāng) static 修飾成員變量時(shí),該變量稱為類變量。該類的每個(gè)對(duì)象都共享同一個(gè)類變量的值。任何對(duì)象都可以更改 該類變量的值,但也可以在不創(chuàng)建該類的對(duì)象的情況下對(duì)類變量進(jìn)行操作。 類變量:使用 static關(guān)鍵字修飾的成員變量。 定義格式:
static 數(shù)據(jù)類型 變量名;
舉例:
static int id;
靜態(tài)方法
當(dāng)static 修飾成員方法時(shí),該方法稱為類方法 。靜態(tài)方法在聲明中有static ,建議使用類名來調(diào)用,而不需要 創(chuàng)建類的對(duì)象。調(diào)用方式非常簡(jiǎn)單。 類方法:使用 static關(guān)鍵字修飾的成員方法,習(xí)慣稱為靜態(tài)方法。 定義格式:
修飾符 static 返回值類型 方法名 (參數(shù)列表){ // 執(zhí)行語(yǔ)句 }
舉例:在Student類中定義靜態(tài)方法
public static void showNum() {
System.out.println("num:" + numberOfStudent);
}
靜態(tài)方法調(diào)用的注意事項(xiàng):
- 靜態(tài)方法可以直接訪問類變量和靜態(tài)方法。
- 靜態(tài)方法不能直接訪問普通成員變量或成員方法。反之,成員方法可以直接訪問類變量或靜態(tài)方法。
- 靜態(tài)方法中,不能使用this關(guān)鍵字。
小貼士:靜態(tài)方法只能訪問靜態(tài)成員。
public class MyClass {
int num; // 成員變量
static int numStatic; // 靜態(tài)變量
// 成員方法
public void method() {
System.out.println("這是一個(gè)成員方法。");
// 成員方法可以訪問成員變量
System.out.println(num);
// 成員方法可以訪問靜態(tài)變量
System.out.println(numStatic);
}
// 靜態(tài)方法
public static void methodStatic() {
System.out.println("這是一個(gè)靜態(tài)方法。");
// 靜態(tài)方法可以訪問靜態(tài)變量
System.out.println(numStatic);
// 靜態(tài)不能直接訪問非靜態(tài)
// System.out.println(num); // 錯(cuò)誤寫法!
// 靜態(tài)方法中不能使用this關(guān)鍵字。
// System.out.println(this); // 錯(cuò)誤寫法!
}
}
調(diào)用格式
被static修飾的成員可以并且建議通過類名直接訪問。雖然也可以通過對(duì)象名訪問靜態(tài)成員,原因即多個(gè)對(duì)象均屬 于一個(gè)類,共享使用同一個(gè)靜態(tài)成員,但是不建議,會(huì)出現(xiàn)警告信息。 格式:
// 訪問類變量 類名.類變量名; // 調(diào)用靜態(tài)方法 類名.靜態(tài)方法名(參數(shù));
靜態(tài)原理圖解
static 修飾的內(nèi)容:
- 是隨著類的加載而加載的,且只加載一次。
- 存儲(chǔ)于一塊固定的內(nèi)存區(qū)域(靜態(tài)區(qū)),所以,可以直接被類名調(diào)用。
- 它優(yōu)先于對(duì)象存在,所以,可以被所有對(duì)象共享。

靜態(tài)代碼塊
靜態(tài)代碼塊:定義在成員位置,使用static修飾的代碼塊{ }。 位置:類中方法外。 執(zhí)行:隨著類的加載而執(zhí)行且執(zhí)行一次,優(yōu)先于main方法和構(gòu)造方法的執(zhí)行。 格式:
public class ClassName{ static { // 執(zhí)行語(yǔ)句 } }
作用:給類變量進(jìn)行初始化賦值。用法演示,代碼如下:
public class Game {
public static int number;
public static ArrayList<String> list;
static {
// 給類變量賦值
number = 2;
list = new ArrayList<String>();
// 添加元素到集合中
list.add("張三");
list.add("李四");
}
}小貼士: static 關(guān)鍵字,可以修飾變量、方法和代碼塊。在使用的過程中,其主要目的還是想在不創(chuàng)建對(duì)象的情況 下,去調(diào)用方法。
到此這篇關(guān)于詳解Java中static關(guān)鍵字的使用和原理的文章就介紹到這了,更多相關(guān)Java static關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis-Plus實(shí)現(xiàn)公共字段自動(dòng)填充功能詳解
在開發(fā)中經(jīng)常遇到多個(gè)實(shí)體類有共同的屬性字段,這些字段屬于公共字段,也就是很多表中都有這些字段,能不能對(duì)于這些公共字段在某個(gè)地方統(tǒng)一處理,來簡(jiǎn)化開發(fā)呢?MyBatis-Plus就提供了這一功能,本文就來為大家詳細(xì)講講2022-08-08
MyBatis無(wú)縫轉(zhuǎn)MyBatis-plus的基本使用
本文介紹了使用MyBatis-plus來優(yōu)化MyBatis的使用,包括引入依賴、改造Mapper、實(shí)體類注解使用、Service層方法改造等,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10
Java如何使用流去除集合中某個(gè)字段為空的對(duì)象
這篇文章主要給大家介紹了關(guān)于Java如何使用流去除集合中某個(gè)字段為空的對(duì)象,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-08-08
SpringBoot實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳功能詳解
在處理大文件傳輸或網(wǎng)絡(luò)不穩(wěn)定的情況下,文件斷點(diǎn)續(xù)傳功能顯得尤為重要,本文將詳細(xì)介紹如何使用Spring Boot實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳功能,需要的可以了解下2025-04-04
java 使用策略模式操作JDBC數(shù)據(jù)庫(kù)
這篇文章主要介紹了java 使用策略模式操作JDBC數(shù)據(jù)庫(kù)的相關(guān)資料,這里提供實(shí)例實(shí)現(xiàn)對(duì)JDBC數(shù)據(jù)庫(kù)的操作增刪改查的功能,需要的朋友可以參考下2017-08-08
springcloud整合到項(xiàng)目中無(wú)法啟動(dòng)報(bào)錯(cuò)Failed to start bean&n
這篇文章主要介紹了springcloud整合到項(xiàng)目中無(wú)法啟動(dòng)報(bào)錯(cuò)Failed to start bean 'eurekaAutoServiceRegistration'問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
java接入創(chuàng)藍(lán)253短信驗(yàn)證碼的實(shí)例講解
下面小編就為大家分享一篇java接入創(chuàng)藍(lán)253短信驗(yàn)證碼的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01

