摘要: 第3章 类、对象及方法 书读得多而不思考,你会觉得自己知道的很多。 书读得多而思考,你会觉得自己不懂的越来越多。 —伏尔泰 在面向对象编程(Object-Oriented Programming,OOP)的世界里,类和对象是真实世界的描述工具,方法是行为和动作的展示形式,封装、继承、多态则是其多姿多 阅读全文
posted @ 2016-04-23 17:45 SummerChill 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 建议30: 不要随便设置随机种子 随机数在太多的地方使用了,比如加密、混淆数据等,我们使用随机数是期望获得一个唯一的、不可仿造的数字,以避免产生相同的业务数据造成混乱。在Java项目中通常是通过Math.random方法和Random类来获得随机数的,我们来看一段代码: 代码很简单,我们一般都是这样 阅读全文
posted @ 2016-04-23 17:32 SummerChill 阅读(5611) 评论(0) 推荐(0) 编辑
摘要: 建议28: 优先使用整型池 看如下代码: 输入多个数字,然后按照3种不同的方式产生Integer对象,判断其是否相等,注意这里使用了“==”,这说明判断的不是同一个对象。我们输入三个数字127、128、555,结果如下: 很不可思议呀,数字127的比较结果竟然与其他两个数字不同,它的装箱动作所产生的 阅读全文
posted @ 2016-04-23 17:29 SummerChill 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 建议26: 提防包装类型的null值 我们知道Java引入包装类型(Wrapper Types)是为了解决基本类型的实例化问题,以便让一个基本类型也能参与到面向对象的编程世界中。而在Java 5中泛型更是对基本类型说了“不”,如想把一个整型放到List中,就必须使用Integer包装类型。我们来看一 阅读全文
posted @ 2016-04-23 16:45 SummerChill 阅读(1339) 评论(0) 推荐(0) 编辑
摘要: 建议25: 不要让四舍五入亏了一方 本建议还是来重温一个小学数学问题:四舍五入。四舍五入是一种近似精确的计算方法,在Java 5之前,我们一般是通过使用Math.round来获得指定精度的整数或小数的,这种方法使用非常广泛,代码如下: 运行结果: 这是四舍五入的经典案例,也是初级面试官很乐意选择的考 阅读全文
posted @ 2016-04-23 16:41 SummerChill 阅读(2717) 评论(0) 推荐(0) 编辑
摘要: 建议24:边界,边界,还是边界 模拟一下输入: 这个数字远超了2000的限额,但是竟然预定成功了.这个2147483647是不是很眼熟?没错,这是int类型的最大值,因为这个值再加上1000的时候超出了int类型的范围,所以结果反而变成了负的。一句话归结其原因:数字越界使校验条件失效。 所以在单元测 阅读全文
posted @ 2016-04-23 16:38 SummerChill 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: 建议23:不要让类型默默转换 打印输出: 诡异,dis2已经考虑到int类型可能越界的问题,并使用了long型,但还是出现了负值。 因为Java是先运算然后再进行类型转换的,即是说运算的时候是以int类型运算,最后才将类型转换成long类型,所以会发生越界的情况。 disc2的三个运算参数都是int 阅读全文
posted @ 2016-04-23 16:07 SummerChill 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 建议22:用整数类型处理货币. 运行结果: 奇怪了,为什么10-9.6输出结果不是0.4呢?这是因为浮点数特性所决定的,它有可能(注意是有可能)是不准确的,而是无限接近准确值,但不能完全准确。至于它为什么会有这个特性,这是由于浮点数的存储规则所决定的,具体啥,就不深究了。 0.4这个十进制小数如何转 阅读全文
posted @ 2016-04-23 15:56 SummerChill 阅读(933) 评论(0) 推荐(0) 编辑