当前位置:  技术问答>java相关

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

    来源: 互联网  发布时间:2015-06-06

    本文导语:  package b.a 是不是说引用b目录下的a子目录的所有class文件? 包是不是就是指目录呢?没有专门的包文件吧。。? 另外,package b.a和Import b.a.*有什么区别? CLASSPATH是什么,是不是package import的搜索跟目录?怎样设置...

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版上有一篇文章非常详细地介绍了这个问题,建议你去看看。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • win7, win8安装docker需要了解的概念
  • 操作系统概念问题(虚地址概念)
  • 哈希表及其概念
  • LINUX下有没有线程概念,和WIN下线程概念有什么不同,谢谢.
  • 正向代理与反向代理概念及其区别
  • 概念请教,一定给分,谢谢各位
  • php会话(session)生命周期概念介绍及设置更改和回收
  • 关于socket概念的理解问题!
  • Spring AOP中Pointcut,dvice 和 Advisor三个概念介绍
  • 请问unix/linux下Cb编程中,是否有工程的概念。
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 谁能给我详细讲解一下分区,文件系统的概念?
  • 网络接口的概念?
  • 一个最简单的问题:www服务器与web服务器是否一个概念?
  • 刚接触ubuntu ,一些概念有点乱,谁帮我理一下
  • 多任务,多进程,多线程的概念
  • 概念問題
  • 类和对象的概念区别!
  • 在Linux里有没有DLL这个概念?
  • 菜鸟提问:包是什么概念?
  • 哪一位高手能提供关于进程池的完整的概念?30分奉送!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3