java虚拟机规范学习笔记之数据类型
1.1 class文件格式
编译后被Java虚拟机所执行的代码使用了一种平台中立的二进制格式来表示,并且经常以文件的形式来存储,这种格式称为class文件格式。class文件格式中精确的定义了类与接口的表示形式。
class文件是被java虚拟机所执行的代码。
1.2 数据类型
原始数据类型:数值类型、boolean类型、returnAddress类型。
数值类型:整数类型、浮点类型。
整数类型:byte(8位有符号二进制补码整数,-128(-2^7)- 127(2^7-1))、short(16,-32768(-2^15)- 32767(2^15 - 1))、int(32,-2^31 - 2^31-1)、long(64,-2^63 -2^63 - 1)、char(char类型是一个单一的 16 位 Unicode 字符,最小值是 \u0000(即为0),最大值是65535,char 数据类型可以储存任何字符)。
浮点类型:float、double,默认值都为0。
boolean类型:true和false,默认值为false。
returnAddress类型:是指向某个操作码(opcode)的指针,此操作码与Java虚拟机指令相应,在虚拟机支持的所有原始类型中,只有returnAddress类型是不能直接与Java语言的数据类型相对应的。
NaN:Not-a-Number,非数字标识,用于标识某些无效的运算操作,如0除以0。除了NaN与自身比较是否等值时会得到false,任何数和NaN比较的返回值都是true。
Java语言表达式所操作的boolean值,在编译之后都是用java虚拟机中的int数据类型来代替。true用1表示,false用0表示。
1.3 引用类型与值
引用类型:类类型(class type)、数组类型(array type)、接口类型(interface type)。
这些引用类型的值分别指向动态创建的类实例、数组实例和实现了某个接口的类实例或数组实例。
数组类型:最外面那一维元素的类型,叫做组件类型。一个数组的组件类型也可以是数组,所以可以不断的取值,直到遇到的不是组件类型,这时这个类型就叫做元素类型。
元素类型:必须是基本类型、类类型或者接口类型之一。
引用类型还有一个值:null,当一个引用不指向任何对象的时候,它的值就用null来表示。一个为null的引用类型,期初并不具备任何实际的运行期类型,但是它可以转型为任意的引用类型,引用类型的默认值是null。
java虚拟机规范学习笔记之数据类型的更多相关文章
- 《深入理解Java虚拟机》学习笔记
<深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...
- 《深入理解 Java 虚拟机》学习笔记 -- 内存区域
<深入理解 Java 虚拟机>学习笔记 -- 内存区域 运行时数据区域 主要分为 6 部分: 程序计数器 虚拟机栈 本地方法栈 Java 堆 方法区 如图所示: 1. 程序计数器(线程私有 ...
- Java四种引用--《深入理解Java虚拟机》学习笔记及个人理解(四)
Java四种引用--<深入理解Java虚拟机>学习笔记及个人理解(四) 书上P65. StrongReference(强引用) 类似Object obj = new Object() 这类 ...
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...
- 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势
0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...
- 《深入理解Java虚拟机》学习笔记之类加载
之前在学习ASM时做了一篇笔记<Java字节码操纵框架ASM小试>,笔记里对类文件结构做了简介,这里我们来回顾一下. Class类文件结构 在Java发展之初设计者们发布规范文档时就刻意把 ...
- (转)《深入理解java虚拟机》学习笔记7——Java虚拟机类生命周期
C/C++等纯编译语言从源码到最终执行一般要经历:编译.连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对 ...
- (转)《深入理解java虚拟机》学习笔记1——Java内存结构
java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下: 其中方法区和堆是由所有线程共享的数据区. Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区. (1 ...
- 《深入理解Java虚拟机》学习笔记之内存分配
JVM在执行Java程序的过程中会把它所管理的内存划分若干个不同的数据区域,如下图: 大致可以分为两类:线程私有区域和线程共享区域. 线程私有区域 程序计数器(Program Counter Regi ...
随机推荐
- Note | 用Hugo搭建博客并部署到GitHub Pages
目录 1. 本地搭建 1.1 安装Hugo 1.2 创建站点 1.3 新建页面和文章 1.4 使用主题 1.5 修改配置文件 1.6 预览 2. 部署 之前担心过现有博客平台(如博客园,CSDN)突然 ...
- Java连载42-this不能省略的情况、构造方法设置默认值的方法
一. this什么时候是不能省略的,我们举个例子来说明 class User2{ private int id; public int getId() { return id; } public vo ...
- Jenkins登录后空白页
进入.jenkins所在的目录 编辑config.xml文件 重启jenkins
- java获取下一天的日期
我们来看看Java怎么获取下一天的日期: 哈哈哈,开玩笑啦,这个只是个段子. "哪怕悲伤有1000种,快乐有1种就够了."
- 【agc028E】High Elements(动态规划,线段树,贪心)
[agc028E]High Elements(动态规划,线段树,贪心) 题面 AtCoder 你有一个\([1,N]\)的排列\(P\). 一个长度为\(N\)的字符串\(S\)是好的,当且仅当: 两 ...
- Think in Speed (关于速度的一点思考)
天下武功,无坚不摧,唯快不破!所以我们重视速度没毛病! 老话说:不要过早优化.赞同! 我们在写代码过程中,有时可能就是为了追求所谓的性能,然后,就给自己挖坑了. 关于开发速度,我有以下几点思考: 1. ...
- 前端之jquery1
jquery介绍 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. ...
- 关于yield和yield from
一.简单示例 def yield_func(): for _ in range(2): yield "12" def yield_from_func(): for _ in ran ...
- ble蓝牙扫描几种方式
有空再更新内容 方式一BluetoothAdapter层扫描回调 在高版本api已过时 方式二BluetoothLeScanner层扫描回调 android>= 5.0之后的版本推荐使用 方式三 ...
- FCC---Make Motion More Natural Using a Bezier Curve--- juggling movement
This challenge animates an element to replicate the movement of a ball being juggled. Prior challeng ...