1.java包含哪两类数据类型,其中基本数据类型的取值范围和默认值时多少?
数据类型可划分为基本类型和复合类型
基本类型:
整数类型:byte(8位),short(16),int(32) , long(64)
浮点类型:float ,double
字符类型:char(16位无符号整数,使用Unicode字符集)
布尔类型:boolean(值为true或false,C++ 的布尔类型是bool)
复合数据类型:
class(类),interface(接口),数组
数据类型 | 默认值 | 取值范围 |
byte | 0 | -2^7~2^7-1 |
short | 0 | -2^15~2^15-1 |
int | 0 | -2^31~2^31-1 |
long |
0L |
-2^63~2^63-1 |
float | 0.0f | —— |
double | 0.0d | —— |
char | \u000 | —— |
boolean | false | —— |
2.Java在什么情况会发生整型溢出?请举例说明,并给出解决方案。
Java进行两个数字的数学运算时容易发生整形溢出。这主要是因为int类型的取值范围导致的,举例:
public static void main(String[] args) { int m = Integer.MAX_VALUE/2+1; //1073741824 int n = Integer.MAX_VALUE/2+1; int overflow = m + n; System.out.println(overflow); //-2147483648 }
这段代码便存在整型溢出。
解决方案:将overflow定义为long,并对m+n进行强转。
3.Java基本类型的包装类分别是哪些?其高频区间数据缓存范围分别是什么?请选择一种包装类型编程验证其数据缓存特性。