先看一个示例:
public class Hello {public static void main(String[] args){System.out.println("Hello World !");Test test = new Test();test.print();}
}
class Test{void print() {System.out.println("Hello Java !");}
}
如果源文件有多个类,那么只能有一个 public 类,且源文件名必须和public类名相同
如果保存java源文件时选择的编码是 UTF-8 ,那么使用 javac 编译源文件时必须显示用 -encoding 参数,即告诉编译器该用怎样的编码解析编译源文件, -encoding 给出的值必须和源文件的编码相同(不显示使用 -encoding 参数时,默认该参数的值为 GBK )
保存之后是一个以 .java 结尾的文本文件,因为Java是编译型语言,所以通过 javac 编译器(存在bin目录下)来进行编译:
- 在当前文件目录下通过命令窗口 javac 进行编译:
(注意:这里需要加上 .java 后缀)
常见的错误:
- 编译时的错误:
- File not found ---- 是否在当前路径中有源文件
- 运行时的错误:
- Exception in thread"main"java.lang.NoClassFondError
- 是否正确写对了main方法的定义
- 是否设置了正确的 classpath 路径
- 编译完成后会出现一个 .class 字节码文件
(源文件有多个类,编译后会有多个 .class 字节码文件,每个类都会有一个字节码文件)
- 然后再通过 java 来运行含有 主函数main(程序入口方法)的字节码文件(程序的主类)即可:
即可得到程序输出
Java反编译:
- JDK提供的反编译器是 javap.exe
- 反编译上面的例子: javap Hello.class
- 如果想反编译类库中的Date类(其包名是 java.util)Date.class
可使用: javap java.util.Date.Class