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出来的对象的实例,对象中的方法的执行在栈中,执行完之后就会销毁!

Java中static存储_JVM

二、static关键字的内存图解

这里需要注意的是相同对象其实是共用一个静态区中的静态static属性或者方法的

Java中static存储_JVM_02