标签:
类型装换
long l = 123456789123;//整数默认是int类型,由于数值123456789123超过了int类型的范围,所以报错:The literal 123456789123 of type int is out of range(超出范围)long l2 = 123456789123l;int x = Integer.MAX_VALUE + 1;//将一个int类型的整数+1后赋给一个int类型的变量,虽然结果溢出,但是不会报错(因为结果仍为int类型)int x2 = 1l ;//必须强转,否则会损失精度,Type mismatch: cannot convert from long to intint x3 = (int) 1l ;short s = 3;s += 4; //首先的首先,编译器在【编译】的时候自动进行了强转,相当于s=(short)(s+4);此后,在【运行】时,先计算s+4,此时会将s转为int类型,所以结果也为int类型,然后执行强转语句s = s + 4;//必须强转,否则会损失精度,Type mismatch: cannot convert from int to shorts = (short) (s + 4);s = s + 0;//必须强转,否则会损失精度,Type mismatch: cannot convert from int to shortshort s1 = 0, s2 = 0;short s3 = s1 + s2;//注意s1 + s2的结果为int类型short s4 = (short) (s1 + s2);short s4 = s1 + 1;float f = 2.3;//浮点数默认是double类型,赋给float类型的变量时,可能会损失精度,所以编译不通过。Type mismatch: cannot convert from double to floatfloat f3 = 2.3f;float f2 = (float) 2.3;//自己强转的话,怎么都可以byte b1 = 120 + 7;//120+7的结果是确定的,不会溢出,所以编译器能自动将【int】类型的数据127强转成了【byte】类型byte b2 = (byte) (121 + 7);//自己强转的话,怎么都可以byte b3 = 121 + 7;//必须强转,否则会损失精度,Type mismatch: cannot convert from int to bytebyte b4 = 127;//不会溢出,编译器能自动将【int】类型的数据127强转成了【byte】类型byte b5 = 128;//必须强转,否则会损失精度,Type mismatch: cannot convert from int to byteSystem.out.println((byte)(128));//-128,这几条数据全部溢出了,但我们强制转换了,所以编译不会报异常System.out.println((byte)(129));//-127System.out.println((byte)(255));//-1System.out.println((byte)(256));//0System.out.println((byte)(257));//1char类型可以自动转换为int类型数据char c = ‘0‘;byte b = ‘0‘;char c2 = 0;byte b2 = 0;System.out.println(1 + c);System.out.println(1 + b);System.out.println(1 + c2);System.out.println(1 + b2);System.out.println((char) 49);
标签:
原文地址:http://www.cnblogs.com/baiqiantao/p/a2cdc8d85d9ab3f8b05f8062b525b9bf.html