Java成員變量默認(rèn)值原理詳解
如果我們不做任何初始化工作,變量具有什么默認(rèn)值,或者是否具有默認(rèn)值呢?
其實(shí),成員變量在創(chuàng)建時(shí),系統(tǒng)會(huì)為其分配一個(gè)默認(rèn)值。不同類(lèi)型的變量,默認(rèn)值也不相同,下面來(lái)看看各種類(lèi)型的默認(rèn)值分別是什么。
用例子來(lái)說(shuō)明:先輸入一個(gè)java代碼(這里只包括了實(shí)例變量)
class Text1 {
// 實(shí)例成員變量
private boolean bool;
private byte b;
private short s;
private char c;
private int i;
private long l;
private float f;
private double d;
private String str;
private String[] strArray;
public void printInstance() {
System.out.println("實(shí)例成員變量默認(rèn)值:");
System.out.println("boolean:" + bool);
System.out.println("byte:" + b);
System.out.println("short:" + s);
System.out.println("int:" + i);
System.out.println("long:" + l);
System.out.println("float:" + f);
System.out.println("double:" + d);
System.out.println("String:" + str);
System.out.println("String[]:" + strArray);
System.out.println("char:" + c);
}
}
public class Text{
public static void main(String[] args) {
Text1 dv = new Text1();
dv.printInstance();
}
}
輸出結(jié)果:

下面我們來(lái)看看類(lèi)變量是否和實(shí)例變量一樣
class Text1 {
// 靜態(tài)成員變量
private static boolean boolStatic;
private static byte bStatic;
private static short sStatic;
private static char cStatic;
private static int iStatic;
private static long lStatic;
private static float fStatic;
private static double dStatic;
private static String strStatic;
private static String[] strArrayStatic;
public static void printStatic() {
System.out.println("靜態(tài)成員變量默認(rèn)值:");
System.out.println("boolean:" + boolStatic);
System.out.println("byte:" + bStatic);
System.out.println("short:" + sStatic);
System.out.println("int:" + iStatic);
System.out.println("long:" + lStatic);
System.out.println("float:" + fStatic);
System.out.println("double:" + dStatic);
System.out.println("String:" + strStatic);
System.out.println("String[]:" + strArrayStatic);
System.out.println("char:" + cStatic);
}
}
public class Text{
public static void main(String[] args) {
Text1 dv = new Text1();
dv.printStatic();
}
}
輸出結(jié)果:

在本程序中聲明了各種類(lèi)型,分別為8種基本數(shù)據(jù)類(lèi)型、引用類(lèi)型、數(shù)組類(lèi)型。并且聲明為兩組,一組為實(shí)例變量,一組為靜態(tài)變量。然后一次輸出兩組數(shù)據(jù)的值。
數(shù)組類(lèi)型與引用類(lèi)型的默認(rèn)值相同,都為null,實(shí)際上,數(shù)組就是一種特殊的類(lèi)(對(duì)象),所以數(shù)組類(lèi)型的變量也就是引用類(lèi)型的變量。從結(jié)果可知,相同類(lèi)型的實(shí)例變量與靜態(tài)變量默認(rèn)值是相同的。
這里有一點(diǎn)奇怪,char類(lèi)型變量后面什么也沒(méi)有輸出。不過(guò),這并不是char類(lèi)型變量沒(méi)有默認(rèn)值,而是默認(rèn)值為“空字符”,也就是‘\u0000',數(shù)值為0,我們可以證明一下。
class Text1 {
char c;
}
public class Text{
public static void main(String[] args) {
Text1 A = new Text1();
System.out.println((int) A.c);
System.out.println(A.c == '\u0000');
}
}
輸出結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud中FeignClient實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了Spring Cloud中FeignClient實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
springmvc接收參數(shù)為日期類(lèi)型詳解
這篇文章主要介紹了springmvc接收參數(shù)為日期類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了springMVC 用戶登錄權(quán)限驗(yàn)證實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Java中BigDecimal的舍入模式解析(RoundingMode)
這篇文章主要介紹了Java中BigDecimal的舍入模式解析(RoundingMode),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java concurrency之共享鎖和ReentrantReadWriteLock_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本篇文章主要介紹了Java concurrency之共享鎖和ReentrantReadWriteLock,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06
java 對(duì)文件夾目錄進(jìn)行深度遍歷實(shí)例代碼
這篇文章主要介紹了java 對(duì)文件夾目錄進(jìn)行深度遍歷實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
Java util concurrent及基本線程原理簡(jiǎn)介
這篇文章主要介紹了Java util concurrent及基本線程原理簡(jiǎn)介,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

