淺議package、import、import static

    我們也許知道,Java引入包機制,提供了類的多層命名空間,解決了類的命名衝突、類文件管理等問題。但是總會出現一些問題。


問題


    E:\Demo\java  中的文件有:Zi.java、Test.java兩個文件


Zi.java中代碼如下:

public class Zi 
{
	public void print()
	{
		System.out.println("abc");
	}
}

Test.java中代碼如下:

import com.Zi;
public class Test
{
	public static void main(String[] args)
	{
		new Zi().print();
	}
}

在dos窗口中編譯Zi.java,【javac -d . Zi.java】,之後。發現Zi.class文件在當前目錄中,於是我新建了一個com文件夾並將該類文件放入其中


然後,編譯Test.java,【javac Test.java】,編譯出錯:

    E:\Demo\java>javac Test.java

    Test.java:2: 無法訪問 com.Zi

    錯誤的類文件: .\com\Zi.class

    類文件包含錯誤的類: Zi

    請刪除該文件或確保該文件位於正確的類路徑子目錄中。

    import com.Zi;


    爲什麼會出現這樣的錯誤呢?查找資料後給出的是以下解釋:


    很多初學者以爲只要把生成的class文件放在某個目錄下,這個目錄名就成了這個類的包名。這是一個錯誤的看法,不是有了目錄結構,就等於有了包名。爲Java類添加包必須在Java源文件中通過package語句指定,單靠目錄名是沒法指定的。因此,Java的包機制需要兩個方面保證:1、源文件裏使用package語句指定包名;2、class文件必須放在對應的路徑下。

問題二


    import    static  有何作用?


    這是JDK1.5以後增加的一種靜態導入語法,它用於導入指定類的某個靜態field、方法或全部的靜態Field、方法。這裏所指的靜態field、方法就是類屬性、類方法。

    import與import static的作用:使用import可以省略包名,而使用import static則可以連類名都省略。

import static java.lang.System.*;
import static java.lang.Math.*;
public class Test
{
	public static void main(String[] args) 
	{
		//out是java.lang.System類的靜態Field,代表標準輸出
		//PI是java.lang.Math類的靜態Field,表示π常量
		out.println(PI);
		//直接調用Math類的sqrt靜態方法
		out.println(sqrt(256));
	}
}





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