包机制是Java中管理类的重要手段。 开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理。 包对于类,相当于文件夹对于文件的作用。
我们通过package实现对类的管理,package的使用有两个要点:
1. 通常是类的第一句非注释性语句。
2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。
package的命名举例
com.sun.test;
com.oracle.test;
cn.sxt.yang.test;
cn.sxt.yang.view;
cn.sxt.yang.view.model;
注意事项:
1. 写项目时都要加包,不要使用默认包。
2. com.yang和com.yang.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
JDK中的主要包
lang包不需要导入就可使用
导入类import
注意要点:
1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类:
package cn.yzy;
//导入cn.Package包中的testPackage 类
import cn.Package.testPackage;
//导入cn.Package包中的所有类,如果只使用几个类不建议全导入回降低编译速度
import cn.Package.*;
//同时引入多个包中同名的类会报错
import java.util.Date;
//import java.sql.Date; //error
//但可以引入所有类这样写
import java.sql.*;
public class User {
public static void main(String[] args) {
testPackage pak2 = new testPackage();
//用包名+类名来显示调用相关类
cn.Package.testPackage pak = new cn.Package.testPackage();
//虽然同时引入了java.util.Date和java.sql.* (包含了java.sql.Date),但是并不会发生冲突,编译器会以精准的包为准
Date date = new Date();
//如果要用java.sql.Date,直接用包名+类名指定
}
}
静态导入
静态导入(static import)是在JDK1.5新增加的功能,其作用是用于导入指定类的静态属性,这样我们可以直接使用静态属性。
/**
*
* @author DELL
*
*/
import static java.lang.Math.PI;
//import static java.lang.Math.*; //静态导入,建议前者,节省编译时间开销
public class testStaticImport {
public static void main(String[] args) {
//非静态导入调用lang包中的Math类中的属性PI
System.out.println(Math.PI);
//也可以静态导入包,就可以直接使用静态属性
System.out.println(PI);
}
}