欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java未賦值變量的初始值解析(默認(rèn)值)

 更新時(shí)間:2021年08月24日 10:01:14   作者:花木雨  
這篇文章主要介紹了Java未賦值變量的初始值(默認(rèn)值),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java未賦值變量的初始值(默認(rèn)值)

初始值(默認(rèn)值)

參考:官方文檔

Java程序中,任何變量必須初始化后才能使用。

以下為不同數(shù)據(jù)類型的默認(rèn)值。

數(shù)據(jù)類型 初始值
byte 0
short 0
int 0
long 0L
char ‘u0000'
float 0.0f
double 0
boolean false
所有引用類型 null

但并不是所有未初始化的變量都會(huì)賦默認(rèn)值。

對(duì)應(yīng)的面試編程題:以下代碼會(huì)打印什么?

public static void main(String[] args) {
        int[] arr = new int[10];
        System.out.println(arr[0]);
 }
//打?。?0
public static void main(String[] args) {
        int a;
        System.out.println(a);
 }
//編譯失敗,提示“Error:(16, 28) java: 可能尚未初始化變量a”

下面根據(jù)不同的變量類型依次說(shuō)明:

實(shí)例變量(非靜態(tài)字段)

系統(tǒng)會(huì)初始化默認(rèn)值

字段未被static修飾就是實(shí)例變量。在創(chuàng)建對(duì)象時(shí),該變量會(huì)在分配內(nèi)存階段被賦予默認(rèn)值,在執(zhí)行new指令之后,被賦予程序定義的初始值。

public class Cat {
    // 實(shí)例變量
    int age;
}

類變量(靜態(tài)字段)

系統(tǒng)會(huì)初始化默認(rèn)值

字段被static修飾就是類變量。在類加載的準(zhǔn)備階段,該變量會(huì)被賦予默認(rèn)值,在類加載的初始化階段,會(huì)被賦予程序定義的初始值。

public class Cat {
    // 類變量
    static int age;
}

本地變量

系統(tǒng)不會(huì)初始化默認(rèn)值

方法塊中定義的變量為本地變量。該變量必須在代碼中顯示賦值,否則會(huì)提示編譯錯(cuò)誤。

    public static void main(String[] args) {
        // 本地變量
        int a = 0;
    }

參數(shù)

無(wú)需初始化默認(rèn)值

參數(shù)很好理解,如下所示,args就是參數(shù)。參數(shù)又分實(shí)參和形參。參數(shù)的值在調(diào)用該方法時(shí)傳入。

 // args 就是參數(shù)
    public static void main(String[] args) {
    
    }

解決java未賦值變量的默認(rèn)值問(wèn)題

如下所示

package demo;
import java.util.Arrays;
public class demo {  
    /*類字段變量可以不賦初值不報(bào)錯(cuò),其他變量一律要賦初值  
     * 不管程序有沒(méi)有顯示的初始化,Java 虛擬機(jī)都會(huì)先自動(dòng)給它初始化為默認(rèn)值。
     * 1、整數(shù)類型(byte、short、int、long)的基本類型變量的默認(rèn)值為0。
     * 2、單精度浮點(diǎn)型(float)的基本類型變量的默認(rèn)值為0.0f。
     * 3、雙精度浮點(diǎn)型(double)的基本類型變量的默認(rèn)值為0.0d。
     * 4、字符型(char)的基本類型變量的默認(rèn)為 “/u0000”。
     * 5、布爾性的基本類型變量的默認(rèn)值為 false。
     * 6、引用類型的變量是默認(rèn)值為 null,如int[] a;。
     */
    public int  i1;  
    public static int i2;  
    public int[] a=new int[5];//見(jiàn)main()方法中的int[] b=new int[5];
    public static void main(String[] args) {  
        /* 方法中的局部變量,ava 虛擬機(jī)不會(huì)自動(dòng)的為它初始化為默認(rèn)值。
         * 因此對(duì)于局部變量,必須先經(jīng)過(guò)顯示的初始化,才能使用它。
         * 如果編譯器確認(rèn)一個(gè)局部變量在使用之前可能沒(méi)有被初始化,編譯器將報(bào)錯(cuò)。
         */
        //int i3;  
        int[] b=new int[5];//數(shù)組變量實(shí)例化后,如果沒(méi)有顯式為每個(gè)元素賦值,Java 就會(huì)把該數(shù)組的所有元素初始化為其相應(yīng)類型的默認(rèn)值
        System.out.println(new demo().i1); //輸出0 
        System.out.println(i2);            //輸出0
        //System.out.println(i3);          //會(huì)報(bào)錯(cuò)
        System.out.println(Arrays.toString(new demo().a));//此處為int型,默認(rèn)輸出{0,0,0,0,0}。  
    }  
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論