1. 程式人生 > 實用技巧 >JavaSE13-常用API&異常

JavaSE13-常用API&異常

1.包裝類

1.1 基本型別包裝類

基本型別包裝類的作用

  將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料

  常用的操作之一:用於基本資料型別與字串之間的轉換

基本型別 包裝類
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

1.2 Integer

Integer類概述

  包裝一個物件中的原始型別 int 的值

構造方法

方法名 說明
public Integer(int value) 根據 int 值建立 Integer 物件(過時)
public Integer(String s) 根據 String 值建立 Integer 物件(過時)
public static Integer valueOf(int i) 返回表示指定的 int 值的 Integer 例項
public static Integer valueOf(String s) 返回一個儲存指定值的 Integer 物件 String

1.3 int和String型別的相互轉換

int轉換為String 轉換方式

  方式一:直接在數字後加一個空字串

  方式二:通過String類靜態方法valueOf()

String轉換為int

  方式一:先將字串數字轉成Integer,再呼叫valueOf()方法

  方式二:通過Integer靜態方法parseInt()進行轉換

1.4 自動拆箱和自動裝箱

自動裝箱

  把基本資料型別轉換為對應的包裝類型別

自動拆箱

  把包裝類型別轉換為對應的基本資料型別

2.時間日期類

2.1 Date類

Date類概述

  Date 代表了一個特定的時間,精確到毫秒

Date類構造方法

方法名 說明
public Date() 分配一個 Date物件,並初始化,以便它代表它被分配的時間,精確到毫秒
public Date(long date) 分配一個 Date物件,並將其初始化為表示從標準基準時間起指定的毫秒數

2.2 Date類常用方法

方法名 說明
public long getTime() 獲取的是日期物件從1970年1月1日 00:00:00到現在的毫秒值
public void setTime(long time) 設定時間,給的是毫秒值

2.3 SimpleDateFormat類

SimpleDateFormat類概述

  SimpleDateFormat是一個具體的類,用於以區域設定敏感的方式格式化和解析日期。

  我們重點學習日期格式化和解析

SimpleDateFormat類構造方法

方法名 說明
public SimpleDateFormat() 構造一個SimpleDateFormat,使用預設模式和日期格式
public SimpleDateFormat(String pattern) 構造一個SimpleDateFormat使用給定的模式和預設的日期格式

SimpleDateFormat類的常用方法

  格式化(從Date到String)

    public final String format(Date date):將日期格式化成日期/時間字串

  解析(從String到Date)

    public Date parse(String source):從給定字串的開始解析文字以生成日期

2.5 Calendar類

Calendar類概述

  Calendar 為特定瞬間與一組日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位提供了一些方法

  Calendar 提供了一個類方法 getInstance 用於獲取這種型別的一般有用的物件。 該方法返回一個Calendar 物件。

Calendar類常用方法

方法名 說明
public int get(int field) 返回給定日曆欄位的值
public abstract void add(int field, int amount) 根據日曆的規則,將指定的時間量新增或減去給定的日曆欄位
public final void set(int year,int month,int date) 設定當前日曆的年月日

二月天案例

 1 public class CalendarTest {
 2     public static void main(String[] args) {
 3         //鍵盤錄入任意的年份
 4         Scanner sc = new Scanner(System.in);
 5         System.out.println("請輸入年:");
 6         int year = sc.nextInt();
 7         //設定日曆物件的年、月、日
 8         Calendar c = Calendar.getInstance();
 9         c.set(year, 2, 1);
10         //3月1日往前推一天,就是2月的最後一天
11         c.add(Calendar.DATE, -1);
12         //獲取這一天輸出即可
13         int date = c.get(Calendar.DATE);
14         System.out.println(year + "年的2月份有" + date + "天");
15     }
16 }           

3.異常

3.1 異常

異常的概述

  異常就是程式出現了不正常的情況

異常的體系結構

Throwable

  Error:嚴重的錯誤,我們無法處理

  Exception:程式本身可以處理的錯誤

    RuntimeException:在編譯期不做檢查,等到發現錯誤時由我們回來修改程式

    非RuntimeException:編譯期就必須處理,否則無法通過編譯

3.2 JVM預設處理異常的方式

如果程式出現了問題,我們沒有做任何處理,最終JVM 會做預設的處理,處理方式有如下兩個步驟:

  把異常的名稱,錯誤原因及異常出現的位置等資訊輸出在了控制檯

  程式停止執行

3.3 try-catch方式處理異常

定義格式

1 try {
2   可能出現異常的程式碼;
3 } catch(異常類名 變數名) {
4   異常的處理程式碼;
5 }

執行流程

  程式從 try 裡面的程式碼開始執行

  出現異常,就會跳轉到對應的 catch 裡面去執行

  執行完畢之後,程式還可以繼續往下執行

3.4 Throwable成員方法

常用方法

方法名 說明
public String getMessage() 返回此 throwable 的詳細訊息字串
public String toString() 返回此可丟擲的簡短描述
public void printStackTrace() 把異常的錯誤資訊輸出在控制檯

3.5 編譯時異常和執行時異常的區別

編譯時異常

  都是Exception類及其子類

  必須顯示處理,否則程式就會發生錯誤,無法通過編譯

執行時異常

  都是RuntimeException類及其子類

  無需顯示處理,也可以和編譯時異常一樣處理

3.6 throws方式處理異常

定義格式

1 public void 方法() throws 異常類名 {
2     ……
3 }

注意事項

  這個throws格式是跟在方法的括號後面的

  編譯時異常必須要進行處理,兩種處理方案:try...catch …或者 throws,如果採用 throws 這種方案, 將來誰呼叫誰處理

  執行時異常可以不處理,出現問題後,需要我們回來修改程式碼

3.7 throws和throw的區別

Throws

  用在方法宣告的後面,跟著的是異常類名

  表示丟擲異常,由該方法的呼叫者來處理

  表示出現異常的一種可能,並不一定會出現這個異常

Throw

  用在方法體內,跟著的是異常類名

  表示丟擲異常,由方法體內語句處理

  執行throw一定丟擲了某種異常

3.8 自定義異常

自定義異常類

1 public class iNumberLargeException extends Exception {
2     public iNumberLargeException(){}
3 
4     public iNumberLargeException(String message){
5         super(message);
6     }
7 }

檢測類

1 public class Check {
2     public static void check(int sorce) throws iNumberLargeException {
3         if (sorce < 0 || sorce > 100) {
4             throw new iNumberLargeException("分數異常!");
5         } else {
6             System.out.println("正常");
7         }
8     }
9 }

測試類

import java.util.Scanner;

public class iExceptionDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sorce = sc.nextInt();
        try {
            Check.check(sorce);
        } catch (iNumberLargeException e) {
            e.printStackTrace();
        }
    }
}