java7类型转换
不能(直接)把一个大的数据类型赋值给小的类型
强制类型转换,但会造成数据的溢出(导致数据的不正确性)
int a = 200;
byte b = 5; //范围-128到127
b = (byte)a; //将a类型强制转换成b类型,括号中写出最终转换成的类型,但超出b的数据类型所控制的范围会造成数据的溢出(数据的不正确性)
System.out.println(b);
【-56】
注意:
byte b = 3;
short c = 5;
int g = 4;
double w = 6;
float e = 7;
boolean t = true;
char h = 'a'; //A---65,a----97
1.未参与运算:最前面不需要加转换后的数据类型
b = (byte)c; //将c的数据类型short强制转换成b的数据类型byte
System.out.println(b);
【5】
2.参与运算时,两端的数据类型要保持一致
short b1 = b+t;
System.out.println(b1);
【error】
3.如果为同为数值型,则自动将小的数据类型转变为大的类型,但是jvm在运算(相加)时的
最小数据量类型为int类型(输入的数据类型小于int时,会自动给你转成int)
double w1 = (double)b+w; //b,w同为数值型,但w的类型位数大于b的类型位数,
【 自动类型转换】 //所以将b的数据类型转换为w的数据类型
System.out.println(w1);
【9】
short c1= c+(short)b; //b,c同为数值型,但c的类型位数大于b的类型位数,本应将b的类型byte转换
//成c的类型short,但是由于jvm识别的最小数据类型为int,所以最后强制转换为int d = (int)c+(int)b;
System.out.println(c1);/
【error】
int c1= (int)c+(int)b;
System.out.println(c1);
【8】
如果真的想转换成short类型,得这样写:
short c2 = (short)(b+c)
System.out.println(c2);
【8】
OR
b = (short)(b+c);
System.out.println(b);
【8】 *数据类型+新的变量名称 OR 原变量名称*
System.out.println(h+b);//字符和整数小数类型可以相加减
【100】