![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java Puzzlers 笔记
hanlingbo_2009
这个作者很懒,什么都没留下…
展开
-
表达式之谜---DosEquis
1. 混合类型计算会引起混乱,在条件表达式中更为明显 2. 最好在条件表达式中使用相同类型的第二和第三操作数 确定条件表达式结果类型的规则: 如果第二和第三操作数具有相同的类型,那么它就是条件表达式类型。 如果第一个操作数类型是T,T表示byte,short,char,而另一个操作数是一个int常量表达式,那么条件表达式的类型就是T 否则,将对操作数类型进行二进制提升,条件表达式就是第二个和...2008-11-24 09:20:27 · 95 阅读 · 0 评论 -
表达式之谜---奇数性
1. 当取余操作返回一个非零结果时它与左操作数具有相同的正负号。 2. 要测试你的方法在为每个数值型参数传递负数,零和正数时,其行为是否正确。 代码: public class Odd { /** * 奇数性 */ public static void main(String[] args) { System.out.println(Odd.isOdd(-11)); } ...2008-11-24 09:29:33 · 126 阅读 · 0 评论 -
表达式之谜---找零时刻
1. 二进制浮点对于货币计算非常不合适。 2. 在需要精确答案的地方,要避免使用float和double;对于货币计算,要使用int,lang,BigDecimal。 代码: public class Change { /** * 找零时刻 */ public static void main(String[] args) { System.out.println(2.00-...2008-11-24 09:43:54 · 70 阅读 · 0 评论 -
表达式之谜---长整除
1. 当你的操作数是很大的数字时,千万要提防溢出,这是个缄默的杀手。 2. 可以用更大范围的long类型。 代码 public class LongDivision { /** * 长整除 */ public static void main(String[] args) { final long MICRO_PER_DAY = 24*60*60*1000*1000; f...2008-11-24 10:00:51 · 101 阅读 · 0 评论 -
表达式之谜---初级问题
1. 要避免使用l(小写字母l)作为变量名,因为,l 和1容易混淆。 2. 在long型字面常量中,一定要大写L,千万不要用小写。 代码: public class Elementary { /** * 初级问题 */ public static void main(String[] args) { System.out.println(12345+5432l); } } ...2008-11-24 10:05:13 · 72 阅读 · 0 评论 -
表达式之谜---多重转型
1. 如果最初的数值类型是有符号的,那么执行符号扩展;如果它是char,那么不管被转换为什么类型都执行零扩展。 2. 如果你通过观察不能确定程序将要做什么,那么它做的就很有可能不是你想要的。 代码: public class Multicast { /** * 多重转型 */ public static void main(String[] args) { System.out...2008-11-24 10:58:04 · 84 阅读 · 0 评论 -
表达式之谜---半斤(复合赋值表达式)
简单赋值操作符 = 复合赋值操作符 += , -=, *= ,/= , %= ,<<=,>>=,>>>=, &=,等 1. 复合赋值表达式自动将所执行计算的结果转型为其左侧变量类型。复合表达式会悄悄产生一个转型。 2. 不要将复合赋值操作符作用与byte,short,char类型变量。同样int型数的右边要确保不是long、float、doub...2008-11-24 11:12:50 · 134 阅读 · 0 评论