java的包

说到包,就是一个容器,里面可以存放许多东西,而java中的包,就是用来装类的,这样就可以方便的组织自己的代码,并将自己的代码与别人提供的代码库分开管理,避免产生混乱。


java之所以这么强大,有很大原因是因为java拥有强大的类库,而类库就是使用包组织起来的。

标准的java包具有一个层次结构。就像硬盘的目录嵌套一样,也可以使用嵌套层次组织包。

所有的标准java包都处于java和javax包层次中。


包可以很好的确定类名的唯一性,而Sun公司建议将公司的因特网域名以逆序的形式作为包名,很明显,这更加确定了类名的唯一性。比如,假设的我注册的域名是beibeidezhuye.com,那么我就可以创建一个名为com.beibeidezhuye这样的一个包来管理我的代码。


额。。。说了这么多,好像还没提到怎么使用包,下面就说明一下如何使用包和将自己的类放入包中:

包的使用无非就是使用其他包中的类和将自己的类放在一个包中

使用其他包中类的操作叫做导入包(类),而根据导入的方法不同,可以分为导入和静态导入

将自己的类放在一个包中可以在自己的代码的最上方写上 package 包名


于是,下面就一一道来:

首先看看导入的方法,导入的方法有两种:第一种方式是在每一个类名之前添加完整的包名,第二种方法就是使用import关键字导入。

例子:

第一种:


第二种:


注:    .*叫做通配符。

或者直接具体到某个类:



然后是静态导入,静态导入的作用就是可以使用导入后的静态方法和静态域,而不用再加类名前缀,当然,也可以具体到某个方法。

示例1:


示例2(导入具体的方法)



下面介绍如何将自己写的类放入包中:

没错,只需import包名(可以到具体类)即可,简单霸气。

示例:


这个类此时就在com.zhangyanjie这个包中

如果你这时突发奇想想使用控制台的命令来编译这个文件,那么可以使用类似于以下的命令:

javac com/zhangyanjie/PackageTest.java

然后运行的时候就得使用如下命令:

java com.zhangyanjie.PackageTest


其实包这个东西并不是什么神秘的东西,如果你使用文件管理器跑到你的项目目录下查看,就会发现其实就是新建了一个文件夹,把你的类放进去了,所以对于为什么使用命令行编译的时候要加入路径就不足为奇了,蛤蛤。


说了这么多,我们对于类的导入和将自己的类放入包中的操作都会了,但是,下面有几个值得我们注意的问题:

(1)使用*号时只能导入一个包,而不能有类似于import java.*或者import java.*.*的导入语句。

(2)不排除导入的两个包中使用了同一个类名、变量名或常量名的意外情况,这时候就应该特别写一句具体导入哪个包中的类、变量名或常量名。如果两个包中的都需要用,那么没办法,只能使用上面说的第一种导入方法。

(3)虽然我们感觉上import与c++的#include一样,但是两者其实并没有什么共同之处,后者(c++)必须使用#include将外部特性的声明加载进来,这是因为后者(c++)的编译器无法查看任何文件的内部,除了正在编译的文件以及在头文件中明确包含的文件,而前者(java)编译器可以查看其它文件的内部,只要告诉它到哪里去看就行了。在c++中,与包机制类似的是命名空间。

(4)包的作用域是default(实际并没有这个关键字)。

猜你喜欢

转载自blog.csdn.net/qq_37080070/article/details/79942669