Java 基础总结大全 一、基础知识: 1、JVM、JRE和JDK的区别 JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。 java语言是跨平台,jvm不是跨平台的。 JRE(Java Runtime Environment):java的运行环境, ...
分类:
编程语言 时间:
2018-09-23 13:33:33
阅读次数:
175
0. 前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java 源代码编译成.class 文件,class文件便是Java虚拟机能够认识的二进制机器码,Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码... ...
分类:
其他好文 时间:
2018-09-22 23:23:22
阅读次数:
239
类型转换指令可以将两种不同的数值类型进行相互转换,这些转换操作一般用于实现用户代码中的显式类型转换操作,或者用来处理本节开篇所提到的字节码指令集中数据类型相关指令无法与数据类型一一对应的问题。 Java虚拟机直接支持(即转换时无需显式的转换指令)以下数值类型的宽化类型转换 (Widening Num... ...
分类:
其他好文 时间:
2018-09-22 23:22:40
阅读次数:
205
在Java虚拟机的指令集中,大多数的指令都包含了其操作所对应的数据类型信息如,iload 指令用于从局部变量表中加载int型的数据到操作数栈中,而fload指令加载的则是float类型的数据。这两条指令的操作在虚拟机内部可能会是由同一段代码来实现的,但在Class文件中它们必须拥有各自独立的操作码。... ...
分类:
其他好文 时间:
2018-09-22 23:21:42
阅读次数:
211
从Java虚拟机的角度来讲,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现[1],是虚拟机自身的一部分;另一种就 是所有其他的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全都继承自抽象类java.lan... ...
分类:
其他好文 时间:
2018-09-22 23:21:22
阅读次数:
186
在Java程序中显式抛出异常的操作(throw语句)都由athrow指令来实现,除了用throw语句显式抛出异常情况之外,Java虚拟机规范还规定了许多运行时异常会在其他Java虚拟机指令检测到异常状况时自动抛出。例如,在前面介绍的整数运算中,当除数为零时,虚拟机会在idiv或ldiv指令中抛出Ar... ...
分类:
其他好文 时间:
2018-09-22 23:20:06
阅读次数:
256
虚拟机设计团队把类加载阶段中的"通过一个类的全限定名来获取描述此类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为"类加载器"。 类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于... ...
分类:
其他好文 时间:
2018-09-22 23:17:39
阅读次数:
209
运算或算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新存入到操作栈顶。大体上算术指令可以分为两种:对整型数据进行运算的指令与对浮点型数据进行运算的指令,无论是哪种算术指令,都使用Java虚拟机的数据类型,由于没有直接支持byte、 short、char和boolean类型的算术指令,对... ...
分类:
其他好文 时间:
2018-09-22 23:17:08
阅读次数:
199
Java虚拟机可以支持方法级的同步和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor)来支持的。 方法级的同步是隐式的,即无须通过字节码指令来控制,它实现在方法调用和返回操作之中。虚拟机可以从方法常量池的方法表结构中的ACC_SYNCHRONIZED访问标志得知一个方法是否声明... ...
分类:
其他好文 时间:
2018-09-22 23:16:26
阅读次数:
209
虽然类实例和数组都是对象,但Java虚拟机对类实例和数组的创建与操作使用了不同的字节码指令(在第7章会讲到数组和普通类的类型创建过程是不同的)。对象创建后,就可以通过对象访问指令获取对象实例或者数组实例中的字段或者数组元素,这些指令如下。创建类实例的指令:new。 创建数组的指令:newarray、... ...
分类:
其他好文 时间:
2018-09-22 23:15:36
阅读次数:
217