一、包的定義與使用
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切換到當前路徑的兩種方式
- 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來拋出異常(一般與分支語句搭配使用)