java解惑 电子_读《Java解惑》的心得<一>

这篇博客探讨了Java编程中的几个关键问题,包括取余操作的符号规则、二进制浮点数精度限制、长整型溢出处理、类型转换规则、字符串连接与打印字符、对象引用与equals方法的使用。强调了在进行数值计算时避免溢出和精度丢失,以及正确使用数据类型和字符串操作的重要性。
摘要由CSDN通过智能技术生成

1.当取余操作返回一个非零的结果时,它与左操作数具有相同的正负号。例子:判断奇偶数。

2.并不是所有的小数都可以用二进制浮点数精确表示,比如0.1 0.01 和其他任何负次幂,还有10也是。二进制浮点对于货币计算是非常不合适的。解决办法就是改变单位,从而是浮点数变成整数,还可以用new BIg Decimal(String)构造器,而千万不要用Big Decimal(double)。后一个构造器将用他的参数的精确值来创建一个实例,相当于还是前面讲的那个问题!

3.final long MICROS_PER_DAY=24606010001000,在运算过程中会被当成是int型,所以结婚会溢出,解决办法就是在第一个数后面跟着一个L说明它是LONG型的运算。所以当很大的数字参与运算时,就要提防有溢出。

4.如果最初的数值类型是有符号的,就执行符号扩展,如果他是char那么不管它将被转换成什么类型,都执行零扩展。

5.混合类型的计算可能会产生混淆,这是因为会自动的拓宽较窄的那一个操作数,即进行符号扩展,十六进制和八进制字面常量无需显示的减号就可以表示负的值,所以最好避免混合类型的计算。

6.当且仅当+操作符的操作数中至少有一个String类型时,才会执行字符串连接操作。否则,执行加法运算。

7.当将一个char数值传递给println方法会打印一个Unicode字符而不是它的数字代码!char数组也是这样!String. valueOf,StringBuffer.append的char[ ]重载版本的行为也是类似的。然而在这些方法中没有定义字符串连接操作符。该操作符被定义为先对它的两个操作数执行字符串转换,然后连接所产生的两个字符串。对 包含数组在内的对象引用 的字符串转换定义如下:如果应用为null,将其转换成字符串"null"。否则该转换的执行就像无参数调用该引用对象的toString方法一样,但是如果调用toString方法的结果本来就是null,那么就用字符串"null"来代替。而数组是从Object那里继承的toString方法,这个方法返回的是"返回一个字符串,它包含了该对象所属类的名字,‘@’符号以及表示对象散列码的一个无符号数十六进制整数。

8.String的编译期常量是内存限定的,换句话说,任何两个String类型的长常量表达式,如果指定的是相同的字符序列,那么它们就用同一个对象引用表示,这是用==去判断他们的结果就是ture。

9.== 操作符并不是测试两个对象是否相等,而是两个对象的引用是否相同,换句话说,它测试这两个对象引用的是否正好引用同一个对象。应该使用equals方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值