Java 包的使用方法

本文介绍了在命令行环境中如何正确使用Java包,强调了包的层次结构与文件目录的对应关系。通过实例展示了如何编译和运行包含包的Java程序,解释了为何在指定目录下运行类会报错,以及如何通过带包编译解决这个问题。同时,指出了类的完全限定名在运行时的重要性。
摘要由CSDN通过智能技术生成

Java 包的使用方法

关于包的机制各大资料书其实解释的很详尽了,这里我讲一下让很多萌新(包括我)头疼的的在命令行窗口正确使用包的方法。
包的层次结构其实就类似于我们的文件目录。比如我在D:\course\JavaSE\package 内新建一个HelloWorld.java文件,在这个文件里写一个打印字符串 “HelloWorld” 的类,并把这个类放在包com.wmxtmm中。
在这里插入图片描述

package com.wmxtmm;
public class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World");
	}
}

这时候如果我们javac HelloWorld.java 发现是可以编译成功的,但是当我们按以前的习惯去java HelloWorld 时发现它会说找不到类 HelloWorld 。

这是为什么呢?包其实就类似于文件夹,比如我们电脑的C盘中会有AppData,Windows,Program Files 等文件夹。当我们把 HelloWorld.class 放入包 com.wmmtmm 中时就相当于把 HelloWorld.class 放进了D:\course\javase\package\com\wmxtmm内。

但要注意的是我们这时候还没有在package内新建com文件夹并在com文件夹内新建wmxtmm文件夹。直接javac HelloWorld.java 编译虽然会成功,但是编译器并不会自动帮我们生成com、wmxtmm这两个文件夹。这时只能自己新建这两个文件夹,并且要自己剪切HelloWorld.class 到wmxtmm目录下。这时候需要自己新建com和wmxtmm,并把HelloWorld.class移到wmxtmm内

如果我们不想这么麻烦呢?那就使用带包编译,这时候系统会自动生成com和wmxtmm,并且HelloWorld.class会自动放进wmxtmm内。
命令是 java -d . HelloWorld.java
其中 -d 是带包编译,. 是表示编译后生成的东西放到当前目录下。
在这里插入图片描述

这时候再去打开文件夹package,会发现package目录下会自动生成了com文件夹,com内会生成wmxtmm文件夹,并且HelloWorld.class已经在文件夹wmxtmm内。

在这里插入图片描述

从上述操作我们可以发现,我们把类放入包中,生成的这个包其实是在当前目录下生成的,比如我们我们的源文件是在package 目录下,这时我们带包编译生成的包就会在package这个目录下新建文件夹。

  • 如何运行HelloWorld.class ?

    即使我们把命令行窗口的目录切到D:\course\javase\com\wmxtmm内,然后再java HelloWorld ,你会发现还是说找不到该类。在这里插入图片描述

    这是因为当我们把HelloWorld.class 放入包com.wmxtmm中后,这时候HelloWorld就不是该类的类名了,这时候该类的类名就变成了 com.wmxtmm.HelloWorld 了,包名+类名这种形式叫这个类的完全限定名。所以这时候我们要退回 D:\course\javase\package 下,用如下命令来运行。
    成功运行

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值