• 数值类型转换02


    目录

    一、强制类型转换

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

    三、扩展面试题


    一、强制类型转换

    1、基本说明

    自动类型转换的逆过程,将精度大的数值转换为精度小的数值类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外注意。

    2、案例实操

    (1)将数据由高精度转换为低精度,就需要使用到强制转换。

    (2)强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级。

    1. package chapter02
    2. object Test_08DataTypeConversion {
    3. def main(args: Array[String]): Unit = {
    4. //二、强制数值类型转换
    5. // (1)将数据由高精度转换为低精度,就需要使用到强制转换
    6. val n1:Int = -2.9.toInt
    7. println("n1:"+n1)
    8. // (2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
    9. val n2:Int = -2.9.toInt + -3.6.toInt
    10. println("n2:"+n2)
    11. val n3:Int = (-2.9 + -3.6).toInt
    12. println(n3)
    13. }
    14. }

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

    1、基本说明

    在程序开发中,我们经常需要将基本数值类型转换成String类型。或者将String类型转成基本数值类型。

    2、案例实操

    (1)基本类型转String类型(语法:将基本类型的值+ " " 即可)

    (2)String类型转基本数值类型(语法:sl.toInt , sl.toFloat , sl.toDouble  , sl.toByten , sl.toLong , sl.toShort )

    1. package chapter02
    2. object Test_08DataTypeConversion {
    3. def main(args: Array[String]): Unit = {
    4. //三、数值类型和String类型的转换
    5. //(1)数值转String
    6. val n4:Int =37
    7. val n5:String = n4 + ""
    8. println(n5)
    9. //(2)String转换数值
    10. val n:Int = "423".toInt
    11. val k:Float = "12.3".toFloat
    12. val h:Int = "12.3".toFloat.toInt
    13. println(n)
    14. println(k)
    15. println(h)
    16. val k2:Int = (n + k +h).toInt
    17. println(k2)
    18. }
    19. }

    (3)注意事项

    在将String类型转成基本数值类型时,要确保String类型能够转成有效的数据,比如我们可以把“123” ,转成一个整数,但是不能把“Hello”转成一个整数。

    var n5:Int = "12.6" .toInt 会出现 NumberFormatException异常

    三、扩展面试题

    面试题总结:涉及到强制类型转换的精度缺失和数据溢出的问题

    1. package chapter02
    2. /**
    3. * 128:Int类型,占据4个字节,32位
    4. * 原码 0000 0000 0000 0000 0000 0000 1000 0000
    5. * 补码 0000 0000 0000 0000 0000 0000 1000 0000
    6. *
    7. * 截取最后一个字节,Byte
    8. * 得到补码:1000 0000
    9. * 表示得到最大的负数是 -128
    10. *
    11. * 130:Int类型,占据4个字节,32位
    12. * 原码 0000 0000 0000 0000 0000 0000 1000 0010
    13. * 补码 0000 0000 0000 0000 0000 0000 1000 0010
    14. *
    15. * 截取最后一个字节,Byte
    16. * 得到补码:1000 0010
    17. * 对应原码:1111 1110
    18. * 表示得到最大的负数是 -126
    19. */
    20. object Test09 {
    21. def main(args: Array[String]): Unit = {
    22. var n:Int = 130
    23. var b:Byte =n.toByte //范围-128——127
    24. println(b)
    25. }
    26. }

  • 相关阅读:
    【springboot进阶】使用aop + 注解方式,简单实现spring cache功能
    单商户商城系统功能拆解31—营销中心—幸运抽奖
    【Python实战】——Python+Opencv是实现车牌自动识别
    风险登记册
    JVM 方法区
    代码随想录 第8章 二叉树
    程序人生:从小公司到一线大厂,薪资翻倍,我做到了...
    如何在idea中隐藏文件或文件夹
    计算机毕业设计JavaNBA篮球资讯网(源码+系统+mysql数据库+lw文档)
    【操作系统】第三章 内存管理
  • 原文地址:https://blog.csdn.net/qq_70085330/article/details/126131165