包和異常

一、包的定義與使用

1.1 包(package)的定義
以後在進入源文件時先定義包名稱。

Java包的本質就是一個文件夾,避免類名重複的問題。

在源文件首行使用package定義包名

編譯時加上-d參數
javac -d 源文件所在路徑-絕對路徑(當前路徑 .) 源文件名稱
javac -d . Test.java

運行時使用類的全名稱(包名.類名)
java www.bit.java.Test

2.包的導入
使用import語句進行包的導入

自動編譯:編譯器會將當前路徑下所有*.java源文件按照使用順序進行一次性的編譯。
javac -d . ./*.java

3.jar包的概念

jar包實際上就是所有class文件的壓縮包

cmd切換到當前路徑的兩種方式

  1. shift+右鍵

二、訪問控制權限
private(私有訪問權限,僅供本類使用)<default(包訪問權限)<protected(繼承訪問權限)<public(公共訪問權限)

2.1包訪問權限default
在一個包中的所有源文件均可以訪問

2.2繼承訪問權限protected
僅供子類使用

三、單例模式:類的對象有且只有一個

首先控制對象的產生數量-將構造方法私有化(從源頭控制對象數量)

類構造方法私有化:任何其他類均無法產生此類對象

唯一的一個對象產生於類內部

唯一的屬性爲靜態屬性,並且類中提供靜態方法取得此對象(類的外部無法產生對象,因此無法調用對象方法)

// 餓漢式單例
class Singleton {
    // 類中提供了一個對象
    private static Singleton singleton = new Singleton();
    private Singleton(){}
    // 靜態方法
    public static Singleton getInstance() {
        return singleton;
    }
}

懶漢式單例:

   // 懶漢式單例
    class Singleton {
        // 類加載時產生
        private static Singleton singleton;
        private Singleton(){}
        // 靜態方法
        public static Singleton getInstance() {
            if(singleton == null) {
                singleton = new Singleton();
            }
            return singleton;
        }
    }

餓漢:上來就new(就寫餓漢式)
懶漢:用時再new(存在線程安全問題,在多線程併發下可能會產生不止一個對象)

三個核心組成:
構造方法私有化
類內部提供靜態私有對象
類內部提供靜態方法返回唯一對象

四、Java異常
幾乎所有的代碼都會出現異常,爲了保證程序在出現異常之後就可以正常執行完畢,就需要進行異常處理。
異常的繼承類結構
在這裏插入圖片描述

所有的異常都是由Throwable繼承而來,其中Error類描述了java運行時內部錯誤和資源耗盡錯誤。應用程序不拋出此類異常,這種內部錯誤一旦出現,除了告知用戶並使程序安全終止之外,再無能爲力。這種情況很少出現。Exception及其子類:RuntimeException和IOException,由於程序錯誤導致的異常屬於RuntimeException;而程序本身沒有問題,但由於像I/O錯誤這類問題導致的異常屬於IOException。
Java語言規範將派生於Error類或者RuntimeException類的所有異常稱爲非受查異常;所有的其他異常稱爲受查異常。

4.1 異常類體系

Error類描述Java運行時內部錯誤或資源耗盡錯誤(OOM,StackOverFlowError)。

Exception:

RuntimeException:程序出錯(ClassCastException,NullPointerException,NumberFormatException,ArrayIndexOutofBoundsException)

IOException:程序本身沒有問題,I/O異常(打開一個不存在的文件)

受查異常:所有其他異常,必須強制用戶進行異常處理

非受查異常:所有Error以及RuntimeException直接子類,不強制進行異常處理。

4.2異常處理格式

try {
    // 可能出現異常的代碼
}[catch.....]{
    // 出現異常後咋辦
}[finally] {
    // 異常出口
}

其中:try-catch(可以有多個catch)
try-finally
try-catch(可以有多個catch)-finally

finally代碼塊無論如何都會執行(若try或catch塊中有return語句,則在return語句執行之前一定會執行finally代碼塊)

5.Ctrl + Alt + t包圍快捷鍵(try catch)
6.throws關鍵字
在進行方法定義的時候,如果要告訴調用者本方法可能產生哪些異常,就可以使用throws方法進行聲明。即,如果該方法出現問題後不希望進行處理,就使用throws拋出。
7.throw關鍵字
用在方法體代碼中,表示認爲人爲異常的拋出。
如果希望自己產生異常類對象而非JVM產生,就可以在代碼塊中使用throw來拋出異常(一般與分支語句搭配使用)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章