this byte else import protected throw throws case extends instanceof public transient catch false int return true char final interface short try class finally long static
Java中goto 和 const 没有任何意义。assert是在JDK1.4之后增加进来的,enum是在JDK1.5之后增加进来的。
java中的两个保留关键组:
const n. 常量,常数 用于修改字段或局部变量的声明。它指定字段或局部变量的是常数,不能被修改。
goto vi. 转到 指定跳转标签,找到标签后,程序将处理从下一行开始的命令。
先说明一下Java中重中之重的几个概念吧!JVM、Java编译器、Java解释器 (字节码文件就是.class文件中的编译之后的文件 字节码文件===.class文件)
注意:
1、JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。
2、JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。
再说一下程序运行的一般步骤:
(1)Java编译器将.java文件编译成 .class文件
(2)JVM将字节码文件交给解释器,翻译成对应的机器码,由解释器执行
Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。
Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。
JVM(够运行Java字节码(Java bytecode)的虚拟机)中把内存分为直接内存、方法区、Java栈、Java堆、本地方法栈、PC寄存器等。
直接内存:就是原始的内存区
方法区:用于存放类、接口的元数据信息,加载进来的字节码数据都存储在方法区
Java栈:执行引擎运行字节码时的运行时内存区,采用栈帧的形式保存每个方法的调用运行数据
本地方法栈:执行引擎调用本地方法时的运行时内存区
Java堆:运行时数据区,各种对象一般都存储在堆上
PC寄存器:功能如同CPU中的PC寄存器,指示要执行的字节码指令。
JVM的功能模块主要包括类加载器、执行引擎和垃圾回收系统。
一、this关键字在内存中的图解
this关键字其实本身没有什么难度的,但是在工作中,其实本身也用不到这些,但是这些最基础的东西往往才是最具有生命力的,要想长远发展,这些基础的东西一定是烂熟于心的,对问题的深入理解,有很大好处,还是传智播客的视频中讲到的this关键字内存图解:
这里面需要注意的是,在程序运行的时候,Java编译器将java文件编译成class文件,JVM操作Java解释器执行字节码文件
具体来说就是首先会在方法区创建class文件区(这里还有静态区的初始化),之后main方法进栈,在栈中进行对象的创建,在堆中进行实例化,栈中的对象通过内存中的位置标识指向堆中的new出来的对象的实例,对象中的方法的执行在栈中,执行完之后就会销毁!
二、static关键字的内存图解
这里需要注意的是相同对象其实是共用一个静态区中的静态static属性或者方法的