package包
包類似於操作系統的文件夾
作用:
1.包可以提供文件(.class)的分類管理
2.提供獨立的命名空間,防止命名衝突
3.設置了空間的訪問權限的控制(可以提供很好的封裝性)
包的聲明:
package 包名;
package 包.子包;
按照慣例,包名使用小寫字母組成。
建議包名採用“域名的倒寫.項目名.模塊名”的方式,以確保包名的唯一性, 例如com.lah.ghgj
包與包之間,包與類之間,使用.進行分割;
聲明包的語法要求
1、聲明位置:包聲明語句必須是源文件中的第一條有效語句
2、聲明數量:包聲明語句之多隻能有一條
當聲明包時,編譯和運行會發生變化,編譯javac -d e: PackTest.java 生成.class文件
到指定路徑。javac -d . PackTest.java生成.class到當前路徑運行java p.PackTest
類的訪問
在同一包中,可以通過簡單名訪問包中的其他類
在不同的包中不可通過簡單名訪問包外的類。
訪問包外的類需要使用權限定名或通過導入包後可使用簡單名訪問。
import的語法要求
- 語句位置:import語句必須出現在包聲明語句之後,類聲明之前
- 語句數量:import語句語句可以有0~n條語句
- import 包.* ;導入該包中所有的類型,不包括子包中的類型的
- java.lang包中類會自動導入
- 明確導入java.util.Arrays,按需導入java.util.*。
- 導入同一個類時,明確導入會遮蔽按需導入
import與import static的區別: - import導入的是包中的類型。
- import static導入的包中類型中聲明的靜態成員。
- 當導入某類型的靜態成員時,就可以直接使用該成員名字進行訪問,
- 就好像該成員聲明在當前類中一樣。
package p;
public class PackTest {
public static void main(String[] args) {
//同一包中,簡單命名訪問其他類
new Pack();
//不同包中,通過導包或者權限定名訪問其他包中的類
This t = new This();
//全限定名
p1.This t = new p1.This();
int[] x = {1,2};
sort(x);
}
}