在说package、import机制前我们先来了解下java的CLASSPATH。

CLASSPATH顾名思义就是class的路径,当我们在系统中运行某个java程序时,它就会告诉系统在这些地方寻找这个class文件

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 这是我们java默认环境变量设置。
“.”的意思是在当前这个文件夹找;%JAVA_HOME%\lib是在java安装路径的lib文件夹找;%JAVA_HOME%\lib\tools.jar是在java安装路径的lib文件夹的tools压缩包中找。
现在让我们来测试下吧:
在C:\DOM中新建HelloWorld.java

//: HelloWorld.java
public class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}

首先javac HelloWorld.java,系统会在这个目录中找到HelloWorld.java文件,编译出HelloWorld.class文件。Java HelloWorld,系统会先调用CLASSPATH路径,我们设置了“.”这个目录,所以会在当前目录中找到HelloWorld.class。运行成功。

**换个地方运行这个程序
我们在C盘运行java HelloWorld**

系统会现在CLASSPATH路径寻找HelloWorld.class。但是在”.”(现在是C盘)找不到这个文件。
我们现在把C:\DOM路径加入到CLASSPATH

为了更新系统环境变量我们需要重新启动dos窗口

系统会在CLASSPATH中找到C:\DOM这个路径,再找到HelloWorld.class这个文件。运行成功。
现在我们明白了CLASSPATH的作用了^^

关于PACKAGE
我们来改写这个程序,加入package

//: HelloWorld.java
package a.b;
public class HelloWorld{
public static void main(String[] args){
System.out.println(“Hello Wolrd!”);
}
}

编译成功,但是不能运行。
系统在找到HelloWorld.class时就会读取到package a.b;这个信息,这个告诉系统这个HelloWorld.class是要放在a文件夹的b文件夹中。但是现在我们的HelloWorld.class是在DOM这个文件夹。文件路径和package不能对应,无法运行。
现在我们来新建a/b这个两个文件夹,然后把HelloWorld.class复制到b文件夹中。然后再运行java HelloWorld

对不起!还是没有运行成功。系统在CLASSPATH中寻找HelloWorld.class文件,但是这个文件被隐藏在a文件夹中的b文件夹。
我们来试试java a.b.HelloWorld

运行成功了,系统在CLASSPATH中的“.”文件夹找到a文件夹,然后b文件夹,找到HelloWorld.class文件。
现在明白package的作用了,它是一定要符合从CLASSPATH出发的目录结构的。

关于IMPORT
Import的作用是当你调用另一个class的时候,告诉系统,要找哪里才能找到这个class。
我们在C:\DOM的目录下写一个调用a\b\HelloWorld.class的程序。

//: TestHelloWorld.java
import a.b.HelloWorld;
public class TestHelloWorld{
public static void main(String[] args){
HelloWorld hw=new HelloWorld();
hw.main(args); //调用HelloWorld中的main()函数,args是引数,会打印出HelloWorld!
}
}

编译运行成功!
编译:系统在个这个文件夹中找到TestHelloWorld.java文件,检查import a.b.HelloWorld; 找CLASSPATH中找到a\b\HelloWorld.class。编译通过完成!
运行:系统现在CLASSPATH中找到TestHelloWorld.class,然后读取import a.b.HelloWorld; 导入HelloWorld.class,运行成功!
到此为止,你应该明白package 和 import的作用了。

java的package和import机制的更多相关文章

  1. JAVA package与import机制

    JAVA package与import机制 http://files.cnblogs.com/files/misybing/JAVA-package-and-import.pdf import org ...

  2. 从一个简单的例子谈谈package与import机制

    转,原文:http://annie09.iteye.com/blog/469997 http://blog.csdn.net/gdsy/article/details/398072 这两篇我也不知道到 ...

  3. java之package与import

    我就以package与import开始吧. package的作用其实就是c++的namespace的作用,防止名字相同的类产生冲突,只是实现的机制不一样,java编译器在编译时,直接根据package ...

  4. JAVA中 package 和 import 的使用

    1.打包--package 包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名.如果在类的定义之前没有使用package定义包名,那么该类就属于缺 省的包. 1.1 ...

  5. package和import机制

    package是Java中的包机制,包机制的作用是方便为了程序的管理.不同功能的类机制分别存放在不同的包下面.(按照功能划分,不同的包有着不同的性质) package怎么使用:package是一个关键 ...

  6. Java中package与import

    使用实例: package 一般来说,package语句必须作为源文件的第一条非注释性语句.一个java源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部 ...

  7. 【20140113】package 与 import

    一个完整的java源程序应该包括下列部分: package语句: //该部分至多只有一句,必须放在源程序的第一句 import语句: public classDefinition: //公共类定义部分 ...

  8. java JDK动态代理的机制

    一:前言 自己在稳固spring的一些特性的时候在网上看到了遮掩的一句话“利用接口的方式,spring aop将默认通过JDK的动态代理来实现代理类,不适用接口时spring aop将使用通过cgli ...

  9. 乐字节Java|GC垃圾回收机制、package和import

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

随机推荐

  1. 巨蟒python全栈开发-第11阶段 ansible_project5

    今日大纲 1.命令展示前端页面实现(下面有个断点) 2.命令下发后端展示

  2. Uva 568 【大整数】

    UVa568 题意:求N!(N<=10000)的最后一位非0数. 10000以内5^5 = 3125最多可以影响后5位.所以直接保存后五位就行. #include<iostream> ...

  3. 胡喜:从 BASIC 到 basic ,蚂蚁金服技术要解决两个基本的计算问题

    摘要: 揭开 BASIC College 神秘面纱,蚂蚁金服首次揭秘人才培养机制. 导读:5 月 6 日,蚂蚁金服副 CTO 胡喜在 2019 年 QCon 上做了<蚂蚁金服十五年技术架构演进之 ...

  4. day5-python之面向过程编程

    一.面向过程编程 #1.首先强调:面向过程编程绝对不是用函数编程这么简单,面向过程是一种编程思路.思想,而编程思路是不依赖于具体的语言或语法的.言外之意是即使我们不依赖于函数,也可以基于面向过程的思想 ...

  5. Linux系统服务及软件包的管理

     要点回顾 free命令查看内存 整理buffer与cache的作用 1.buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的. 2.cache(缓存) 从CPU ...

  6. @省选模拟赛03/16 - T3@ 超级树

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...

  7. Vue点击事件失效

    在做项目时给button添加click事件,发现没反应,但另外写了一个button添加同样的事件,却能触发.原因是使用了better-scroll,默认它会阻止touch事件.所以在配置中需要加上cl ...

  8. angular select框 option空行

    1.使用option <select class="form-control" ng-model="searchType"> <option ...

  9. python新知识

    # 强制字符串转化 repr(1.1 + 2.2) # 字符串换行 a = "hello, world. " \ "it's a nice day. " \ & ...

  10. hdu 1045 Fire Net(dfs)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...