5.4.3 package、import和import static

本文深入介绍了Java中的包机制,包括如何使用package语句指定包名、类文件的目录结构要求、包名的命名规范,以及如何通过import语句导入类等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java引入了包(pacakage)机制,提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题。

package chap5_3;

public class Hello {
    public static void main(String[] args)
    {
        System.out.println("hello world");
    }

}

Java规定:位于包中的类,在文件系统中也必须有与报名层次相同的目录机构。
java -d .Hello.java
对于上面的Hello.class,它必须放在chap5_3文件夹下才是有效的,当使用-d选项的javac命令来编译Java源文件时,该命令会自动建立对应的文件结构来存放相应的class文件。
如果编译Java文件时不使用-d选项,编译器不会为Java源文件生成相应的文件结构。
进入编译器生成的chap5_3文件夹所在路径,执行如下命令:
java chap5_3.Hello
看到上面程序正常输出。
注:同一个包中的类可以位于不同的目录中,只要让CLASSPATH环境变量里包含这两个路径即可。虚拟机会自动搜索CLASSPATH下的子路径,把它们当成同一个包下的类来处理。
Java的包机制需要两个方面保证:1.源文件里使用package语句指定包名。2.class文件必须放在对应的路径下。
注:包名应该全部是小写字母,而且应该由一个或多个有意义的单词连缀而成。
一个源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部位于该包下。

package chap5_3;

public class HelloTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Hello h=new Hello();

    }

}

父包和子包在用法上不存在任何关系,如果父包中的类需要使用子包中的类,则必须使用子包的全名,而不能省略父包部分。
import可以向某个Java文件中导入指定包层次下某个类或全部类。多个import语句用于导入多个包层次下的类。
使用import chap5_3.*;语句后,它表明导入chap5_3包下的所有类。
一旦在Java源文件中使用import语句来导入指定类,在该源文件中使用这些类时就可以省略包前缀,不再需要使用全类名。
System类使用时无需使用import语句来导入这些类,Java默认为所有源文件导入java.lang包下的所有类。而使用数组时使用的Arrays类,位于java.util包下, 需要导入。
静态导入使用import static语句,使用import可以省略包名,而使用import static则可以连类名都省略。

package chap5_3;
import static java.lang.System.*;
import static java.lang.Math.*;

public class StaticImportTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        out.println(PI);
        out.println(sqrt(256));
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值