最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java包裝類與異常處理的過程

 更新時(shí)間:2026年04月07日 10:40:31   作者:辭憂要靠自己  
本文介紹了Java中包裝類和異常處理的概念,解析了它們的用途和使用方法,包裝類主要用于將基本數(shù)據(jù)類型轉(zhuǎn)換為對(duì)象,解決面向?qū)ο缶幊讨械南拗?;異常處理機(jī)制則幫助程序優(yōu)雅地處理運(yùn)行時(shí)錯(cuò)誤,包括常見異常類型、異常處理語句及自定義異常的使用

在 Java 開發(fā)中,包裝類異常處理是兩個(gè)核心且高頻的知識(shí)點(diǎn)。它們分別解決了基本數(shù)據(jù)類型的對(duì)象化問題,以及程序運(yùn)行時(shí)的錯(cuò)誤處理問題。

本文將結(jié)合代碼示例,深入解析這兩個(gè)概念,幫助你更好地理解和運(yùn)用。

一、包裝類:讓基本數(shù)據(jù)類型 “對(duì)象化”

1. 什么是包裝類?

Java 中的數(shù)據(jù)類型從本質(zhì)上分為兩類:

  • 基本數(shù)據(jù)類型byte, short, int, long, float, double, char, boolean。它們不是對(duì)象,在面向?qū)ο缶幊痰哪承﹫?chǎng)景(如集合操作)中會(huì)受到限制。
  • 引用類型:通過 new 關(guān)鍵字創(chuàng)建的對(duì)象。

為了讓基本數(shù)據(jù)類型也能以對(duì)象的形式存在,Java 提供了一組包裝類,專門用來創(chuàng)建與 8 種基本數(shù)據(jù)類型對(duì)應(yīng)的對(duì)象。

2. 基本數(shù)據(jù)類型與包裝類的對(duì)應(yīng)關(guān)系

基本數(shù)據(jù)類型包裝類
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

這些包裝類全部存放于 java.lang 包中,它們的繼承關(guān)系如下:

  • 一級(jí)父類:Object
  • 二級(jí)父類:Character, Number, Boolean
  • Number 的子類:Byte, Short, Integer, Long, Float, Double
public class Test {
    public static void main(String[] args) {
        byte b = 1;
        Byte byt = new Byte(b);
        
        short s = 2;
        Short shor = new Short(s);
        
        int i = 3;
        Integer integer = new Integer(i);
        
        long l = 4;
        Long lon = new Long(l);
        
        float f = 5.5f;
        Float flo = new Float(f);
        
        double d = 6.6;
        Double dou = new Double(d);
        
        char cha = 'J';
        Character charac = new Character(cha);
        
        boolean bo = true;
        Boolean bool = new Boolean(bo);
    }
}

注意:從 Java 5 開始,引入了自動(dòng)裝箱(Autoboxing)功能,編譯器會(huì)自動(dòng)完成這個(gè)轉(zhuǎn)換,例如 Integer i = 3;。

拆箱:包裝類 → 基本數(shù)據(jù)類型

將包裝類對(duì)象轉(zhuǎn)換回對(duì)應(yīng)的基本數(shù)據(jù)類型。

public class Test {
    public static void main(String[] args) {
        byte b = 1;
        Byte byt = new Byte(b);
        byte b1 = byt.byteValue();
        
        short s = 2;
        Short shor = new Short(s);
        short i1 = shor.shortValue();
        
        int i = 3;
        Integer integer = new Integer(i);
        int i2 = integer.intValue();
        
        long l = 4;
        Long lon = new Long(l);
        long l1 = lon.longValue();
        
        float f = 5.5f;
        Float flo = new Float(f);
        float v = flo.floatValue();
        
        double d = 6.6;
        Double dou = new Double(d);
        double v1 = dou.doubleValue();
        
        char cha = 'J';
        Character charac = new Character(cha);
        char c = charac.charValue();
        
        boolean bo = true;
        Boolean bool = new Boolean(bo);
        boolean b2 = bool.booleanValue();
    }
}

注意:同樣,Java 5 也引入了自動(dòng)拆箱(Unboxing)功能,例如 int i = new Integer(3);。

二、異常處理:讓程序 “優(yōu)雅” 地應(yīng)對(duì)錯(cuò)誤

1. 什么是異常?

Java 中的錯(cuò)誤可以分為兩大類:

  • 編譯時(shí)錯(cuò)誤:一般指語法錯(cuò)誤,編譯器會(huì)在編譯階段就提示,無法生成 .class 文件。
  • 運(yùn)行時(shí)錯(cuò)誤:語法沒有問題,可以正常通過編譯,但在運(yùn)行時(shí)報(bào)錯(cuò)。

異常就是 Java 提供的一套機(jī)制,用來專門處理各種運(yùn)行時(shí)錯(cuò)誤。它會(huì)將具體的錯(cuò)誤信息以及出錯(cuò)位置統(tǒng)一告知程序員,幫助我們快速定位和解決問題。

2. 常見的異常類型

Java 內(nèi)置了豐富的異常類,以下是幾個(gè)最常見的:

  • ArithmeticException:數(shù)學(xué)異常,如除數(shù)為零。
System.out.println(10 / 0); // 拋出此異常
  • ClassNotFoundException:類未定義異常,當(dāng)嘗試加載一個(gè)不存在的類時(shí)拋出。
System.out.println(Class.forName("Test2"));
  • IllegalArgumentException:參數(shù)格式異常,當(dāng)傳遞了不合法或不恰當(dāng)?shù)膮?shù)時(shí)拋出。
public void test(Integer integer) {
    System.out.println(integer);
}
// 當(dāng)通過反射調(diào)用此方法并傳入字符串 "1" 時(shí)會(huì)拋出此異常
  • ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界異常。
