Java——包的定義及使用

目錄

1、包的定義

2、包的導入

3、系統常見包

4、總結


以下講解的內容,概念清除即可,實際上現在使用的IDE開發工具,很多操作不需要我們手動去完成了。

1、包的定義

任何操作系統中,都有一個統一的共識:同一個目錄下不能存在相同的文件名稱,但是,實際開發中又很難避免命名衝突矛盾的問題,爲此,項目中往往會引入包的概念,所謂的包,存儲時就是一個文件夾,在不同目錄中可以存放相同的文件。

要想在Java中定義包,直接使用package關鍵字即可。

【舉例】:定義包

package com.example.myapplication;

一旦程序中聲明瞭包,就必須將生成的*.class文件保存在包裏面,這個包並不是手工創建的,Java中專門提供了打包編譯的操作:

如  javac -d . Hello.java

命令中的參數:

  • -d 生成目錄,默認情況下是根據package定義的內容生成;
  • . 生成程序的保存路徑,設置爲 . 表示當前目錄下保存;

此時若程序有包了,解釋程序是必須加上包名稱,eg: java 包名稱.Hello

Java項目開發中,程序類必須要有包的定義纔可以使用,沒有包的類不存在,類的完整名稱就是”包.類“。

2、包的導入

利用程序包可以將很多的*.class類歸類保存,這樣一來,可能存在包與包間進行類的互相調用問題,可以利用import語句解決。

【舉例】:定義一個com.example.myapplication.util.Message類

package com.example.myapplication.util;

class Message {
    public void getInfo(){
        System.out.println("hello");
    }
}

【舉例】:定義一個com.example.myapplication.test.TestMessage類

package com.example.myapplication.test;

import com.example.myapplication.util.Message;

public class TestMessage {
    public void printInfo(){
        Message msg = new Message();
        msg.getInfo();
    }
}

此時編譯,出現如下錯誤: Message在com.example.myapplication.util中不是公共的; 無法從外部程序包中對其進行訪問.
出錯的原因是,Message類的定義中使用的是默認的訪問控制權限,其特點是隻能被同一包中的類所訪問,不能被外包所訪問,所以,學習包的定義後,對於代碼有一些規範化要求:後續寫的類都要求寫在包中,且*.java文件中智只會有一個public class聲明。

【小結】:

  • public class定義要求文件名與類名稱保持一致,而在*.java文件之中只允許有一個public class定義,如果該類要被不同的包所使用,必須使用public class聲明;
  • class定義的類文件名稱可以與類名稱不一致,但那是編譯之後每個class聲明的類都會生成一個*.class文件,此類只能在一個包中使用。

【舉例】:修改Message類的定義

package com.example.myapplication.util;

publi class Message {
    public void getInfo(){
        System.out.println("hello");
    }
}

3、系統常見包

Java開發類庫非常龐大,開發中也很多,比較常見的開發包如下:

  • java.lang:Object、String、Integer、Number都是這個包中定義的,從JDK1.1開始都是自動導入的;
  • java.lang.reflect:反射開發包,直接與框架開發有關係;
  • java.util:Java的工具包;
  • java.util.regex:正則表達式的開發包;
  • java.text:國際化程序支持包;
  • java.io包:數據流的開發包(Input、Output),前提:抽象類;
  • java.net:網絡編程包,基本不用了;
  • java.sql:數據庫的編程包;
  • java.awt、javax.swing:圖形界面開發,現在基本也不用了;
      --最初JDK1.0時,只提供有java.awt開發包,可以實現圖形界面的開發,但是最初的設計需要大量使用windows的系統函數;
      --JDK1.2(Java2)推出了輕量化的組件,有了swing開發組件;
         J#  Java代碼改了,變成了VB的形式-》C#-》MFC,VC的圖形界面。
  • ​​​​​​​java.applet.*:網頁上嵌入的java程序,是Java發展的標記,現在基本也不用了;

4、總結

1)以後的程序都要寫上package打包;

2)import語句往往不需要編寫,前提是:使用開發工具;

 

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