黑马程序员技术交流社区
标题:
java变量强转类型
[打印本页]
作者:
张作辉
时间:
2016-6-19 22:12
标题:
java变量强转类型
class day02{
public static void main(String[] args) {
//强制转换:
int c = 'c' + 'a'; // 可以把字符转换成整数和浮点数(有小数点的);
float c1 = 'a' + 'b'; // 可以把字符转换成浮点数是有小数点的
char c2 = 'a' + 'b'; // 字符和字符是可以相加的,但输出的结果不是字符和数字,而是 ? 号。
byte c3 = 'a' ; // 可以把字符转换成byte类型,因byte(整数)和char都是占两位字节.
// byte c4 = 'a'+ 'b' ; //输出结果是错误的,因字符跟字符相加转成数字都是int类型的。byte < int
System.out.println(c+" "+c1+" "+c2+" "+c3);
byte b1=5;
int a1=3;
c1 += a1 + b1 ; //int和byte类型是可以转成flost类型的:double > flost > long > int > short > byte 、char
System.out.println(c1+" " );
//b1 = b1 + a1;//会报错的,因byte装不下int类型.需要强转(byte)(b1 + a1)
// b1 +=al //会报错的,因al经过int类型分配空间比byte的大,byte装不下int类型
// b1 +=3; //这没报错,因+=既有强转类型意思,这里得出一个结论:b1 += 3和b1 = b1 + 3 是不同的
// b1 = b1 + 3; //会报错的,因3是int类型的,需要强转 b1 =(byte)(b1+3),强转两个相加的要用括号包起来如下:
//b1 = (byte)(b1+3); 是对的
//byte b2 = (byte)(b1+al) //会报错的,因al经过int类型开分配空间比byte的大
System.out.println(b1+" " );
int a,b2=300;
byte dd= (byte)b2; //强制转换类型的结果会失去精度
System.out.println(dd);
byte b3=3,b4=4,b;
// b = b3 + b4; //会报错的,因两个byte类型相加后就变成int类型,需要强转(byte)(b3 + b4)
// b = 3 + 4; //会报错的,因数字是int类型的,两者相加是int类型的,需要强转(byte)(3 + 4)
System.out.println(b);
}
}
作者:
黑马序曲
时间:
2016-6-20 01:11
强转就是把大数据类型转换成小的数据类型,在明确具体值的时候可以用,不然需要转的值如果超出了数据类型的取值范围的话会损失精度
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2