int[] array = {1, 2, 3};
System.out.println(array[3]); // 數(shù)組長(zhǎng)度為3,索引最大為2
  • NullPointerException:空指針異常,當(dāng)調(diào)用一個(gè) null 對(duì)象的方法或?qū)傩詴r(shí)拋出。
Integer num = null;
System.out.println(num.equals(1));
  • NoSuchMethodException:方法未定義異常,當(dāng)嘗試調(diào)用一個(gè)不存在的方法時(shí)拋出。
  • NumberFormatException:將其他數(shù)據(jù)類型轉(zhuǎn)換為數(shù)值類型時(shí)的不匹配異常。
Integer integer = new Integer("a"); // 字符串 "a" 無法轉(zhuǎn)換為整數(shù)

3. 異常的使用:try-catch-finally

Java 提供了 try-catch-finally 語句塊來捕獲和處理異常。

  • try:監(jiān)聽可能會(huì)拋出異常的代碼。一旦出現(xiàn)錯(cuò)誤,JDK 會(huì)自動(dòng)創(chuàng)建一個(gè)錯(cuò)誤對(duì)象(異常對(duì)象)。
  • catch:用來捕獲 JDK 創(chuàng)建的異常對(duì)象,并進(jìn)行后續(xù)的處理。
  • finally:無論程序是否拋出異常,finally 代碼塊中的程序一定會(huì)執(zhí)行(try 代碼塊里),通常用于釋放資源。
public class Test3 {
    public static void test3(String str) {
        Integer integer = null;
        try {
            integer = Integer.valueOf(str);
        } catch (Exception e) {
            // 打印異常信息
            System.out.println(e.getMessage());
        }
    }
}
public class Test {
    public static void main(String[] args) throws Exception {
        System.out.println(test());
    }

    public static int test() {
        try {
            System.out.println("try");
            return 10;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally...");
            return 20;
        }
    }
}
// 輸出:
// try
// finally...
// 20

注意:如果 trycatch 中有 return 語句,finally 塊仍然會(huì)在方法返回前執(zhí)行。如果 finally 中也有 return,則會(huì)覆蓋 trycatch 中的返回值。

4.throw和throws:主動(dòng)拋出異常

throwthrows 是 Java 在處理異常時(shí)使用的關(guān)鍵字,都用來拋出異常,但是使用方式和表示的含義完全不同。

  • throw:開發(fā)者主動(dòng)創(chuàng)建一個(gè)異常對(duì)象并拋出,用于在代碼邏輯中主動(dòng)發(fā)現(xiàn)并報(bào)告錯(cuò)誤。

public class Test {
    public static void main(String[] args) throws Exception {
        String str = "Java";
        if (str.equals("Java")) {
            // 主動(dòng)創(chuàng)建并拋出一個(gè) NumberFormatException
            throw new NumberFormatException();
        } else {
            int num = Integer.parseInt(str);
        }
    }
}
  • throws:標(biāo)注在方法聲明上,用來描述該方法可能會(huì)拋出的異常。它告訴調(diào)用者,調(diào)用此方法時(shí)需要處理這些可能的異常。
public class Test {
    public static void main(String[] args) throws Exception {
        try {
            test();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }

    // 聲明此方法可能會(huì)拋出 NumberFormatException
    public static void test() throws NumberFormatException {
        String str = "Java";
        int num = Integer.parseInt(str);
    }
}

5. 自定義異常

當(dāng)內(nèi)置的異常類無法滿足業(yè)務(wù)需求時(shí),我們可以創(chuàng)建自定義異常。自定義異常類需要繼承自 Exception 類(或其子類)。

示例:定義一個(gè)方法,對(duì)傳入的參數(shù)進(jìn)行 ++ 操作并返回結(jié)果,同時(shí)要求參數(shù)傳入的必須是整數(shù)類型,如果不是整數(shù)類型則拋出自定義異常。

// 1. 定義自定義異常類,繼承 Exception
public class NumberException extends Exception {
    public NumberException(String message) {
        super(message);
    }
}

// 2. 使用自定義異常
public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        try {
            int add = test.add("a"); // 傳入字符串,不是整數(shù)
            System.out.println(add);
        } catch (NumberException e) {
            // 捕獲并處理自定義異常
            e.printStackTrace();
        }
    }

    // 方法聲明可能拋出 NumberException
    public int add(Object object) throws NumberException {
        if (!(object instanceof Integer)) {
            // 主動(dòng)拋出自定義異常
            throw new NumberException("傳入的參數(shù)不是整數(shù)類型");
        } else {
            int num = (int) object;
            return ++num;
        }
    }
}

總結(jié)

  • 包裝類是基本數(shù)據(jù)類型的對(duì)象表示,解決了基本數(shù)據(jù)類型在面向?qū)ο缶幊讨械木窒扌?。裝箱和拆箱是它們之間轉(zhuǎn)換的核心操作。
  • 異常處理是 Java 提供的強(qiáng)大機(jī)制,通過 try-catch-finally、throw、throws 以及自定義異常,我們可以編寫出更健壯、更易于調(diào)試的代碼。

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

相關(guān)文章

最新評(píng)論

赤壁市| 邢台县| 宽城| 岑溪市| 黑山县| 英德市| 当雄县| 湘阴县| 西林县| 福贡县| 洮南市| 瑞丽市| 九江县| 宁海县| 大余县| 高淳县| 余庆县| 呼和浩特市| 南华县| 临高县| 高平市| 章丘市| 大化| 沾化县| 辉南县| 沂源县| 皮山县| 郑州市| 邻水| 同心县| 勃利县| 白玉县| 盘锦市| 二手房| 大港区| 女性| 金乡县| 永泰县| 遂宁市| 德格县| 都昌县|