Java package 和 import

來源:互聯網
上載者:User

標籤:java   package   import   

一些人用了一陣子的Java,可是對於 Java 的 package 跟 import 還是不太瞭解。很多人以為原始碼 .java 檔案中的 import 會讓編譯器把所 import 的程式通通寫到編譯好的 .class 檔案中,或是認為 import 跟 C/C++ 的 #include 相似,實際上,這是錯誤的觀念。

import的作用

如果沒有import,我們在使用java類庫時就需要書寫該類的全路徑名,例如下面代碼:

    java.util.ArrayList<Integer> list = new java.util.ArrayList<Integer>();

每次這樣寫要多敲很多字元,程式員都是很懶的,自然有人辦法偷懶了,於是有了import,只需要在java檔案開頭部分匯入相應的類的全名一次,之後就只需要寫類名就可以引用該類了,例如:

    import java.util.ArrayList;    ...    ArrayList<Integer> list = new ArrayList<Integer>();

上面的java.util就是一個包,ArrayList是該包裡面的一個類,

也可以使用萬用字元來表示引用某個包,這樣可以偷懶不少,但是盡量少這樣用了。

    import java.util.*;

編譯時間所有類名都會被替換成相應的完全路徑名,如ArrayList比替換成java.util.ArrayList,這與我們自己書寫完全路徑名是一樣的效果。

尋找import的類時,按照環境變數CLASSPATH中指定的路徑(如有多個,依此執行下面操作),將該路徑作為根目錄,然後將import後面的完全路徑名中的.換成路徑分隔字元並添加.java尾碼,將根目錄與替換後的路徑拼接成完全路徑定位要引用的類檔案。例如上面的匯入的java.util.ArrayList類檔案路徑為$CLASSPATH/java/util/ArrayList.java

package的作用

包用來將一組相互具有聯絡並組合起來完成某一功能的類聚集到一起,比如java中的工具庫,通常一個庫是由多個class所組成,為了方便組織我們把這組class放在同一個目錄下,這個目錄就是看作是一個java包(當然還需要在java檔案開頭用package聲明一下)。

打個比方,package 名稱就像是我們的姓,而 class 名稱就像是我們的名字。package 名稱有很多.的,就好像是複姓。比如說 java.lang.String,就是複姓 java.lang,名字為 String 的類別;java.io.InputStream 則是複姓java.io,名字為 InputStream 的類別。

但是實際中經常會出現重名的情況,這時候就需要用不同的姓作區分,例如A寫了一個String類,B也寫了個String類,為了區分,可以通過A.StringB.String分別表示他們各自的String類。按照慣例,java中習慣使用Internet網域名稱的反序作為包名,例如我有一個網域名稱java.oracle.com,那麼我寫的String類的包名就是com.oracle.java

    package com.oracle.java;    public class String{        ...    }

使用Internet網域名稱反序作為包名,並非強制性,也可以使用其他名稱,只要盡量保證包名唯一即可,所以常用的就是使用路徑名作為包名,利用作業系統的目錄階層作區分。例如,我寫了一個String類,放在$CLASSPATH/java/util/目錄下,那麼包名就是java/util

    package java.util;    public class String{        ...    }
實戰代碼

CLASSPATH環境變數包含了F:/WorkDirectory/

全路徑為F:/WorkDirectory/net/wuhui/util/MyString.java的類檔案,其包名應為net.wuhui.util,這樣編譯器可以準確定位到MyString這個類。

    package net.wuhui.util;    public class MyString{        System.out.println("MyString");    }

測試類別F:/WorkDirectory/test/Test.java,匯入上面自訂的MyString類,並使用他它。

    import net.wuhui.util.MyString;    public class Test{        public static void main(String [] args){            MyString s = new MyString();        }    }

有不正確地方,歡迎指出,萬分感謝!

Java package 和 import

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.