1由于Java是强类型语言,所以有些类型需要强制转换,
低-----------------------------------------------高
baty,short,char->int->long->float->double
整数类型
byte占一个字节 范围-128到127
short占两个字节范围:-32768到32767
int占四个字节 范围2147483648-2147483647
long占八个字节 范围-9223372036854775808到9223372036854775807
浮点类型
float 只占四个字节
double占八个字节
字符类型char只占两个字符
运算中 不同类型 的数据先转换化为同一类型,然后进行运算
int i =128; byte b=(byte) i;//内存溢出 //强制转换 (类型)变量名 高————————低 //自动转换 (类型)变量名 低---高 System.out.println(i); System.out.println(b); /* 注意点: 1.不能对布尔值进行转换,(因为布尔是按位的是完全不相干的) 2.不能把对象类型转换成不相干的类型,(比如说中不能把人变成猪吧) 3.在把高容量转换成低容量的时候,强制转换 4在转换的时候可能存在溢出,或者精度问题(在小数的时候能遇到) */ System.out.println("==================================="); System.out.println((int)99.77);// 99 精度问题 System.out.println((int) -88.66f);// -88 精度问题 System.out.println("==================================="); char d='a';//a=98 int d1=d+1; System.out.println(d1); System.out.println((char) d1);//强转 所以d+1变成b所以输出结果变成了b
2
//操作比较大的时候,注意溢出问题 // JDK7以后数字类型之间可以用下划线分割 int money=10_0000_0000; int years=20; int tota1=money*years;//-1474836480 ,计算的时候溢出了 long tota2=money*years;//默认是int,转换之前已经存在问题了 long tota3=(money*(long)years);//先把一个数转换为long System.out.println(tota3);