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 为了处理汉字
马云,李嘉诚等顶级富豪为什么偏爱老布鞋?原来是因为...
明日方舟终末地攻略