JDK(Java SE Development Kit)
即Java标准版开发包,提供了编译、运行Java程序所需的各种工具和资源包括Java编译器,Java运行时环境,以及常用的Java类库。
JRE(Java Runtime Environment)
即Java运行时环境,包含了JVM、类加载器、字节码校验器及大量的基础类库。
Java运行时数据区分为:1、程序计数器 2、Java栈 3、本地方法栈 4、方法区 5、堆
程序计数器占用小部分内存区域,程序通过它的值寻找要执行的语句的字节码,由于多个线程切换时要恢复到线程之前执行到的位置,所以每个线程都有自己的程序计数器。
Java栈和本地方法栈,都是线程私有的,表示的是Java方法执行的内存模型,每调用一个方法,都会产生一个帧栈用于存储方法的本地变量表,操作栈,方法出口等信息。
方法区用于存储已被虚拟机加载了的类、常量、静态变量、JIT编译后的代码等信息。
堆用于存储对象或数组实例的地方。
强制类型转换后的变量,就不是之前声明的类型了