《Java虚拟机规范》阅读笔记-数据类型

1.概述

Java虚拟机的数据类型可分为两大类:原始类型(Primitive Types,也称为基本类型)和引用类型(Reference Types)。

Java虚拟机用不同的字节码指令来操作不同的数据类型[1] 。

2.原始类型

原始类型是最基本的元素,用于构成复杂的引用类型。与世间万物一样,都是由最基本的化学元素组合而成。

原始类型又分为三类:数值类型(Numberic Types)、布尔类型(Boolean Type)、ReturnAddress类型;数值类型又可以细化为整型(Integral Types)和浮点型(Floating-Point Types)。

整型

byte:8位 有符号 二进制补码整数,取值范围[-27,27-1],默认值为零;

short:16位 有符号 二进制补码整数,取值范围[-215,215-1],默认值为零;

int:32位 有符号 二进制补码整数,取值范围[-231,231-1],默认值为零;

long:64位 有符号 二进制补码整数,取值范围[-263,263-1],默认值为零;

char:16位 无符号 UTF-16编码Unicode值,取值范围[0,65535]默认值为null('\u0000');

浮点型

float:32位 单精度浮点数集合,默认值正数零;

double:64位 双精度浮点数集合,默认值为正数零;

布尔型

boolean [2] :取值范围[true,false],默认值为false;

returnAddress类型

returnAddress [3]:表示一条字节码指令的操作码,在JVM支持的原始类型中只有returnAddress类型不能直接与Java语言的数据类型对应的。

引用类型

Java虚拟机有三种引用类型:类类型(Class Types)、数组类型(Array Types)、接口类型(Interface Types),分别由类实例、数组实例及实现了某个接口的类实例或数组实例动态创建。此外,还有一个特殊值null,不指向任何对象时,引用类型的值就是null,同时,null也是引用类型的默认值。

对于数组类型,还包含一个单一维度的组件类型(Component Type),组件类型可以是数组、原始类型、类类型或者接口类型。当组件类型是数组类型时,继续重复取这个数组的组件类型,最后一层组件类型一定是非数组,这也是该数组类型的元素类型(Element Type)。这也是多维数组的实现形式。

后面介绍 ↩

在Java语言中涉及到boolean类型值的运算,在编译后都是用Java虚拟机的int(32位)数据类型来代替;boolean的数组类型的访问有修改共用byte(8位)类型数组的字节码指令。 ↩

returnAddress类型会被jsr、ret、jsr_w指令使用,主要被用来实现finally语句块,但后来改为finally块代码的方式实现;到JDK7,虚拟机不再允许Class文件出现这几条指令,故returnAddress也用不到了。 ↩

java returnaddress,JVM之数据类型相关推荐

  1. Java虚拟机JVM的内存管理

    Java虚拟机JVM的内存管理 关键词 一.JVM整体架构 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 名称 作用 特征 配置参数 异常 程序计数器 ...

  2. Java虚拟机JVM简介与理解(三)

    Java虚拟机JVM简介与理解(三) 问题背景 PC程序计数器 虚拟机栈 本地方法栈 堆 元空间 方法区 运行时常量池 直接内存 Lyric: 彻底把我囚禁在你的呼吸 问题背景 Java虚拟机JVM简 ...

  3. Java虚拟机-JVM

    Java内存模型 为什么说java是跨平台语言 所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行; 实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系 ...

  4. Java 虚拟机(JVM)原理介绍

    Java 虚拟机[JVM]原理介绍 1.概述 2.Java类的加载原理机制 2.1 .Java类的加载过程 2.2 .Class loader (类加载器) 2.2.1 类的生命周期 2.2.1.1 ...

  5. Java的JVM运行时栈结构和方法调用详解

    详细介绍了Java 的JVM的运行时栈结构,以及和方法调用详解,包括解析调用和分派调用. JVM对于方法的执行是基于栈的,方法调用--入栈,方法调用完毕--出栈,了解JVM的运行时栈结构,有助于我们更 ...

  6. Java进阶 JVM 内存与垃圾回收篇(一)

    JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...

  7. 深入理解Java虚拟机--JVM内存模型

    目录 一.运行时数据区域 1.程序计数器 2.Java 虚拟机栈 3.本地方法栈 4.Java 堆 5.方法区 6.运行时常量池 7.直接内存 二.OutOfMemoryError异常 1.Java堆 ...

  8. 【Java】JVM学习(二)

    JVM的内存区域 运行时数据区域 运行时数据区的定义: Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域 Java 引以为豪的就是它的自动内存管理机制.相比于 C+ ...

  9. 2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者

    本文对2019年Java和JVM生态系统做了一些预测. 正如InfoQ 2018年度总结中说的那样,Java在2018年的发展势头非常有意思. 在我们步入2019之际,让我们来看看在新的一年中Java ...

最新文章

  1. linux基本命令详解の第一季
  2. 定制SPS实战记录 系列之一
  3. grails 转为java_创建一个grails项目,然后转成maven项目
  4. 精(李沐)多头注意力,代码理解
  5. 原生sql的各种问题
  6. selenium+log4j+eclipse相关问题及解决方案
  7. CSS学习总结(3)——CSS文本样式(属性)
  8. 74CMS_v4.2.1-v4.2.129后台Getshell
  9. ClickHouse常用函数统计
  10. [概率练习] n个小球放入m个盒子(8大类)
  11. linux 安装xamp
  12. 皮蛋拌豆腐引发的——沟通管理的思考(丁仿)
  13. leaflet 画扇形
  14. linux下架设sendmail邮箱_原理篇
  15. 临时表空间不足ORA-01652: unable to extend temp segment by 64 in tablespace
  16. PhotoShop JavaScript 批处理 学习二
  17. 土建翻模怎么自动【生成构造柱】呢?
  18. 【Python】Scipy定义的物理常数
  19. 站长管理服务器必读:Ftp、Ftps与Sftp三兄弟的不同与区别以及部署全指引
  20. 怎么制作真人qq秀_「惠生活 乐文化」酷炫!全国首个实景崖壁灯光演艺秀《剑门长歌》亮相剑门关...

热门文章

  1. 用结构体写一个简单的通讯录
  2. Linux系统【五】进程间通信-共享内存mmap
  3. POJ 1741tree-点分治入门
  4. 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
  5. 韦东山嵌入式第一期14课第004节_und异常模示程序示例_P笔记
  6. 【计算机系统设计】重点 · 学习笔记(1)(资源消耗)
  7. 九大经典算法之归并排序
  8. 【第十六章】模板实参推断
  9. Java高级工程师面试实战,mysqlsettimeout
  10. 现在做Android开发有前途吗?社招面试心得