打包的意义
- 标准Java库是由一系列包组成,包括java.lang java.util java.net等等
- 标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
- java的包是为了更好地规划代码,防止命名冲突和混乱。所以Java出现了打包机制
- 当把类组织起来放进一个包内之时,也就给包中的成员赋予了相互访问的权限,您就拥有了该包内的程序代码
- 包访问权限把类聚集在一个包中这一做法提供了意义和理由
声明包
- java程序员都可以编写属于自己的java包,为了保证包名唯一性,要求程序员在自己定义包的名字前加上唯一前缀
- 由于互联网上的域名名称不会重复,所以推荐采用公司在互联网上域名的倒置作为包的唯一前缀
一个类可以使用同一个包中的所有类
一个类可以使用其他包中的所有公开类
怎么使用其他包中的公开类
- 在每个类签名加上完整包名,例如
- java.util.Data today = new java.util.Date();
- 更简洁更通用的方式:使用import语句来导包(eclipse ctrl+shift+p)
- import java.util.Date;
- ……
- Date today = new Date();
- 可以import特定类,也可以导入整个包。通过在源代码文件的顶部(在打包语句后)使用import语句来实现import
java.util.*;
实例
这些是我创建的,不是系统里面有的哦~
包名:com.simple.learn 类名:Test
package com.simple.learn;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Demo stu1 = new Demo();//用的本包的Demo
com.simple.use.Demo stu2 = new com.simple.use.Demo();//用了其他包的Demo
Scanner scanf = new Scanner(System.in);
stu2.name = "Niko";
System.out.println("这是用了不同包的 stu2.name = "+stu2.name);
System.out.println("please input num");
stu1.age = scanf.nextInt();
System.out.println("这是用了同一个包的 stu1.age = "+stu1.age);
}
}
包名:com.simple.learn 类名:Demo
package com.simple.learn;
public class Demo {
public int age;
public String name;
public void putName()
{
System.out.println("com.simple.use Demo Name ="+name);
}
public static void main(String[] args) {
//在不同的包可以有名字相同的类,调用的话前面需要加包名来指定哪个是其他包的类
//一般很少这样写
com.simple.use.Demo stu2 = new com.simple.use.Demo();
stu2.age = 10;
System.out.println("age = "+stu2.age);
stu2.name = "simple";
stu2.putName();
}
}
包名:com.simple.use 类名:Demo
package com.simple.use;
public class Demo {
public int age;
public String name;
public void putName()
{
System.out.println("com.simple.use Demo Name ="+name);
}
}
结果
Test的结果
这是用了不同包的 stu2.name = Niko
please input num
996
这是用了同一个包的 stu1.age = 996
Demo的结果
age = 10
com.simple.use Demo Name =simple
常用的包
1. java.lang包
该包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。
2. java.util包
该包含集合框架、遗留的 collections 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。集合类、时间处理模式、日期时间工具等各类常用工具包
3. java.io包
Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出等。IO是以流为基础进行输入输出的,所有数据被序列化写入输出流,或者从输入流读入。
4. java.net包
该包包含一些与网络相关的类和接口,以方便应用程序在网络上传输信息。如主机名解析类、实现套接字通信的Socket类和ServerSocket类、资源定位器(URL)类等
5. java.sql包
该包提供了使用Java语言对数据库进行操作的类。
6. java.awt包
AWT是用于创建用户图形界面的一个工具包,提供了一系列用于实现图形界面的组件,该包是JAVA语言用来构建图形用户界面(GUI)的类库,包括创建界面和绘制图形图像的所有类,如窗口、按钮、文本框、对话框等,在JDK中针对每个组件都提供对应的Java类。
7. javax.swing包
该包提供了一组“轻量级”的组件,以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
8. java.text包
该包提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。