【Java虚拟机结构(第1部分)数据类型】摘要
2014-06-25 09:22
351 查看
《Java虚拟机规范(Java
SE 7版)》作者:Tim Lindholm、Frank Yellin、Gilad Bracha、Alex Buckley 摘要:第二章 Java虚拟机结构(第1部分)
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种被广泛使用的虚拟机实现。
编译后被Java虚拟机所执行的代码使用了一种平台中立(不依赖于特定硬件及操作系统的)的
Java虚拟机可以操作的数据类型:
Types)。与之对应,也存在有
Values)两种类型的数值可用于变量赋值、参数传递、方法返回和运算操作
Java虚拟机是直接支持对象的(实例)
使用reference类型来表示对某个对象的引用
Java虚拟机所支持的原始数据类型包括了
整数类型包括:
byte类型:值为8位有符号二进制补码整数,默认值为零。
short类型:值为16位有符号二进制补码整数,默认值为零。
int类型:值为32位有符号二进制补码整数,默认值为零。
long类型:值为64位有符号二进制补码整数,默认值为零。
char类型:值为使用16位无符号整数表示的、指向基本多文本平面(Basic Multilingual Plane,BMP)的Unicode值,以UTF-16编码,默认值为Unicode的null值('\u0000')。
浮点类型包括:
float类型:值为单精度浮点数集合中的元素,或者(如果虚拟机支持的话)是单精度扩展指数(Float-Extended-Exponent)集合中的元素。默认值为正数零。
double类型:取值范围是双精度浮点数集合中的元素,或者(如果虚拟机支持的话)是双精度扩展指数(Double-Extended-Exponent)集合中的元素。默认值为正数零。
布尔类型包括:
boolean类型:取值范围为布尔值true和false,默认值为false。
returnAddress类型包括:
returnAddress类型:表示一条字节码指令的操作码(Opcode)。在所有的虚拟机支持的原始类型之中,只有returnAddress类型是不能直接Java语言的数据类型对应起来的。
IEEE 754标准的内容不仅包括了正负带符号可数的数值(Sign-Magnitude Numbers),还包括了
顺序将会是:负无穷,可数负数、正负零、可数正数、正无穷。
浮点数中,正数零和负数零是相等的,但是它们有一些操作会有区别。例如1.0除以0.0会产生正无穷大的结果,而1.0除以-0.0则会产生负无穷大的结果。
NaN是无序的,对它进行任何的数值比较和等值测试都会返回false的比较结果。任何数字与NaN进行非等值比较都会返回true。
在Java语言之中涉及到boolean类型值的运算,在编译之后都使用Java虚拟机中的int数据类型来代替。
Java虚拟机直接支持boolean类型的数组,虚拟机的
三种引用类型:
Types)和
数组类型还包含一个单一维度(即长度不由其类型决定)的组件类型(Component Type),一个数组的组件类型也可以是数组。多层最里面的类型是数组类型的元素类型(Element Type),必须上面三个类型之一。
引用类型的默认值是null。
SE 7版)》作者:Tim Lindholm、Frank Yellin、Gilad Bracha、Alex Buckley 摘要:第二章 Java虚拟机结构(第1部分)
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种被广泛使用的虚拟机实现。
2.1 Class 文件格式
编译后被Java虚拟机所执行的代码使用了一种平台中立(不依赖于特定硬件及操作系统的)的二进制格式来表示,并且经常(但并非绝对)以文件的形式存储,因此这种格式被称为Class文件格式。
2.2 数据类型
Java虚拟机可以操作的数据类型:原始类型(Primitive Types)和
引用类型(Reference
Types)。与之对应,也存在有
原始值(Primitive Values)和
引用值(Reference
Values)两种类型的数值可用于变量赋值、参数传递、方法返回和运算操作
Java虚拟机是直接支持对象的(实例)
使用reference类型来表示对某个对象的引用
2.3 原始类型与值
Java虚拟机所支持的原始数据类型包括了数值类型、
布尔类型和
returnAddress类型三类。其中数值类型又分为整型类型和浮点类型两种
整数类型包括:
byte类型:值为8位有符号二进制补码整数,默认值为零。
short类型:值为16位有符号二进制补码整数,默认值为零。
int类型:值为32位有符号二进制补码整数,默认值为零。
long类型:值为64位有符号二进制补码整数,默认值为零。
char类型:值为使用16位无符号整数表示的、指向基本多文本平面(Basic Multilingual Plane,BMP)的Unicode值,以UTF-16编码,默认值为Unicode的null值('\u0000')。
浮点类型包括:
float类型:值为单精度浮点数集合中的元素,或者(如果虚拟机支持的话)是单精度扩展指数(Float-Extended-Exponent)集合中的元素。默认值为正数零。
double类型:取值范围是双精度浮点数集合中的元素,或者(如果虚拟机支持的话)是双精度扩展指数(Double-Extended-Exponent)集合中的元素。默认值为正数零。
布尔类型包括:
boolean类型:取值范围为布尔值true和false,默认值为false。
returnAddress类型包括:
returnAddress类型:表示一条字节码指令的操作码(Opcode)。在所有的虚拟机支持的原始类型之中,只有returnAddress类型是不能直接Java语言的数据类型对应起来的。
2.3.1 整型类型与整型值
2.3.2 浮点类型、取值集合及浮点值
IEEE 754标准的内容不仅包括了正负带符号可数的数值(Sign-Magnitude Numbers),还包括了正负零、
正负无穷大和一个特殊的“非数字”标识(Not-a-Number,下文用NaN表示)。
NaN值用于表示某些无效的运算操作,例如除数为零等情况。
顺序将会是:负无穷,可数负数、正负零、可数正数、正无穷。
浮点数中,正数零和负数零是相等的,但是它们有一些操作会有区别。例如1.0除以0.0会产生正无穷大的结果,而1.0除以-0.0则会产生负无穷大的结果。
NaN是无序的,对它进行任何的数值比较和等值测试都会返回false的比较结果。任何数字与NaN进行非等值比较都会返回true。
2.3.3 returnAddress类型和值
2.3.4 boolean类型
在Java语言之中涉及到boolean类型值的运算,在编译之后都使用Java虚拟机中的int数据类型来代替。Java虚拟机直接支持boolean类型的数组,虚拟机的
newarray指令可以创建这种数组,数组类型的访问与修改共用byte类型数组的baload和bastore指令。
2.4 引用类型与值
三种引用类型:类类型(Class Types)、
数组类型(Array
Types)和
接口类型(Interface Types)。
数组类型还包含一个单一维度(即长度不由其类型决定)的组件类型(Component Type),一个数组的组件类型也可以是数组。多层最里面的类型是数组类型的元素类型(Element Type),必须上面三个类型之一。
引用类型的默认值是null。
相关文章推荐
- 【Java虚拟机结构(第2部分)运行时数据区】摘要
- Java虚拟机结构--数据类型
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
- 【转】简单了介绍js中的一些概念(词法结构) 和 数据类型(部分)。
- [redis读书笔记] 第一部分 数据结构与对象 对象类型
- 算法:C语言实现 (第1-4部分)基础知识、数据结构……
- 慕课学习C笔记01-第1~4章数据类型、运算符和程序结构语句
- C++数据类型和C#的部分对应关系 API与C#数据结构类型对应关系表
- 第二部分 算法的基本控制结构与数据类型
- 探索 Python,第 3 部分: 探索 Python 类型的层次结构
- [转]mssql中得到库里所有的表名,以及表的结构(列名和数据类型)
- [转]mssql中得到库里所有的表名,以及表的结构(列名和数据类型)
- .net调用DLL,返回不固定“结构”类型数据的方法
- .net调用DLL,返回不固定“结构”类型数据的方法
- AJAX 应用程序体系结构(第1部分)
- xoWidgets 数据类型和数据结构
- 我要从com向应用程序返回一个结构,结构中包括二进制数据,请问用什么方式传替比较好呢?BSTR,VARIANT还是其他什么类型比较好呢
- 第三部分 05 高级数据类型的传递
- Oracle 9i & 10g编程艺术-深入数据库体系结构——第12章:数据类型
- 探索 Python,第 7 部分: 探索 Python 类型层次结构