包的定义:
在任何操作系统中有一个统一的共识,同一个目录下不能够存在有相同的文件名称,但在开发之中又不可能不出现不冲突的现象,为了解决,会引用包的概念,其实就是一个文件夹,,就是在不同的目录中可以存放相同的文件。
java中直接使用package关键字
范例:定义包
package cn.mldn.demo; //包名称 cn文件夹下mldn文件夹下demo文件夹下
public class Hello{
public static void main(String args[]){
System.out.println("Hello World");
}
}
一旦声明的包,那么必须将生成的*.class文件,包不是手工创建的,在java中专门提供了打包编译操作:
范例:打包编译
javac -d . Hello.java
" -d " :生成目录,默认情况下根据package定义的内容生成;
“ . ” :生成程序的保存路径,设置为:. 表示当前目录下保存
如果程序有包了,那么解释程序时候必须加上包名称,此时的Hello类要执行必须输入:
java cn.mldn.demo.Hello
所有java项目开发,程序类必须要有包的定义才可以使用,没有包的类不存在,
而类的完整名称“包.类”
导入包
import 包.类 ;
范例:定义一个cn.mldn.util.Message的类
package cn.mldn.util ;
public class Message { //如果不加public,外包不能访问这个类,只能在此包使用
public String getInfo(){
return “******”;
}
}
用另一个类导入Message包:
package cn.mldn.test;
import cn.mldn.util.Message; //导入其他包的类
public class TestMessage{
public static void main(String args[]){
Message msg = new Message();
System.out.println(msg.getInfo());
}
}
使用import 包.*;如import cn.mldn.util.* ;不会将包中所有的类都导入,而是加载所需要的类,不需要的不加载。
有可能一个程序导入两个不同的包,但是不同的包有相同的类。避免此种错误,使用包里的类的时候要用完整的名称:
cn.mldn.util.Message msg = new cn.mldn.util.Message(); //把包名也加上
编写顺序:package、import、public class
Java常见包:java.util 工具包 java.lang.reflect 反射开发包,直接与框架开发有关 java.util.regex 正则表达式开发包
java.text 国际化程序支持包 java.io 数据流的开发包,前提:抽象类 java.sql 数据库编程包
jar命令
项目完成后保存成jar
范例:现在有一个包
package cn.mldn.util ;
public class Message { //如果不加public,外包不能访问这个类,只能在此包使用
public String getInfo(){
return “******”;
}
}
将cn包打成my.jar,在命令窗cmd输入:jar -cvfmy.jar cn;
打成的jar打开。有一个META-INF/MANIFEST.MF