package语句
什么是包
- 包是一组类的集合,可以包含若干个类文件,还可以包含若干个包;
- 防止重名(公司里边一般是公司的域名反着写,域名一般是唯一的);
- 形成层次化文件结构。
Java的包机制需要两个方面保证
- 源文件里使用package语句制定包名;
- class文件必须放在对应的路径下;
package语句
- java.lang:提供基本数据类型及操作
- java.util:提供高级数据类型及操作
- java.jo:提供输入/输出流控制
- java.awt:提供图形窗口界面控制
- Java.awt.event:提供窗口事件处理
- Java.net:提供支持internet协议的功能
- Java.applet:提供实现浏览器环境中
- applet:的有关类和方法
- Java.sql:提供与数据库联接的接口
- Java.rmi:提供远程联接与载入的支持
- Java.security:提供安全性方面的有关支持
包的声明
格式为: package 包名;
package mypack;
class A{
......
}
- 包语句一般在类文件开头
- 如果源程序中省略了package语句,文件中所定义命名的类被隐含地认为是无名包的一部分,即源文件中定义命名的类在同一包中,但该包没有名字(直接在javaproject下)
包与文件夹
- Java使用文件系统来存储包和类。包名就是目录名(也称文件夹名),但目录名并不一定是包名。为了声明一个包,首先必须建立一个相应的目录结构,目录名与包名一致。在类文件的开头部分放入包语句后,这个类文件中定义的所有类都被装入到包中。
- 用javac编译源程序时,如遇到当前目录(或包)中没有声明的类,就会以环境变量classpath为相对查找路径,按照包名的结构来查找。因此,要指定搜寻包的路径,需设置环境变量classpath。
import语句
- import语句可以引入包中的类。在编写源文件时,除了自己编写类之外,还可以使用java提供的类;
- 使用类库中的类;
//使用包java.awt中所有的类
import java.awt.*;
//使用包java.awt中的Data类
import java.awt.Date;
- 系统自动加入java.lang包中所有的类;
- java类库被包含在目录\jre\lib中的压缩文件rt.jar中,当程序执行时,java运行平台从类库中加载程序真正使用的类字节码到内存;
- 使用自定义包中的类;
import tom.jiafei.*;
- 避免类名混淆
Java运行环境总是先到程序所在目录中寻找程序所使用的类,然后加载到内存。如果在当前目录没有发现所需要的类,就到import语句所指的包中查找;
//程序名称: Je030701.java
//功能:演示类的访问控制的使用
package mypack1;
public class Je030701 {
int x;
public void setx(int x1){
x=x1;
}
public int getx( ){
return x;
}
}
class A {
int x,y;
public void setxy(int x1,int y1){
x=x1;y=y1;
}
public int getx( ){
return x;
}
public int gety( ){
return y;
}
}
//程序名称:Je030702.java
//功能:演示类的访问控制的使用
package mypack2;
import mypack1.*;
public class Je030702{
public static void main(String args[ ]){
A a=new A( );
Je030701 e=new Je030701( );
a.setx(1);
System.out.println("a.x="+a.getx( ));
e.setx(2);
System.out.println("e.x="+e.getx( ));
}
}
- 使用无名包中的类
我们也可以使用无名包中的类。假如Hello.java源文件中没有使用包语句,如果一个程序使用Hello类,可以将该类的字节码文件存放在当前程序所在的目录中。
注意
- 如果一个类声明的时候并没有说明时public类的话,就不能被其他包调用;
- 在DOS窗口命令中,使用命令“javac -d wenjian.java”
有参数-d | 没有参数-d |
---|---|
.class文件放到包名下 | .class文件放到.java同目录下 |