首頁 > 軟體

Java由淺入深帶你瞭解什麼是包package

2022-03-22 19:00:26

什麼是包

包 (package) 是組織類的一種方式.

使用包的主要目的是保證類的唯一性.

例如, 你在程式碼中寫了一個 Test 類. 然後你的同事也可能寫一個 Test 類. 如果出現兩個同名的類, 就會衝突, 導致 程式碼不能編譯通過

1.匯入包中的類

 Java 中已經提供了很多現成的類供我們使用

①:例如列印陣列:

public class TestDemo{
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(Arrays.toString(array));
    }
}

用Arrays就需要匯入包,看圖:

 如果最上面的這行程式碼不寫就會報錯,看圖:

那麼怎麼匯入上面的這個包呢,當我們寫出Arrays這個程式碼,IDEA會自動跳出選項讓你選擇,選擇第一項你直接回車,就會幫你匯入這個包。看圖:

②:再舉例:

Date這個類是定義日期的,也是Java類庫寫好的

public class TestDemo {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();//在我們不導包時候手寫
        // 得到一個毫秒級別的時間戳
        System.out.println(date.getTime());
   }
}

可以使用 java.util.Date 這種方式引入 java.util 這個包中的 Date 類

但是這種寫法比較麻煩一些, 這個時候就可以用上面的寫法,可以使用 import 語句匯入包

import java.util.Date;
public class TestDemo {
    public static void main(String[] args) {
        Date date = new Date();
        // 得到一個毫秒級別的時間戳
        System.out.println(date.getTime());
   }
}

注意事項:

可以匯入一個具體的類,不能匯入具體的包

:匯入util包,報錯

:匯入具體的類

③:再舉例:

如果需要使用 java.util 中的其他類, 可以使用 import java.util.*

import java.util.*;
public class TestDemo {
    public static void main(String[] args) {
        Date date = new Date();
        // 得到一個毫秒級別的時間戳
        System.out.println(date.getTime());
   }
}

:不報錯,這個*可以理解為萬用字元,代表匯入這個包底下所有的類

疑問:util底下有很多類,難道一下子全部匯入嗎?不會,Java處理的時候,需要誰,他才會那誰。

④:但是我們更建議顯式的指定要匯入的類名. 否則還是容易出現衝突的情況.

舉例:

import java.util.*;
import java.sql.*;
public class TestDemo {
    public static void main(String[] args) {
        // util 和 sql 中都存在一個 Date 這樣的類, 此時就會出現歧義, 編譯出錯
        Date date = new Date();
        System.out.println(date.getTime());
   }
}
// 編譯出錯
Error:(5, 9) java: 對Date的參照不明確
  java.sql 中的類 java.sql.Date 和 java.util 中的類 java.util.Date 都匹配

在這種情況下需要使用完整的類名 

注意事項:

import 和 C++ 的 #include 差別很大. C++ 必須 #include 來引入其他檔案內容, 但是 Java 不需要. import 只是為了寫程式碼的時候更方便. import 更類似於 C++ 的 namespace 和 using

知識點

import和package的區別

package:"包",,指:類所在的包

import:"引入",指:引入類中需要的類

如果我們要用到一些Java類庫裡面的程式碼我們都需要通過import匯入

2.靜態匯入

使用 import static 可以匯入包中的靜態的方法和欄位.

①舉例:

import static java.lang.System.*;
public class Test {
    public static void main(String[] args) {
        out.println("hello");
   }
}

 這樣System.out.println("hello");就可以寫成out.println("hello");

②再舉例:

import static java.lang.Math.*;
public class TestDemo {
    public static void main(String[] args) {
        double x = 30;
        double y = 40;
        // 靜態匯入的方式寫起來更方便一些. 
        // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
        double result = sqrt(pow(x, 2) + pow(y, 2));
        System.out.println(result);
   }
}

再寫程式碼當中Math.就可以去掉。

3.將類放到包中

基本規則:

在檔案的最上方加上一個 package 語句指定該程式碼在哪個包中.

包名需要儘量指定成唯一的名字, 通常會用公司的域名的顛倒形式(例如 com.xuexiao.demo1 ). 

包名要和程式碼路徑相匹配. 例如建立 com.xuexiao.demo1 的包, 那麼會存在一個對應的路徑 com/xuexiao/demo1 來存 儲程式碼.

如果一個類沒有 package 語句, 則該類被放到一個預設包中.

操作步驟:

 1) 在 IDEA 中先新建一個包: 右鍵 src -> 新建 -> 包

2) 在彈出的對話方塊中輸入包名, 例如 com.xuexiao.demo1 ,點回車

 3) 在包中建立類, 右鍵包名 -> 新建 -> 類, 然後輸入類名即可

 4) 此時可以看到我們的磁碟上的目錄結構已經被 IDEA 自動建立出來了

5) 同時我們也看到了, 在新建立的 Test.java 檔案的最上方, 就出現了一個 package 語句

4.包的存取許可權控制

 我們已經瞭解了類中的 public 和 private. private 中的成員只能被類的內部使用.

如果某個成員不包含 public 和 private 關鍵字, 此時這個成員可以在包內部的其他類使用, 但是不能在包外部的類使 用.

舉例:

下面的程式碼給了一個範例. Demo1 和 Demo2 是同一個包中, Test 是其他包中.

 Demo1.java

package com.bili.demo;
public class Demo1 {
    int value = 0;
}

Demo2.java

package com.bili.demo; 
public class Demo2 { 
 public static void Main(String[] args) { 
 Demo1 demo = new Demo1(); 
 System.out.println(demo.value); 
 } 
}

// 執行結果, 能夠存取到 value 變數
10

Test.java

import com.bili.demo.Demo1; 
public class Test { 
 public static void main(String[] args) { 
 Demo1 demo = new Demo1(); 
 System.out.println(demo.value); 
 } 
} 
// 編譯出錯
Error:(6, 32) java: value在com.bili.demo.Demo1中不是公共的; 無法從外部程式包中對其進行存取

5.常見的系統包

1. java.lang:系統常用基礎類(String、Object),此包從JDK1.1後自動匯入。

2. java.lang.reflect:java 反射程式設計包;

3. java.net:進行網路程式設計開發包。

4. java.sql:進行資料庫開發的支援包。

5. java.util:是java提供的工具程式包。(集合類等) 非常重要

6. java.io:I/O程式設計開發包。

到此這篇關於Java由淺入深帶你瞭解什麼是包package的文章就介紹到這了,更多相關Java 包內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com