摘要:
近日在群中看到一个小兄弟求助: int a = 58;double b = 0.35; double c = a*b; 为什么等于20.29999999999997 而不是等于20.3 我在计算机思索一根烟,是啊为什么呢?学习java两年这个问题突然不知怎么回答?经过再三考虑将我的想法发表出来,请大家一起讨论! 1. 首先要明白计算机只识别0和1。 2. 因为在java里面浮点数的表示是根据IEEE754标准来表示的,一般数符位(s)1位,阶码(E)根据浮点数的类型不同占的位数不同,尾数(M)也是根据类型不同占的位数不一样,所以一个计算机能够表示的浮点数的总位数长度是有限的一般3... 阅读全文
摘要:
最近在工作的时候,一句再正常不过的代码String a = “hello” + “world”;被改成了new StringBuilder().append(“hello”).append(“world”);当时就比较疑惑这样做的好处,后来到网上查找了一番之后才清楚这与Java中的字符串驻留机制有关,那么什么是驻留呢? 顾名思义,驻留就是在内存中保留(在Java中,我们通常称驻留对象的地方为驻留池,不过它也是内存的一部分),它不仅存在于认证系统下载站Java中,在C#中同样存在。那么我就写几个例子来讲解什么叫Java中字符串的驻留:public classtest{ public stati. 阅读全文