Java常见问题3:周期之谜
谜24
byte是有符号的。范围是-128 - 127。而0x90是int类型。
比較的时候。不相等。
假设想让其相等,须要进行类型转换:(byte & 0xff) 或者 (byte)0x99。
谜题25
自增运算符对循环的影响。j = j++,先赋值。
谜题26
Integer.MAX_VALUE加一之后会变成Integer.MIN_VALUE。这对循环会有影响。能够考虑使用long来表示i变量,或者使用效率更高的i != Integer.MAX_VALUE。
谜题27
(-1 << 32)的结果是-1而不是0。对于int型的数据移位运算总是取右端数转换成2进制的低五位。
对于long型的数据移位运算总是取右端数转换成2进制的低六位。
32取低五位是0。因此结果是-1。假设右边的数是负数,相同保留低五(六)位,将其转换为正数。谜题28
while(i == i + 1) {}
当浮点数i足够大时候, i = i + 1。
相邻浮点数之间的距离被称为ulp(unit int the last place),一旦ulp超过2。加一将不会产生不论什么影响。
二进制浮点数算术仅仅是一种近似。
谜题29
while(i != i) {}
IEEE 754浮点算术保留了一个特殊的值:NaN(not a number)。
double i = 0.0 / 0.0。double i = Double.NaN,
不论什么浮点数操作,仅仅要一个或多个操作数为NaN,那么结果是NaN。
NaN不等于不论什么浮点数,包含它自身。NaN != NaN 。
谜题30
while(i != i + 0) {}
i != i + 0,假设i是String类型。此时的+就不是算术加号了,被重载为字符串的连接。
谜题31
while(i != 0) {i >>>= 1;
}
还是在讲类型转换。
当i为short类型的-1的时候,i >>>= 1,仍旧是-1:首先将short转换为int。然后在截取低位16。
short,byte的不论什么负数终于都会转换为-1。而char不会,char是无符号的。
谜题32
Integer i = new Integer(0);
Integer j = new Integer(0);
while(i <= j && i >= j && i != j){
}
包装类,当使用==运算符时候,并非推断值相等,而是引用(兼容性考虑)。
<=或者>= 都是值推断。
谜题33
while(i != 0 && i == -i) {}
整数的边界问题
0x8000 0000 表示最小的负数(Integer.MIN_VALUE),对其求相反数,仍是其本身。
谜题34
final int START = 2000000000;
int count = 0;
for (float f = START; f < START + 65; f++) {
count++;
System.out.println(START + 65);
}
浮点数精度问题START+50与START相等,当使用浮点数表示的时候。50比START的ulp距离(128)的一半还小。当超过ulp的距离的一半的时候,无限循环。
谜题35
取余和乘除具有同样的优一年级。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Java常见问题3:周期之谜的更多相关文章
- java类生命周期详细解析
(一)详解java类的生命周期 引言 最近有位细心的朋友在阅读笔者的文章时,对java类的生命周期问题有一些疑惑,笔者打开百度搜了一下相关的问题,看到网上的资料很少有把这个问题讲明白的,主要是因为目前 ...
- Java线程生命周期
当你需要使用Java线程在多线程环境下进行编程时,理解Java的线程周期与线程的状态是非常重要的.通过实现Runnale接口或者继承Thread类,我们可以创建线程,为了启动一个线程,我们需要创建一个 ...
- Java实现生命周期管理机制
先扯再说 最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪:用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然 ...
- 转自52 梦回凉亭的她 Java常见问题,面试题
收集整理分享# 相关概念## 面向对象的三个特征封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象.## 多态的好处允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不 ...
- java类型生命周期
开始阶段 装载:把二进制形式的java类型读入jvm中. 1)通过该类型的完全限定名,产生一个代表该类型的二进制数据流:2)解析这个二进制数据流为方法区内的内部数据结构:3)创建一个表示该类型的jav ...
- Java线程的周期及五种状态
线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了 ...
- java对象生命周期概述复习
最近看了下java对象的生命周期做个笔记复习复习,很多不同的原因会使一个java类被初始化,可能造成类初始化的操作: 1) 创建一个java类的实例对象. 2) 调用一个java类中的静态方法. ...
- Java 线程生命周期
|作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此 ...
- Java常见问题分析(内存溢出、内存泄露、线程阻塞等)
Java垃圾回收机制(GC) 1.1 GC机制作用 1.2 堆内存3代分布(年轻代.老年代.持久代) 1.3 GC分类 1.4 GC过程 Java应用内存问题分析 2.1 Java内存划分 2.2 J ...
随机推荐
- 让你提前知道软件开发(22):shell脚本文件操作
文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...
- ArcGIS多面体(multipatch)解析——引
多面体(multipatch)结构在ArcGIS数据结构中是与点.线.面平行的一种数据结构,对于ArcGIS三维来说是一个很核心的结构,有了它,ArcGIS平台才可以灵活的描述规则和不规则的三维实体. ...
- Web工程师的工具箱 | 酷壳 - CoolShell.cn
Web工程师的工具箱 | 酷壳 - CoolShell.cn Web工程师的工具箱 2012年12月19日 陈皓 发表评论 阅读评论 30,168 人阅读 本文出自Ivan Zuzak 的&l ...
- Invalid character constant
Invalid character constant 无效的字符常数 可能是双引号写成了单引号了.
- ORACLE中%TYPE和%ROWTYPE的使用
1 %TYPE说明 为了使一个变量的数据类型与还有一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式.当被參照的那个变量的数据类型改变了之后,这个新定 ...
- like-minded 都有什么意思_百度知道
like-minded 都有什么意思_百度知道 like-minded 都有什么意思
- Android编程心得-图片自适应心得
在Android 的开发过程中,我们知道存放图片资源的文件夹是drawable,与它类似的名字的文件夹drawble-hdpi,drawable-ldpi,drawable-mdpi,drawable ...
- Java 小样例:图书馆课程设计(Java 8 版)
用 Java 模拟一个图书馆.包含创建图书.创建读者.借书.还书.列出全部图书.列出全部读者.列出已借出的图书.列出过期未还的图书等功能. 每一个读者最多仅仅能借 3 本书,每一个书最多仅仅能借 3 ...
- hadoop学习;大数据集在HDFS中存为单个文件;安装linux下eclipse出错解决;查看.class文件插件
sudo apt-get install eclipse 安装后打开eclipse,提示出错 An error has occurred. See the log file /home/pengeor ...
- 添加PDF文件对照度的粗浅原理,及方法
上边这张照片不是异形,而是著名的鹦鹉螺.下边这张照片,是送给研究生同学的毕业纪念,向龙同学帮我激光雕刻的. 近期的照片在[http://www.douban.com/photos/album/13 ...