《Java虚拟机规范(Java
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虚拟机结构(第1部分)数据类型】摘要的更多相关文章

  1. JVM规范系列第2章:Java虚拟机结构

    本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...

  2. Java虚拟机 - 结构原理与运行时数据区域

    http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...

  3. Java 虚拟机结构

    一 数据类型 与 Java 程序语言中的数据类型相似,Java 虚拟机可以操作的数据类型可分为两类:原始类型(Primitive Types,也经常翻译为原生类型或者基本类型)和引用类型(Refere ...

  4. 每日一问:你了解 Java 虚拟机结构么?

    对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...

  5. Jvm运行时数据区 —— Java虚拟机结构小记

    关于jvm虚拟机的文章网上都讲烂了.尤其是jvm运行时数据区的内容. 抱着眼见为实的想法,自己翻了翻JVM规范,花了点时间稍微梳理了一下. 以下是阅读Java虚拟机规范(Java SE 8版)的第二章 ...

  6. Java虚拟机结构

    一.JVM主要的结构如下: 二.各个区域功能介绍 1).方法区(Method Area):         (1)用于存储虚拟机加载的类信息.常量.静态变量等,是各个线程共享的内存区域:       ...

  7. java虚拟机规范(se8)——java虚拟机结构(一)

    本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第二章 虚拟机结构 本文档描述了一个抽象的虚拟机规范,并不描述 ...

  8. java虚拟机规范(se8)——java虚拟机结构(六)

    2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处 ...

  9. The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型

    小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...

随机推荐

  1. [转]The NTLM Authentication Protocol and Security Support Provider

    本文转自:http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication The NTLM Authentication Proto ...

  2. HTTP协议状态码学习

    一直以来都在追求实战,从而忽视了对理论知识的深入学习和理解.这并不可怕,可怕的是当意识到自己的不足时,没有行动. 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码   说明 ...

  3. H5演示文稿快速制作

    详见: http://www.geekfan.net/8107/ 或 http://www.jianshu.com/p/09a3bbb8b362

  4. distinct 用法

    参考 1.作用于单列 2.作用于多列 3.COUNT统计 4.distinct必须放在开头 5.其他 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. ...

  5. MVC 中使用kindEditor 图片上传在IE 上进行上传出现的问题

    在IE 上使用KindEditor 进行单张图片上传的时候会出现一个下载安全警告,这样将会造成图片上传失败,出现的错误页面:

  6. [ZJOI2008]杀蚂蚁 Solution

    题目太长,不在此显示,见洛谷P2586 http://daniu.luogu.org/problem/show?pid=2586 模拟, 那就模拟呗: 各种WA, 然后好久才A了: 一种被社会报复了的 ...

  7. Codeforces Round #417 B. Sagheer, the Hausmeister

    B. Sagheer, the Hausmeister time limit per test  1 second memory limit per test  256 megabytes   Som ...

  8. PowerDNS Authoritative Server 3.3 发布

    PowerDNS Authoritative Server 3.3 发布,该版本改进了不同验证器的交互操作,修复了不少 bug. PowerDNS Authoritative Server (PDNS ...

  9. Angular1.x 基础总结

    官方文档:Guide to AngularJS Documentation   w3shools    angularjs教程  wiki   <AngularJS权威教程> Introd ...

  10. Linux系统环境下安装dedecms(织梦)提示http500错误的解决办法

    碰到一客户安装DEDE提示http500错误,问题已得到完美解决,下面我分享下 这个解决办法,希望有帮助. 故障状态:正常安装dedecms v5.7 gbk提示http500错误Dede安装环境:一 ...