包实际上就是一个文件夹,在不同的文件夹中可以存在同名的类,那么这就是包的作用
在Java 中使用package语法定义包:
package org.hello.demo;
public class hello {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.our.println("Hello World");
}
}
此时,使用package在类中定义了一个包。在生成class 文件的时候需要将所有的class 类放在指定的包中
之后,通过以下的命令进行打包编译
javac -d . Hello.java
-d :表示生成目录,根据package 的定义生成
.:表示在当前所在的文件夹中生成
那么,此时的完整的类名称:包.类名称
java org.hello.demo.Hello
导入包:
在程序中很多的类都存放在不同的包中,如果现在要导入不同的类,则可以使用import 语句
package org.demoa;
public class SayHello {
public void print(){
System.out.println("hello world");
}
}
此类完成之后,在不同包的类中导入此类,产生对象并使用
package org.demob;
import org.demoa.SayHello;
//import org.demoa.*
public class TestSayHello {
public static void main(String args[]){
SayHello sh = new SayHello();
//org.demoa.SayHello sh = new SayHello();
sh.print();
}
}
如果一个包中的类需要被外部访问,那么此类一定声明成public class 类型
在进行开发的时候一定要始终注意一个原则:
所有的类必然要放在一个包之中,没有包的类是不存在的
静态导入
如果一个包中的某个类中的方法全部都是static 类型的,则就可以使用静态导入
Math 类
package org.demox
public class Math{
public static int add (int i,int j){
return i+j;
}
public static int sub (int i,int j){
return i-j;
}
}
import static org.demox.Math.*
public class TestMath{
public static void main(String args[]){
System.out.println(add(1,1));
System.out.println(sub(1,1));
}
}
系统常用包
1.java.lang :此包中包含了各种常用的类,例如:String,此包属于自动导入
2.java.lang.reflect :此包为反射机制包,是整个Java 乃至整个Java 世界中最重要的包,此包可以完成大量的低层操作
3.java.util: 工具包,如果把此包撑握的非常清楚,则可以方便的做各种设计,各种开发
4.java.io :IO 操作
5.java.net:网络编程
6.java.sql:数据库编程
7.java.text:国际化程序应用