Java的边界值问题,浮点型飘值问题,字符编码问题

1.边界值问题,为什么当byte b=127,byte(b+1)==-128

这是由于byte占用一个字节即八位内存,当b=127时,二进制表示为:01111111,
当加一后,二进制变为10000000,即-128

2.Java浮点型飘值问题

浮点数采用尾数加阶码类似于科学计数法
飘值即:浮点数运算时,产生的误差,损失精确度。
解决方法:
(1)BigDedcimal类
将double表示形式转换为BigDecimal (不建议使用)
public BigDecimal(double val)
将int表示形式转换成BigDecimal
public BigDecimal(int val)
将String表示形式转换成BigDecimal
public BigDecimal(String val)

3.字符编码问题

(1)ASCII码:最早的字符编码。包括52个大小写字符,加上控制字符,共128个字符编码。一个字节的最高位置没有使用。缺点为无法识别他国语言。
(2)ASCII扩展码,利用最高位的使用,对于ASCII码进行改进,可得到256个字符编码。然而此编码仍不能满足他国语言的需要。只有单个字节的问题很突出。
(3)Unicode,即万国码,是一种符号集,满足所有国家的使用,但缺少规定如何存储一个符号的二进制编码。
(4)UTF-8,一种能变长的Unicode,能用于单字节和多字节的存储
对于单字节:
第一位设为0,其他位为unicode码,和ASCII码相同
对于多字节:字节数为n
第一个字节的前n位设为1,n+1位为0,其他字节前两位一律为10,剩余的二进制位为unicode码

(5)GB2312和GBK
为了处理汉字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅花与竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值