java包的引用是什么意思_包的概念是什么?引用整个包a和import a.*有什么不同?...

package b.a 是不是说引用b目录下的a子目录的所有class文件?

包是不是就是指目录呢?没有专门的包文件吧。。?

另外,package b.a和Import b.a.*有什么区别?

CLASSPATH是什么,是不是package import的搜索跟目录?怎样设置?

|

package a

是指把这个class放在a里面,可以认为是指明路径

调用的时候用import a.*;

|

先对你说明一点,引用包是import,不是package,package是把这个class或interface放到一个包中。所以,没有什么package b.a.*;这种情况,package只能把这个class或interface放入一个明确的包中。

import一个class或interface时,你可以具体到这个想要用到的class或interface,如:import java.util.ArrayList;同样,你可以把util这个包中的所有的class或interface一次都包进来,import java.util.*;这样做的好处就是不用一个一个的引入了。classpath是你的程序运行时所要引用的包的路径,所以如果你的程序中要用到一些特定的包,你就要把这些包放入classpath中,当然,并不是说只要你import了,你就一定要在classpath中明确的包括这些包,这还与你装的jdk有关。

|

package实际上是一个名字空间。当你写:

package A

意思就是说“下面的代码都属于名字空间A”。如果没有这个声明,则代码属于default名字空间。

从default名字空间是访问不到A名字空间的,你必须告诉编译器“我要访问A名字空间”。怎么说?这样:

import A.*;

为什么要加上.*?这就表示“我要访问A名字空间下所有的类”。如果你明确知道要访问A里面的B类,就这样:

import A.B;

(顺便纠正gularess的一个错误:import不像include。C++中的include是包含源代码,而import是导入名字空间中的可执行单元。从这个意义上来说,import更像是C++中的using语句。)

至于CLASSPATH,那是JDK的一个参数。你可以到JDK的bin目录下去,输入java和javac,可以看到,这两个程序都有-CLASSPATH参数。什么意思呢?就是告诉java(或者javac):可能有些文件不是在JDK的默认路径下,你要到另外的地方去找。它跟package、import都没关系。package、import指的是名字空间,CLASSPATH指的是文件路径。

最后,关于CLASSPATH的设置:你可以在windows命令行下用set命令去设置:

set CLASSPATH = "c:jdk"

也可以在运行java(或者javac)的时候动态设置:

java -CLASSPATH="c:myprogram" a.class

现在能明白了吗?回去继续看书吧。

|

package就是用来打包你编的类用的,

import就是用来引入大包后的类的,

classpath就是告诉编译器所需的包在哪个文件夹里!

|

包的source是一个目录,比如你自己要建一个包的时候,你就要先建一个目录,把你的文件放入,编译。但是为了方便应用,一般情况下,我们得到的包是一个打好的jar或zip文件。

|

存在形式就是一个文件夹,这里面有bak、 classes、 defaultroot 、src、 work子文件夹。

|

你说的“包”是指package吧?

package是一个名字空间(name space),但是java强制要求package和目录对应。还记得刚才说到CLASSPATH吗?假设我们这样设置CLASSPATH:

set CLASSPATH = "C:program"

那么,java会把C:Program这个目录作为根(root),也就是默认名字空间的位置。如果你在c:programa下面放一些文件,就应该把它声明为package a,不然会出现一些错误,你可以自己试试。

王森在《程序员大本营2001》JAVA版上有一篇文章非常详细地介绍了这个问题,建议你去看看。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值