【Java虚拟机结构(第1部分)数据类型】摘要
《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部分)数据类型】摘要的更多相关文章
- JVM规范系列第2章:Java虚拟机结构
本规范描述的是一种抽象化的虚拟机的行为,而不是任何一种(译者注:包括 Oracle 公司自己的 HotSpot 和 JRockit 虚拟机)被广泛使用的虚拟机实现. 记住:JVM规范是一种高度抽象行为 ...
- Java虚拟机 - 结构原理与运行时数据区域
http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...
- Java 虚拟机结构
一 数据类型 与 Java 程序语言中的数据类型相似,Java 虚拟机可以操作的数据类型可分为两类:原始类型(Primitive Types,也经常翻译为原生类型或者基本类型)和引用类型(Refere ...
- 每日一问:你了解 Java 虚拟机结构么?
对于从事 C/C++ 程序员开发的小伙伴来说,在内存管理领域非常头疼,因为他们总是需要对每一个 new 操作去写配对的 delete/free 代码.而对于我们 Android 乃至 Java 程序员 ...
- Jvm运行时数据区 —— Java虚拟机结构小记
关于jvm虚拟机的文章网上都讲烂了.尤其是jvm运行时数据区的内容. 抱着眼见为实的想法,自己翻了翻JVM规范,花了点时间稍微梳理了一下. 以下是阅读Java虚拟机规范(Java SE 8版)的第二章 ...
- Java虚拟机结构
一.JVM主要的结构如下: 二.各个区域功能介绍 1).方法区(Method Area): (1)用于存储虚拟机加载的类信息.常量.静态变量等,是各个线程共享的内存区域: ...
- java虚拟机规范(se8)——java虚拟机结构(一)
本文翻译自:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html 第二章 虚拟机结构 本文档描述了一个抽象的虚拟机规范,并不描述 ...
- java虚拟机规范(se8)——java虚拟机结构(六)
2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处 ...
- The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型
小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...
随机推荐
- 阿里巴巴Java开发规约插件使用
10月14日上午9:00 阿里巴巴于在杭州云栖大会<研发效能峰会>上,正式发布<阿里巴巴Java开发手册>扫描插件,该插件在扫描代码后,将不符合<手册>的代码按Bl ...
- ASP.Net之一般处理程序
1.静态语言和动态语言 静态语言:在服务器端,不会被执行,直接作为 字符串 发回给浏览器,由浏览器运行的语言( HTML+CSS+JS). 动态语言:在服务端,会被服务器端的某种语言的虚拟机执行的 ...
- Google Voice号码使用说明及用途
Google Voice号码使用说明及用途 号码 已不能网页注册获取,直接向TB购买,搜Google Voice就行了.很便宜的. 一. Google Voice介绍 Google Voice首先是一 ...
- 撩课-Python-每天5道面试题-第4天
一. for循环和while循环中的else代表什么意思? 当for循环和while循环顺利的遍历完成时, 就会执行else分支 如果循环过程中, 碰到continue, 只要没有打断循环, 就会继续 ...
- JavaScript访问对象的属性和方法
对象的属性和方法统称为对象的成员. 访问对象的属性 在JavaScript中,可以使用“ . ”和“ [ ] ”来访问对象的属性. 二者区别:“ . ”表示法一般作为静态对象使用时来存取属性.而“[ ...
- H5前端正则验证插件
最近学习了一个新的关于前端正则验证的插件,‘jQuery.validate.js ’ 要用这个插件 首先得有插件,下载jquery.validate.min.js 和jq文件并引入. 我把它简单的通俗 ...
- MongoDB 更改数据库位置
MongoDB在Windows中默认的数据库目录是 C:\data.如果在没有该目录的情况下,执行命令mongod,则会报如下错误: 如果我们不想把mongoDB的数据库放在C盘,可以使用如下两种方法 ...
- Ajax的初体验
一.AJAX的介绍 Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术. Ajax = ...
- Linux-文件目录命令
黑色 代表是普通的文件 蓝色 代表是目录(文件夹) 紫色 代表是图片文件 绿色 代表是可以执行的文件(脚本文件)-->存放linux命令的 红色 代表是压缩文件 clear:清屏pwd:显示当前 ...
- Maven 安装 eclispe
-Dmaven.multiModuleProjectDirectory=$M2_HOME