Java學(xué)習(xí)之局部變量、成員變量舉例詳解
1. 什么是成員變量?什么是局部變量?
局部變量和成員變量是兩種常見的變量類型,它們在作用域、生命周期、初始化等方面有顯著的區(qū)別。理解這兩者的區(qū)別對于編寫清晰和高效的 Java 程序至關(guān)重要。
創(chuàng)建局部變量,然后打印局部變量:
public static void main(String[] args){ String brand; // 品牌 String color ; // 顏色 int memory; // 內(nèi)存 System.out.println("brand:"+ brand); System.out.println("color:"+ color); System.out.println("memory:"+ memory); }
不初始化就會(huì)報(bào)錯(cuò)。
創(chuàng)建一個(gè)類,在類中創(chuàng)建成員變量,然后創(chuàng)建對象,打印出對象的成員變量:
public class Phone { String brand; // 品牌 String color ; // 顏色 int memory; // 內(nèi)存 // 程序的開始 public static void main(String[] args){ Phone p = new Phone(); System.out.println("brand:"+ p.brand); System.out.println("color:"+p.color); System.out.println("memory:"+p.memory); } }
不初始化,而打印出了值。
通過上述的兩個(gè)測試,我們可以發(fā)現(xiàn),在類中創(chuàng)建的成員變量有默認(rèn)值,即,成員變量不用初始化就會(huì)有一個(gè)值,而局部變量必須手動(dòng)賦值。
2. 成員變量
2.1 定義和特點(diǎn)
成員變量是類中的字段(屬性),它們是類的組成部分。
成員變量有兩種類型:
- 實(shí)例變量 (Instance Variables):屬于類的實(shí)例(對象),每個(gè)對象有一份獨(dú)立的實(shí)例變量。
- 類變量 (Class Variables):使用 static 關(guān)鍵字聲明,屬于類本身,而不是類的任何實(shí)例。
2.2 實(shí)例變量
- 實(shí)例變量是類中定義的字段,每個(gè)類的實(shí)例(對象)都有自己的實(shí)例變量副本。
- 實(shí)例變量在對象創(chuàng)建時(shí)被分配內(nèi)存,每個(gè)對象都有獨(dú)立的實(shí)例變量。
- 實(shí)例變量具有默認(rèn)值:如果未顯式初始化,實(shí)例變量會(huì)根據(jù)其類型自動(dòng)賦予默認(rèn)值(例如,int 類型默認(rèn)為 0,boolean 默認(rèn)為 false,對象引用類型默認(rèn)為 null)。
- 實(shí)例變量在類的實(shí)例化期間存在,當(dāng)對象被銷毀時(shí),實(shí)例變量也會(huì)被銷毀。
示例:
public class Example { private int x; // 實(shí)例變量 默認(rèn)值為0 public void printX() { System.out.println(x); // 訪問實(shí)例變量 } }
在這個(gè)例子中,x
是實(shí)例變量。每當(dāng)你創(chuàng)建一個(gè) Example
對象時(shí),都會(huì)為每個(gè)對象分配一個(gè) x 變量,并且每個(gè)對象有自己的 x 值。
2.3 類變量
- 類變量使用 static 關(guān)鍵字聲明,它們屬于類本身,而不是類的實(shí)例。
- 類變量在類加載時(shí)就會(huì)被初始化,并且所有類的實(shí)例共享同一個(gè)類變量。
- 類變量有默認(rèn)值,如果未顯式初始化,它們也會(huì)被賦予默認(rèn)值(與實(shí)例變量相同)。
示例:
public class Example { static int count; // 類變量 public void increment() { count++; // 訪問類變量 } }
在這個(gè)例子中,count
是類變量。所有Example
類的實(shí)例共享同一個(gè) count 變量,類變量在類加載時(shí)初始化。
2.4 成員變量的默認(rèn)值
數(shù)據(jù)類型 | 默認(rèn)值 |
---|---|
byte | 0 |
char | ‘\u0000’ |
short | 0 |
int | 0 |
long | 0L |
boolean | false |
float | 0.0f |
double | 0.0 |
reference | null |
3. 局部變量
3.1 定義和特點(diǎn)
- 局部變量是在方法、構(gòu)造方法、或者代碼塊內(nèi)定義的變量。
- 局部變量的作用域僅限于它們被聲明的代碼塊或方法。
- 局部變量沒有默認(rèn)值,必須在使用前初始化。
- 局部變量的生命周期從其定義開始,到方法或者代碼塊執(zhí)行完畢時(shí)結(jié)束。換句話說,局部變量只存在于方法或代碼塊的執(zhí)行過程中,一旦方法返回或代碼塊執(zhí)行完畢,局部變量會(huì)被銷毀。
3.2 示例和說明
public class Example { public void myMethod() { int x = 10; // x 是局部變量 必須要被初始化 System.out.println(x); // 可以使用局部變量 } }
在這個(gè)例子中,x
是局部變量,它只在 myMethod()
方法內(nèi)部存在。當(dāng)方法執(zhí)行完畢,x
會(huì)被銷毀。
關(guān)鍵特點(diǎn):
- 作用域:局部變量的作用域限制在其所在的方法、構(gòu)造方法或代碼塊內(nèi)。
- 初始化:局部變量在使用前必須被顯式初始化。否則,編譯器會(huì)報(bào)錯(cuò)。
- 生命周期:局部變量的生命周期是方法或者代碼塊的執(zhí)行周期,即方法/代碼塊開始執(zhí)行時(shí)創(chuàng)建,結(jié)束時(shí)銷毀。
注意事項(xiàng):
- 局部變量的作用域僅限于方法內(nèi),因此它不能被方法外部訪問。
- 局部變量不能聲明為 static,因?yàn)樗纳芷谂c方法的調(diào)用有關(guān),而不是與類的實(shí)例或類本身的生命周期有關(guān)。
4. 局部變量 vs 成員變量
特性 | 局部變量 | 成員變量 (實(shí)例變量/類變量) |
---|---|---|
定義位置 | 方法、構(gòu)造器、代碼塊中 | 類中,方法外 |
初始化 | 必須顯式初始化 | 會(huì)自動(dòng)初始化為默認(rèn)值(實(shí)例變量/類變量) |
作用域 | 僅限于所在的方法/代碼塊 | 實(shí)例變量:限于對象;類變量:限于類 |
生命周期 | 方法/代碼塊執(zhí)行期間 | 實(shí)例變量:對象的生命周期;類變量:類的生命周期 |
訪問修飾符 | 無法使用訪問修飾符 | 可以使用訪問修飾符 public 、private 等 |
是否與類相關(guān) | 無 | 實(shí)例變量與對象相關(guān);類變量與類本身相關(guān) |
靜態(tài)關(guān)鍵字 | 不可以是 static | 類變量必須是 static |
局部變量:只在方法、構(gòu)造方法、或代碼塊內(nèi)有效,必須顯式初始化,并且生命周期僅限于方法或代碼塊執(zhí)行時(shí)。
成員變量:包括實(shí)例變量和類變量,實(shí)例變量屬于對象,類變量屬于類,成員變量有默認(rèn)值,生命周期較長,且可以使用訪問修飾符來控制訪問權(quán)限。
總結(jié)
到此這篇關(guān)于Java學(xué)習(xí)之局部變量、成員變量的文章就介紹到這了,更多相關(guān)Java局部變量、成員變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)ArrayList排序的方法詳解
Java中常見的ArrayList排序方法主要為三種:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文將詳解這三者的使用,需要的可以參考一下2022-05-05解析Java中所有錯(cuò)誤和異常的父類java.lang.Throwable
這篇文章主要介紹了Java中所有錯(cuò)誤和異常的父類java.lang.Throwable,文章中簡單地分析了其源碼,說明在代碼注釋中,需要的朋友可以參考下2016-03-03java如何讀取某個(gè)文件夾中的全部文件(包括子文件夾)
這篇文章主要介紹了java如何讀取某個(gè)文件夾中的全部文件(包括子文件夾),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12nacos使用占位符${}進(jìn)行參數(shù)配置的方法
這篇文章主要介紹了nacos如何使用占位符${}進(jìn)行參數(shù)配置,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12