1、打包编译处理:javac -d . Hello.java
"-d":表示要生成目录,目录结构就是package定义的结构
“.”:表示在当前所在的目录中生成程序类文件
在程序执行时需要带着包执行程序类:java 包名.类名
2、包的导入(导入其他包的类)
导包后为避免区分先编译哪个类,可以使用:javac -d . *.java(自行匹配)
【注意】关于public class和class定义的区别
public class:类名称必须与文件名称保持一致,一个*.java文件里面只允许有一个public class,如果一个类需要被其他的包使用,那么这个类一定要定义为public class;
class:类名称可以与文件名称不一致,并且一个*.java文件里可以有多个class定义,编译后将形成不同的*.class文件,但是这些类只能够被本包访问。
在实际开发之中往往在一个*.java源代码文件里面只会提供有一个程序类,而这个程序类一般都使用public class定义。
3、在加载包中的类时使用的“包.*”并不表示进行全部的加载,它会根据所需加载。
4、如果某个类导入了两个不同的包,但是两个包中有同名类,此时在程序中需要使用使用完整的类名称,即“包.类”
5、包的静态导入
包的一般导入形式是“包.类”,在程序中通过“类.方法”调用。而从JDK1.5开始对于类中全部由静态方法提供的特殊类可以采用静态导入处理形式。
导入形式:import static 包.类.*,然后可以直接使用方法名调用方法。
6、生成jar文件
当一个项目开发完成之后一定会存在有大量的*.class文件,管理这些文件会采用一种特殊的压缩结构处理,这样的结构在Java之中就被称为jar文件。我们可以利用JDK中提供的jar命令将程序打包为Jar文件。JDK1.9之后,jar --help查看jar命令用法;
①对程序(一个*.java)打包编译:javac -d . *.java
②此时会根据程序中包名称形成包,包里面有相应的子包与*.class文件
③将其打包为mldn.jar:jar -cvf mldn.jar cn;-c指创建一个新的jar文件,-v指得到一个详细输出,-f指设置要生成的jar文件的名称。
④每一个*.jar文件都是一个独立的程序路径,在java程序中使用此路径需要进行CLASSPATH配置。
SET CLASSPATH=.;jar文件目录
⑤编译程序类:javac -d . hello.java
⑥解释程序:java 包.类
当出现“java.lang.NoClassDefFoundError”错误时,即指“jar包没有配置正确”。
7、JDK1.9之后出现的模块化操作
在JDK1.9以前所有的历史版本之中实际上提供的是一个所有类的*.jar文件(rt.jar、tools.jar),在传统的开发之中,只要启动了JVM,那么就需要加载这些类文件(像String类,Object类)。
在JDK1.9之后提供了一个模块化的设计,将原本很大的要加载的*.jar文件变成了若干个较小的模块文件,在启动时可根据程序加载指定的模块(模块中的包)就可以实现启动速度变快的效果。
8、系统常用包
Java类库由两方面组成:Java自身提供的(除了JDK提供的类库之外还会有一些标准)。由第三方厂商提供的Java支持类库,可以完成各种所需功能。
java.lang:像String 、Number、Object等类都在这个包中,并且该包默认导入。
java.lang.reflect:反射机制处理包(所有的实际从此开始)
java.util:工具类的定义,包括数据结构的定义
java.io:进行输入与输出流操作的程序包
java.net:网络程序开发的程序包
java.sql:进行数据库编程的开发包
java.applet:java最原始的使用形式,直接嵌套在网页上执行的程序类。现在的程序已将以Application为主了
java.awt、javax.swing:Java的图形界面开发包(GUI),其中awt属于重量级组件,swing属于轻量级组件。
9、访问控制权限
private、default、protected、public