java的package和import机制
在说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机制的更多相关文章
- JAVA package与import机制
JAVA package与import机制 http://files.cnblogs.com/files/misybing/JAVA-package-and-import.pdf import org ...
- 从一个简单的例子谈谈package与import机制
转,原文:http://annie09.iteye.com/blog/469997 http://blog.csdn.net/gdsy/article/details/398072 这两篇我也不知道到 ...
- java之package与import
我就以package与import开始吧. package的作用其实就是c++的namespace的作用,防止名字相同的类产生冲突,只是实现的机制不一样,java编译器在编译时,直接根据package ...
- JAVA中 package 和 import 的使用
1.打包--package 包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名.如果在类的定义之前没有使用package定义包名,那么该类就属于缺 省的包. 1.1 ...
- package和import机制
package是Java中的包机制,包机制的作用是方便为了程序的管理.不同功能的类机制分别存放在不同的包下面.(按照功能划分,不同的包有着不同的性质) package怎么使用:package是一个关键 ...
- Java中package与import
使用实例: package 一般来说,package语句必须作为源文件的第一条非注释性语句.一个java源文件只能指定一个包,即只能包含一条package语句,该源文件中可以定义多个类,则这些类将全部 ...
- 【20140113】package 与 import
一个完整的java源程序应该包括下列部分: package语句: //该部分至多只有一句,必须放在源程序的第一句 import语句: public classDefinition: //公共类定义部分 ...
- java JDK动态代理的机制
一:前言 自己在稳固spring的一些特性的时候在网上看到了遮掩的一句话“利用接口的方式,spring aop将默认通过JDK的动态代理来实现代理类,不适用接口时spring aop将使用通过cgli ...
- 乐字节Java|GC垃圾回收机制、package和import
本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...
随机推荐
- CODE FESTIVAL 2017 qual B B - Problem Set【水题,stl map】
CODE FESTIVAL 2017 qual B B - Problem Set 确实水题,但当时没想到map,用sort后逐个比较解决的,感觉麻烦些,虽然效率高很多.map确实好写点. 用map: ...
- Audio Session Programming Guide
http://www.cocoachina.com/ios/20150615/12119.html
- python 清空文件夹
#!/usr/bin/env python# -*- coding:utf-8 -*-import os def del_file(path): for i in os.listdir(path): ...
- 异常处理之try catch finally
package com.sxt.wrapper.test2; /* 0418 * 异常处理 * 采用异常处理的好处:保证程序发生异常后可以继续执行 * e.printStaceTrace:打印堆栈信息 ...
- HZOJ 模板(ac)
调了一天,恶心死我了……作者的题解水的一b…… 测试点1-6: 暴力修改查询即可,期望得分30. 测试点7-14: k=1e5,相当于没有限制,那么对于树上每个点建权值线段树,线段树合并即可. 期望的 ...
- thinkphp 清理runtime缓存的方法, 清理指定目录
https://blog.csdn.net/qq_22823581/article/details/79081497 hinkphp 清理runtime缓存的方法, 清理指定目录 function d ...
- ViewPager封装工具类: 轻松实现APP导航或APP中的广告栏
相信做app应用开发的,绝对都接触过ViewPager,毕竟ViewPager的应用可以说无处不在:APP第一次启动时的新手导航页,APP中结合Fragment实现页面滑动,APP中常见的广告栏的自动 ...
- ODT模板
struct node{ int l,r; mutable int v; node(int L,int R,int V):l(L),r(R),v(V){} inline bool operator & ...
- php函数nl2br的反函数br2nl
真是搞不明白,php里有nl2br这样的好函数,但是为什么就没有它的反函数呢?只好自己在网站找了一个br2nl.分两个版本:php和javascript的. php版的代码如下: function b ...
- Android教程-01 Android Studio创建第一个项目
视频教程建议采用超清模式, 关注更多视频订阅我的优酷 最近一直使用Android Studio 简单把Android Studio介绍下 1. 首先介绍下 Android Studio的快捷键 由于之 ...