一、打包的意义

  • 标准java库是由一系列包组成,包括java.lang java.util java.net等等
  • 标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
  • java的包是为了更好地规划代码,防止命名冲突和混乱。所以java出现了打包机制
  • 当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,您就拥有了该包内的程序代码
  • 包访问权限把类聚集在一个包中这一做法提供了意义和理

二、Package声明包

  • java程序猿都可以编写属于自己的java包,为了保证包名唯一性,要求程序猿在自己定义包的名字前加上唯一前缀
  • 由于互联网上的域名称不会重复,所以推荐采用公司在互联网上的域名的倒置作为包的唯一前缀
  • 一个类可以使用同一个包中的所有类
    一个类可以使用其它包中的所有公开类
  • 怎么使用其它包中的公开类
    在每个类签名加上完整包名,例如:
    java.util.Data today = new java.util.Date();
    更简洁更通用的方式:使用import语句来导包(eclipse ctrl+shift+o)
    import java.util.Date;

    Date today = new Date();
    可以import特定类,也可以导入整个包。通过在源代码文件的顶部(在打包语句后)使用import语句来实现import java.util.*;

三、DEMO

java 源文件打包 java打包原理_java包

  • Demo3.java
package com.xiaoma.learn;

import com.xiaoma.use.*;

public class Demo3 {
	public static void main(String[] args) {
		
		Demonew  dm = new Demonew();
		dm.name = "xiaoma";
		dm.printfname();
		
		
		com.xiaoma.use.Demonew dm2 = new com.xiaoma.use.Demonew();
		dm2.name = "xiaoma";
		dm2.printfname();
	}
}
  • Demonew.java
package com.xiaoma.learn;

public class Demonew {
	public String name;
	public void printfname(){
		System.out.println("同一个包name=" + name);
	}
}
运行结果
同一个包name=xiaoma
非同一个包name=xiaoma
  • 两个包com.xiaoma.learn 和 com.xioma.use
    learn里有Demo3.java和Demonew.java 同一个包可以相互调用 若想用use里有Demonew.java则需要用import导包
    use里有Demonew.java