目录
1、基本说明
自动类型转换的逆过程,将精度大的数值转换为精度小的数值类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外注意。
2、案例实操
(1)将数据由高精度转换为低精度,就需要使用到强制转换。
(2)强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
- package chapter02
-
- object Test_08DataTypeConversion {
- def main(args: Array[String]): Unit = {
-
- //二、强制数值类型转换
-
- // (1)将数据由高精度转换为低精度,就需要使用到强制转换
- val n1:Int = -2.9.toInt
- println("n1:"+n1)
-
-
- // (2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
- val n2:Int = -2.9.toInt + -3.6.toInt
- println("n2:"+n2)
- val n3:Int = (-2.9 + -3.6).toInt
- println(n3)
-
- }
- }
1、基本说明
在程序开发中,我们经常需要将基本数值类型转换成String类型。或者将String类型转成基本数值类型。
2、案例实操
(1)基本类型转String类型(语法:将基本类型的值+ " " 即可)
(2)String类型转基本数值类型(语法:sl.toInt , sl.toFloat , sl.toDouble , sl.toByten , sl.toLong , sl.toShort )
- package chapter02
-
- object Test_08DataTypeConversion {
- def main(args: Array[String]): Unit = {
-
- //三、数值类型和String类型的转换
-
- //(1)数值转String
- val n4:Int =37
- val n5:String = n4 + ""
- println(n5)
-
- //(2)String转换数值
- val n:Int = "423".toInt
- val k:Float = "12.3".toFloat
- val h:Int = "12.3".toFloat.toInt
- println(n)
- println(k)
- println(h)
- val k2:Int = (n + k +h).toInt
- println(k2)
-
- }
- }
(3)注意事项
在将String类型转成基本数值类型时,要确保String类型能够转成有效的数据,比如我们可以把“123” ,转成一个整数,但是不能把“Hello”转成一个整数。
var n5:Int = "12.6" .toInt 会出现 NumberFormatException异常
面试题总结:涉及到强制类型转换的精度缺失和数据溢出的问题
- package chapter02
-
- /**
- * 128:Int类型,占据4个字节,32位
- * 原码 0000 0000 0000 0000 0000 0000 1000 0000
- * 补码 0000 0000 0000 0000 0000 0000 1000 0000
- *
- * 截取最后一个字节,Byte
- * 得到补码:1000 0000
- * 表示得到最大的负数是 -128
- *
- * 130:Int类型,占据4个字节,32位
- * 原码 0000 0000 0000 0000 0000 0000 1000 0010
- * 补码 0000 0000 0000 0000 0000 0000 1000 0010
- *
- * 截取最后一个字节,Byte
- * 得到补码:1000 0010
- * 对应原码:1111 1110
- * 表示得到最大的负数是 -126
- */
- object Test09 {
- def main(args: Array[String]): Unit = {
-
- var n:Int = 130
- var b:Byte =n.toByte //范围-128——127
- println(b)
-
-
-
- }
- }