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 = (short)c;
System.out.println(b);

【5】
2.参与运算时,两端的数据类型要保持一致
short b1 = b+t;
System.out.println(b);
【error】
3.如果为同为数值型,则自动将小的数据类型转变为大的类型,但是jvm在运算(相加)时的最小数据量类型为int类型(输入的数据类型小于int时,会自动给你转成int)
double w1 = (double)b+w; /b,w同为数值型,但w的类型位数大于b的类型位数,所以将b的数据类型转换为w的数据类型
System.out.println(w1);
【9】
short c1= (byte)c+b; //b,c同为数值型,但c的类型位数大于b的类型位数,本应将b的类型byte转换成c的类型short,但是由于jvm识别的最小数据类型为int,所以最后强制转换为int d = (int)c+(int)b;
System.out.println(b);
【error】
int c1= (int)c+(int)b;
System.out.println(b);
【8】
System.out.println(h+b);
【100】

猜你喜欢

转载自www.cnblogs.com/-zero/p/10201095.html