目录
JAVA数据类型
一、java的数据类型有哪些?
基本数据类型有四类八种:
整型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
浮点型:float(4字节)、double(8字节)
字符型:char(2字节)
布尔型:boolean(1位)
引用类型:类class、接口interface、数组[]
二、float和long哪个存放的数据更大,为什么?
Float存放的更大,因为虽然float占用4个字节,long占用8个字节,但是float存储结构不同, 是把32位分成了两部分,一部分存放阶码(左移位数的2进制表示,等价于10进制指数),一部分存放尾数(移动后小数点后面的数字,等价于10进制底数)。
三、Integer和int的区别
- Integer是int的包装类,int则是java的一种基本数据类型
- Integer变量必须实例化后才能使用,而int变量不需要
- Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值;
- Integer的默认值是null,int的默认值是0;
四、可不可以使用char来存汉字?
可以,因为char是2个字节,汉字也是2个字节
五、i一定小于i+1吗?
不一定,如byte i = 127,加完之后结果为-128
六、Java类型转换
- 自动转换(小转大/子类转父类):byte,short,char——>int——>long——>float——>double; byte,short,char相互之间不转换,他们参与运算首先转换为int类型 ;boolean类型不参与转换。
- 强制转换:目标类型 变量名=(目标类型)(被转换的数据),可能会丢失精度;
七、Double a=0.09+0.01的结果是多少?怎么处理?
结果不是0.1,会丢失精度,用BigDecimal,注意使用字符串进行构造,如new BigDecimal(“0.09”);同样大整形的时候可以使用BigInteger。
浮点数转二进制,是把小数点后面的值一直*2,一直到小数点后面为0结束,如果到了小数的底数表示的位数的时候还没有结束,就会直接丢失。
八、short s= 1; s=s+1有问题没有?s+=1;有没有问题?
第一个有问题,第二个没问题,因为+=做了特殊处理,相当于+完之后强转了
九、请输出下面的结果(包装类和基本类型)
int a = 128;
int b = 128;
System.out.println(a == b); //①
Integer a1 = 128;
Integer b1 = 128;
System.out.println(a1 == b1); //②
Integer a2 = 127;
Integer b2 = 127;
System.out.println(a2 == b2); //③
解析:对于①,由于a和b都是基本数据类型,==对比的时候采用的是值对比,所以相同,打印true
对于②和③,由于是对包装类型进行对于,所以比较的是引用,然后,对于整数,12