基本数据类型
在进行运算时,不同类型数据先转化成同一类型,再进行运算。
低-------------------------------------------->高
byte,short,char->int->long->float->double
数据类型范围
整型:
byte:-2^7 ~ 2^7-1,即-128 ~ 127。1字节。Byte。末尾加B
short:-2^15 ~ 2^15-1,即-32768 ~ 32767。2字节。Short。末尾加S
有符号int:-2^31 ~ 2^31-1,即-2147483648 ~ 2147483647。4字节。Integer。
无符号int:0~2^32-1。
long:-2^63 ~ 2^63-1,即-9223372036854774808 ~ 9223372036854774807。8字节。Long。末尾加L。(也可以不加L)
浮点型
float:4字节。Float。末尾加F。(也可以不加F)
double:8字节。Double。
字符型:
char:2字节。Character。
布尔型:
boolean:Boolean。
类型转换
强制转换: 高-->低
自动转换: 低-->高||同等级
int i = 128;
byte b = (byte)i;
double c = i;
System.out.println(i);//128
System.out.println(b);//-128 内存溢出
System.out.println(c);//128
注意点:
1.不能对布尔类型进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换。
4.转换的时候可能存在内存溢出,或者精度问题。
System.out.println((int)23.7); //23
System.out.println((int)-45.89f); //-45
//浮点转化成整型,精度缺失。
char d = 'a';
int e = d+1;
System.out.println(e);//98
System.out.println((char)e);//b
操作较大的数时,注意溢出问题
int money = 10_0000_0000;//JDK7新特性,数字之间可以用下划线分割
int year = 20;
int total = year*money;
System.out.println(total);//-1474836480,计算的时候内存溢出
long total2 = year*money;
System.out.println(total2);//-1474836480默认是int,相当于把内存溢出的错误结果转化成long
long total3 = ((long)year)*money;//先把一个数转化成long,计算之前都转化成相同的类型,低转高自动转化。
System.out.println(total3);//20000000000

浙公网安备 33010602011771号