面向对象
GC,自动管理内存
平台无关, 一次编译,到处运行
编译型加解释型,编译成 .class 由JVM解释运行运行。
减少代码效验速度。
解释型: 源代码翻译一句执行一句。
编译型: 源代码 → 二进制可执行程序→ 再执行。省去动态解释过程。
传统是编译成字节码,JVM再逐行解释为机器码。JIT 将热点机器码保存下来,不需要再进行解释,直接执行。
使用 javap -c 包名
java → class→java for windows(JVM→ 机器码)
class Loader 加载到 (Runtime Data Area)内存中, execution engine 解析命令, native interface(加载 native 方法)
在运行状态中,知道类的所有方法和属性,并可以调用。
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
Class rc = Class.forName("com.interview.javabasic.reflect.Robot");
Robot r = (Robot) rc.newInstance();
System.out.println("Class name is " + rc.getName());
Method getHello = rc.getDeclaredMethod("getHello", String.class);
getHello.setAccessible(true);
Object str = getHello.invoke(r,"Bobs");
System.out.println("getHello result is "+ str);
Method sayHi = rc.getMethod("sayHi", String.class);
sayHi.invoke(r, "Welcome");
Field name = rc.getDeclaredField("name");
name.setAccessible(true);
name.set(r, "Alice");
sayHi.invoke(r, "Welcome");
}