数值类型转换02

目录

一、强制类型转换

二、数值类型和String类型间转换

三、扩展面试题


一、强制类型转换

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)

  }
}

二、数值类型和String类型间转换

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)



  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值