主要是一些突然蹦出感觉重要的东西或者是自己快忘了的东西或者是书上看到觉得重要的。。。
一、基础数据类型:
整数类型(4个):byte(1字节)short(2字节)int(4字节)long(8字节)
字符类型(1个):char(2字节)
浮点类型(2个):float(4字节)double(8字节)
布尔类型(1个):boolean(1字节)
二、因为整数类型默认为int型,而浮点型默认为double型,所以如果想要使用long或float型,需在变量赋值的时候在数字后面跟上L(或l,感觉大写较好)或F(或者f)。
三、二进制整数:0b或者0B开头;八进制:0开头;十六进制:0x或0X开头。
这里的0都是数字零。
整型是带符号位的。
四、Java使用的是2字节的unicode编码,所以char a = 'a';和char characterChinese = '中';占用的都是2字节,这点和C语言是有区别的。
五、char类型如果当作整数型来处理,那它是一个16位的无符号整数。
六、如果一个0-2^16-1范围内的int直接赋给一个char,那么系统会把它当成字符来处理。
七、'\'用来表示转义字符。这点在用到windows路径时需要特别注意,比如一个路径:D:\JavaSpace\IO\from.txt,需要在比如IO中打开时,直接这样的路径是会报错的,有两个处理方法,如下:D:\\JavaSpace/IO/from.txt
八、java的浮点数遵循IEEE 754标准,采用二进制数据的科学计数法来表示浮点数。对于float而言:第1位是符号位,接下来8位表示指数,再接下来是23位表示尾数;对于double则是1+11+52.
九、浮点数的不精确是广泛存在的。在java中的Math包中有一个BigDecmal类专门用来处理大精度数据。
The BigDecimal class provides operations for arithmetic, scale manipulation, rounding, comparison, hashing, and format conversion. The toString()
method provides a canonical representation of a BigDecimal.
但是经我的亲身使用,好像不太给力。。。也可能是我还没掌握其精髓,一会儿转一篇文章给大家介绍专门介绍这个的。贴上我的试验结果:
double a = 5.899989871234567890987654
BigDecimal bd = new BigDecimal(5.899989871234567890987654
MathContext mc = new MathContext(28);
BigDecimal bd = new BigDecimal(5.899989871234567890987654
看着api一点点试,还是徒劳,所以百度了下看了下其他人的blog才明白原来要用String作为形参构造,才能得到最准确的结果,一会儿单独说。
十、三个比较常用的double常量:
static double | NaN A constant holding a Not-a-Number (NaN) value of type double . |
static double | NEGATIVE_INFINITY A constant holding the negative infinity of type double . |
static double | POSITIVE_INFINITY A constant holding the positive infinity of type double . |
所有的正无穷大数值都是相等的,所有的负无穷大也是相等的,而NaN不与任何数值相等,甚至和NaN也不相等。
只有浮点数运算除以零会得到正或负无穷大,而整数类型除以0则会抛出异常。
0.0除以0.0或对一个负数开方将得到一个非数。
十一、java 7之后,新增在数值中使用下划线分隔,eg:
int binVal = 0B1000_0001;
double d = 3.09_87_93;
double height = 9_8_4_8.78;
十二、boolean类型只有true或false值,其他基本数据类型不能转换成boolean类型。字符串"true""false"也不会直接转换成boolean类型,但如果使用一个boolean类型的值和字符串连接运算,则boolean类型的值会自动转换成字符串。