Java虚拟机规范阅读笔记
文章平均质量分 59
Java虚拟机规范.Java SE 8版阅读笔记
轻尘×
一念起,千山万水;一念灭,沧海桑田;生活,或许本该就有诸多遗憾;那些情,已散落天涯,那些未说完的话、未叙完的故事,终将被流年吹散
展开
-
利用ClassLoad机制实现单例模式,安全省心
利用了 classloder的机制来保证初始化 instance 时只有一个线程原创 2022-01-24 10:12:30 · 2501 阅读 · 0 评论 -
一道面试题引出的Java加载、链接与初始化verification、preparation、resolution、initialization过程
背景试题case 1public class JavaLoading { private static int NUM = 3; private static JavaLoading INSTANCE = new JavaLoading(); private JavaLoading() { NUM++; } public static void main(String[] args) { System.out.prin原创 2022-01-10 11:17:18 · 431 阅读 · 0 评论 -
8位的能表示的范围是±2^7(最高位做符号位),也就是±128,为什么单精度浮点数的指数范围却是-126~127呢?
8个字节的能表示的范围是±2^7(最高位做符号位),也就是±128,为什么单精度浮点数的指数范围却是-126~127呢?我是在《计算机组成原理》一书中解开迷惑的按照IEEE754标准规定,浮点数的表示方式如下中间的8位数阶码是无符号数,原本它的范围是0~2^8,即0~256IEEE754规定只取1~254最为阶码的取值范围,255和0用于表示特殊值。阶码与实际指数之间满足如下关系:阶码=127+实际指数值所以实际指数的范围就是1-127~254-127,即-1..原创 2021-12-31 14:54:17 · 2016 阅读 · 2 评论 -
java堆与方法区、运行时常量池的关系
援引在《The Java Virtual Machine Specification Java SE 14 Edition》中描述对堆得描述The Java Virtual Machine has a heap that is shared among all Java Virtual Machine threads. The heap is the run-time data area from which memory for all class instances and arr原创 2021-12-31 14:30:53 · 506 阅读 · 0 评论 -
同样是32位,为什么float能表示的数据范围比int的大?
System.out.println("Float.MAX_VALUE:"+Float.MAX_VALUE); System.out.println("Integer.MAX_VALUE:"+Integer.MAX_VALUE); System.out.println("Integer.MIN_VALUE:"+Integer.MIN_VALUE);Float.MAX_VALUE:3.4028235E38Integer.MAX_VALUE:2147483647Integer.MIN_VALU..原创 2021-12-28 16:22:58 · 4220 阅读 · 0 评论 -
java中的“我”不是“我”,NaN特殊标识以及正无穷+负无穷应该等于多少?
上文:Java虚拟机规范.Java SE 8版中关于浮点类型的说明,Infinity和-Infinity给大家提到一个小的知识点,即浮点数的0,它有正负之分作为分母不会产生java.lang.ArithmeticException: / by zero,而是得到正负无穷大,至于为什么,这是IEEE 754标准定义的在《Java虚拟机规范.Java SE 8版》第二章第三节有如下描述那我就好奇了,你说正无穷+负无穷应该等于多少,会是零吗? public static void main(S原创 2020-09-26 11:38:58 · 1043 阅读 · 0 评论 -
Java虚拟机规范.Java SE 8版中关于浮点类型的说明,Infinity和-Infinity
在我们的经验中除数是不可以为零的,否则java.lang.ArithmeticException: / by zero在等您但是浮点数可就不一定了在第二章2.3.2节《浮点类型、取值集合及浮点值》中有这样的表述代码验证一下 public static void main(String[] args) { float f1 = 1f; float f2 = 0.0f; float f3 = -0.0f; System.out.pri原创 2020-09-26 11:10:30 · 277 阅读 · 0 评论