Java成員變量默認值原理詳解
如果我們不做任何初始化工作,變量具有什么默認值,或者是否具有默認值呢?
其實,成員變量在創(chuàng)建時,系統(tǒng)會為其分配一個默認值。不同類型的變量,默認值也不相同,下面來看看各種類型的默認值分別是什么。
用例子來說明:先輸入一個java代碼(這里只包括了實例變量)
class Text1 {
// 實例成員變量
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("實例成員變量默認值:");
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é)果:

下面我們來看看類變量是否和實例變量一樣
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)成員變量默認值:");
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é)果:

在本程序中聲明了各種類型,分別為8種基本數(shù)據(jù)類型、引用類型、數(shù)組類型。并且聲明為兩組,一組為實例變量,一組為靜態(tài)變量。然后一次輸出兩組數(shù)據(jù)的值。
數(shù)組類型與引用類型的默認值相同,都為null,實際上,數(shù)組就是一種特殊的類(對象),所以數(shù)組類型的變量也就是引用類型的變量。從結(jié)果可知,相同類型的實例變量與靜態(tài)變量默認值是相同的。
這里有一點奇怪,char類型變量后面什么也沒有輸出。不過,這并不是char類型變量沒有默認值,而是默認值為“空字符”,也就是‘\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é)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用實例
這篇文章主要介紹了Java網(wǎng)絡(luò)編程之簡單的服務(wù)端客戶端應(yīng)用,以實例形式較為詳細的分析了java網(wǎng)絡(luò)編程的原理與服務(wù)器端客戶端的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
Java實現(xiàn)“年-月-日 上午/下午時:分:秒”的簡單代碼
當(dāng)前的日期輸出的方法有很多,本文為大家介紹下在java中是如何實現(xiàn)“年-月-日 上午/下午時:分:秒”,感興趣的朋友不妨參考下2015-08-08
SpringBoot+WebSocket向前端推送消息的實現(xiàn)示例
WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議,允許服務(wù)器主動向客戶端推送信息,同時也能從客戶端接收信息,本文主要介紹了SpringBoot+WebSocket向前端推送消息的實現(xiàn)示例,感興趣的可以了解一下2024-08-08

