Java的包机制

Java的包机制

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

Java允许将 一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,应该在Java源程序的第一个非注释行放置如下格式的代码:

package packageName;

比如说如下代码:

package chen;

public class Hello

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

然后使用如下命令来编译这个Java文件:

javac -d . Hello.java

-d选项用于设置编译生成class文件的保存位置,这里指定生成的class文件放在当前路径下。使用该命令编译该文件后,发现当前路径下并没有Hello.class文件,而是在当前路径下多了一个名为chen的文件夹,该文件夹下则有一个Hello.class文件。

这是因为Java规定,位于包中的类,在文件系统中也必须有与包名层次相同的目录结构。

对于上面的Hello.class,它必须放在chen文件夹下才是有效的,当使用带-d选项的javac命令来编译Java源文件时,该命令会自动建立对应的文件结构来存放相应的class文件。

如果直接使用javac Hello.java命令来编译这个文件,将会在当前路径下生成一个Hello.class文件而不会生成chen文件夹。也就是说,如果编译Java文件时不使用-d选项,编译器不会为Java源文件生成相应的文件结构。鉴于此,应该在编译Java文件时总是使用-d选项。

那么现在问题来了,要运行该Java程序,应该是进入chen文件夹下还是在chen文件夹所在路径,应该是执行java Hello还是java chen.Hello???

接下来进行四个试验:

chen文件夹所在路径:

java chen.Hello:正确执行

java Hello:找不到或无法加载主类

进入chen文件夹下

java chen.Hello:找不到或无法加载主类

java Hello:找不到或无法加载主类

由此可以看出,要执行有包结构的源程序,应该在包所在路径执行

java packageName.className

由此引申出Java项目文件组织结构:

源文件和类文件分开放,分开放在相同包名的srcclasses文件夹下。

如下图所示:


注意:包名应该全是小写字母,一个源文件只能制定一个包。

还可以定义子包,如下代码:

package chen.sub

public class Apple{}

如果父包中的类需要使用子包中的类,也必须使用子包的全名,不能省略父包部分。

正如上面看到的,如果需要使用不同包中的其他类,总是需要使用该类的全名,这是一件很繁琐的事情。

为了简化编程,Java引入了import关键字,import可以向某个Java文件中导入指定包层次下的某个类或全部类,import语句应该出现在package语句之后、类定义之前。

Java默认为所有源文件导入java.lang包下的所有类,因此前面在Java程序中使用StringSystem类时都无需使用import语句来导入这些类。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值