java包含了8种基本数据类型
8种基本类型的大小
数据溢出:既然有大小,那超出最大值或者小于最小值会怎么样?这个时候就会出错,我们称之为:数据溢出
下面用代码来看:
package
test;
public
class
Test {
public
static
void
main (String args[]){
int
max = Integer.
MAX_VALUE
;
//整型最大值
System.
out
.println(
"整型的最大值:"
+max);
//输出最大值
System.
out
.println(
"整型的最大值+1:"
+(max+1));
//输出最大值+1
System.
out
.println(
"整型的最大值+2:"
+(max+2));
//输出最大值+2
}
}
输出结果
整型的最大值:2147483647
整型的最大值+1:-2147483648
整型的最大值+2:-2147483647
通过结果可以看出:最大值+1变成了最小值,最大值+2变成了次小值(比最小值大1的数),这明显是不对的,这就是数据溢出
强转(强制类型转换)
既然出现了数据溢出这种错误,那我们用什么办法解决呢,就用下面说道的强转
下面用代码来看
public
class
Test {
public
static
void
main (String args[]){
int
max = Integer.
MAX_VALUE
;
//整型最大值
System.
out
.println(
"整型的最大值:"
+max);
//输出最大值
System.
out
.println(
"整型的最大值+1:"
+(max+1));
//输出最大值+1
System.
out
.println(
"整型的最大值+2:"
+(max+2L));
//变为long型
System.
out
.println(
"整型的最大值+2:"
+((
long
)max+2L));
//转化为Long型
}
}
输出结果:
整型的最大值:2147483647
整型的最大值+1:-2147483648
整型的最大值+2:2147483649
整型的最大值+2:2147483649
从输出来看:最大值+1出错 强转之后的最大值+2正确的进行加法运算
为什么会出现这种错误?请看下图
java的8种基本数据类型,都是以2进制数保存的即 0101···0101,当最大数1111···1111+1时就变成了0000···0000最小数。