强制类型转换:
对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译前将会自动隐含的为我们不上一个强制类型转换
-
如果没有超过左侧范围,编译器补上强转
-
如果右侧超过左侧范围,那么编译前报错
-
特点:代码需要进行特殊格式的处理,不能自动完成
-
格式:范围小的类型范围小的变量名=(范围小的类型)原本范围大的数据
Int num=(int)100L;
//左边是int类型,右边是long类型
//long–>int long的范围更大,不符合从大到小的规则(因此不能进行自动类型转换)
//套用语法格式,进行强制类型转换
Ps:因为100本来就能又int类型表示,只不过因为类型的不同,导致其必须转换,进行的只是类型的转换,若一个数不能由int类型转换而强转的话会出现数据的溢出
注意事项: -
强制类型转换一般不推荐使用,因为有可能会出现精度损失、数据溢出。//int num1=(int)3.99;
显示为3(精度损失) -
byte/short/char这三中都可以发生数学运算,例如“+”。
//char zifu1=’A’;
//System.out.println(zifu1+1);//这是因为A换成了ASCII码 -
byte/short/char这三种类型在运算的时候,都会首先提升为int类型,然后计算。//byte num=40;byte num1=50;byte result=num+num1;System.out.prinln(result+1);//这样会显示不兼容类型;从int转换到byte可能会有损失
/解决方法:int result=num4+num5; -
Char类型的’A’转换成int类型自动转换成65因为使用的是AscII码。A的ACSII为65
-
‘0’48‘A’65‘a’97
Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。
要记住的特殊ASCll:
48—>‘0‘ 65—>‘A’ 97—>‘a’
1.将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,要格外注意。
2.将大的放进小的里面,使用强制类型转换,会出现溢出的情况。
字符串转换为基本数据类型,需要通过基本类型对应的包装类提供的parseXXX方法。
如:String a=“43”;int i=Integer.parseInt(");
3.Int的包装类为integer double的包装类为Double
4.类名直接调用的方法为静态方法。
5.boolean类型不可以转换为其它的数据类型