1. 程式人生 > 程式設計 >Java成員變數預設值原理詳解

Java成員變數預設值原理詳解

如果我們不做任何初始化工作,變數具有什麼預設值,或者是否具有預設值呢?
其實,成員變數在建立時,系統會為其分配一個預設值。不同型別的變數,預設值也不相同,下面來看看各種型別的預設值分別是什麼。

用例子來說明:先輸入一個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();
  }
}

輸出結果:

Java成員變數預設值原理詳解

下面我們來看看類變數是否和例項變數一樣

class Text1 {
  // 靜態成員變數
  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("靜態成員變數預設值:");
    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();
  }
}

輸出結果:

  Java成員變數預設值原理詳解

在本程式中聲明瞭各種型別,分別為8種基本資料型別、引用型別、陣列型別。並且宣告為兩組,一組為例項變數,一組為靜態變數。然後一次輸出兩組資料的值。

陣列型別與引用型別的預設值相同,都為null,實際上,陣列就是一種特殊的類(物件),所以陣列型別的變數也就是引用型別的變數。從結果可知,相同型別的例項變數與靜態變數預設值是相同的。

這裡有一點奇怪,char型別變數後面什麼也沒有輸出。不過,這並不是char型別變數沒有預設值,而是預設值為“空字元”,也就是‘\u0000',數值為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');
  }
}

輸出結果:

Java成員變數預設值原理詳解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。