浅议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));
	}
}





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