一、package介绍
Java中引入包(package)机制,解决了类的命名冲突(同一个文件下两个相同的类名)、类文件管理问题。包语法位置:把特定类放在指定包下,必须将包放在源程序的第一个非注释行的位置。
java中包的定义语法如下:
package 包名;
[修饰符] class 类名
{
}
例1:
package lee;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
一个包下可以包含多个类
例2
package lee;
public class HelloTest
{
public static void main(String[] args)
{
Hello h = new Hello();
}
}
编译:javac -d. HelloTest.java。必须指定编译路径,才会生成lee的包文件,该文件下生成包中的.class文件。
运行:java lee.HelloTest
注意:应该将源文件.java放在与包名一致的目录结构下。
包的作用:
从例2可以看出,同一个包下的类间,可以自由访问,无需添加包前缀。
子包定义:可以在包下再定义一个子包,定义语法如下:
package 包名.子包名;
[修饰符] class 类名
{
}
例3:
package lee.sub;
public class Apple
{
//省略变量,构造函数、方法等语句
}
使用子包:创建子包下类的实例时,需要使用包前缀,例:lee.sub.Apple a = new lee.sub.Apple();
从上面可以看出,使用不同包中的其他类时,需要使用该类的全名,比较繁琐。可以使用java中的关键字import来解决。
二、关键字import
import关键字可以导入指定包层次下的某个类或者全部类。import语法位置:写在package语句之后,类定义之前。
1.导入指定包下全部类的语法:
import package(包).subpacke(子包).*;
例4:import java.util.*;
导入java.util包下的所有类。
2.导入指定包下某个类语法:
import package(包).subpacke(子包).ClassName;
例5:
package lee;
//使用import导入lee.sub.Apple类
public class HelloTest
{
public static void main(String[] args)
{
Hello h = new Hello();
//1.未使用import语句导入Apple类。
lee.sub.Apple a = new lee.sub.Apple();
//2.使用import语句导入Apple类,就可以不使用类全名了
Apple aa = new Apple();
}
}
作用:上面1和2的语句实现的功能相同,选择一个即可,2使用import关键字简化了编程。
注意:某些特殊情况,需要使用包下的类全名,因为在import中导入多个包中,可能会出现西宁他的类名。如:java.sql和java.util中都存在Date类。
三、import static:
用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。位置:与import位置相同,与import和import static语句间顺序没有要求。
语法如下:
import static package.subpackage.ClassName.fieldName|methodName;
例6:
import static java.lang.System.*;
import static java.lang.Math.*;
public class StaticImportTest
{
public static void main(String[] args)
{
//out是 java.lang.System类的静态成员变量,代表标准输出
out.println(PI);
//调用static java.lang.Math类的静态成员变量
out.println(sqrt(256));
}
}
作用:使用import可以省略包名,使用import static可以省略包名和类名。