package 和 import 关键字

来源:互联网 发布:火花棱镜淘宝 编辑:程序博客网 时间:2024/04/30 19:13
import的作用
如果没有import,我们在使用java类库时就需要书写该类的全路径名,例如下面代码:
    java.util.ArrayList<Integer> list = new java.util.ArrayList<Integer>();
每次这样写要多敲很多字符,程序员都是很懒的,自然有人办法偷懒了,于是有了import,只需要在java文件开头部分导入相应的类的全名一次,之后就只需要写类名就可以引用该类了,例如:
    import java.util.ArrayList;
    ...
    ArrayList<Integer> list = new ArrayList<Integer>();
上面的java.util就是一个包,ArrayList是该包里面的一个类,
也可以使用通配符来表示引用某个包,这样可以偷懒不少,但是尽量少这样用了。
    import java.util.*;
编译时所有类名都会被替换成相应的完全路径名,如ArrayList比替换成java.util.ArrayList,这与我们自己书写完全路径名是一样的效果。
查找import的类时,按照环境变量CLASSPATH中指定的路径(如有多个,依此执行下面操作),将该路径作为根目录,然后将import后面的完全路径名中的.换成路径分隔符并添加.java后缀,将根目录与替换后的路径拼接成完全路径定位要引用的类文件。例如上面的导入的java.util.ArrayList类文件路径为$CLASSPATH/java/util/ArrayList.java。

package的作用
包用来将一组相互具有联系并组合起来完成某一功能的类聚集到一起,比如java中的工具库,通常一个库是由多个class所组成,为了方便组织我们把这组class放在同一个目录下,这个目录就是看作是一个java包(当然还需要在java文件开头用package声明一下)。
打个比方,package 名称就像是我们的姓,而 class 名称就像是我们的名字。package 名称有很多.的,就好像是复姓。比如说 java.lang.String,就是复姓 java.lang,名字为 String 的类别;java.io.InputStream 则是复姓java.io,名字为 InputStream 的类别。
但是实际中经常会出现重名的情况,这时候就需要用不同的姓作区分,例如A写了一个String类,B也写了个String类,为了区分,可以通过A.String和B.String分别表示他们各自的String类。按照惯例,java中习惯使用Internet域名的反序作为包名,例如我有一个域名java.oracle.com,那么我写的String类的包名就是com.oracle.java。

    package com.oracle.java;


    public class String{
        ...
    }
使用Internet域名反序作为包名,并非强制性,也可以使用其他名称,只要尽量保证包名唯一即可,所以常用的就是使用路径名作为包名,利用操作系统的目录层次结构作区分。例如,我写了一个String类,放在$CLASSPATH/java/util/目录下,那么包名就是java/util。

    package java.util;


    public class String{
        ...
    }
0 0
原创粉丝点击