今天去笔试一家小公司发现自己的Java基础知识太薄弱,所以决定恶补自己的Java。如题,这个问题在今天的笔试题中出现了,在其他面试BAT的同学的面经中也有看过,属于基础题,但却很容易被人忽略,比如我。
Java的八种数据类型包括:四种整型,两种浮点型,一种字符型,一种用于表示真值的布尔型。
String不是基本数据类型。
1.整型
以上图片详细说明了Java的四种整型的分类、占据的存储空间和取值范围,整型可以表示计算机中常用的四种进制:二进制、八进制、十进制和十六进制。二进制的数需要在前面加上0b,如0b101表示5;八进制需要在数字面前加上0,如010表示十进制中的8,但这样容易混淆,所以不建议使用八进制;十六进制的数需要在前面加上0x,比如0x11表示17
与C++中整型的区别:
a.Java中的整型存储要求与机器无关,从一台机器移植到另外一台机器上运行不会报错;C++中的整型存储与机器有关,比如int型在16位的机器上占用2字节,在32位的机器上占用4字节,而在64位的机器上占用8字节,所以在32位机器上写的代码放到16位的机器上运行可以会发生溢出。
b.Java中没有无符号整数而C++有(unsigned类型)
2.浮点型
来自Java技术核心卷1
一个不加任何修饰符的小数默认为double类型,float类型的小数需要在小数后面加上后缀F加以区分,如3.14F
注意:
a.double类型中有三个特殊的常量:Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN,分别表示正无穷大、负无穷大和非数值。
b.浮点数使用二进制系统进行表示,所以计算时会有误差,比如System.out.print(2.0-1.1);输出是0.8999999999999999。
c.使用String.format("%.xf",a);方法可以指定小数保留小数点后x位输出,其中x表示保留小数点后的位数,a为你要输出的数字。如图:
这几行代码段输出结果是:
3.字符型
字符型只有一种,就是char,用单引号括住一个字符来表示,如'a',与字符串要区别开来,字符串使用双引号来表示,如"a"。
有一些有特殊意义的字符,在字符面前加/加以区分,如/u表示这是一个Unicode字符,还有一些特殊的转义字符,如下图:
4.布尔型
布尔型是最简单的数据类型,它只有两个值,true和false,在判断时使用。
与C++的区别:
C++中0可以代替false,非0值相当于true,但在java中不可以这样,如:if(x=0)在C++中永远为false,因为它先把0赋值给x然后判断x是否不等于0,而在java中这种情况会报错:不能将其他类型转化成布尔型。
That's all.