zoukankan      html  css  js  c++  java
  • 数据类型的转换

    在程序运行的过程中,经常需要将一种数值类型转换成另一种数值类型,这种转换就叫做数据类型的转化。Java的数据类转化分为三种:自动转换,强制转换,类类型的相互转换。下面将一个一个的介绍:

    一、自动转换

      在程序运行的时候,有些数据类型的转化由编译器自动完成,而不需要人为的转换,这种转换为自动转换。

      自动转换存在的前提:小范围的数值类型和大范围的数值类型进行运算的时候,小范围的数据的类型会自动的提升转换为大范围数据类型。因此自动转换存在条件是小范围类型到大范围类型的转换。

    •  几个要点
    1. 自动转换只限于数值类型
    2. 自动转换是小类型自动转为大类型
    3. 如果两个操作数中存在一个double类型值,那么另一个操作数就会转为double型
    4. 如果两个操作数中存在一个float类型值,那么另一个操作数就会转为float型
    5. 如果两个操作数中存在一个long类型值,那么另一个操作数就会转为long型
    6. 否则就转为int类型。
    •  数值转换的合法转换图

       

    •  自动转换内存示意图解

      

      说明:图中a为int型,b为byte型,当分配内存的时候,系统为a分配4个字节空间共32位,为b分配一个字节空间,共8位。当a+b时,b的类型为小范围,那么b的类型就会自动提升为int型

     

    二、强制转换

      从上面知道,自动转换是小范围类型转成大范围类型,因此由大范围数据转成小范围数据就是强制转换,为什么叫强制转换,是因为这种情况不会自动进行转换,而是需要进行强制转换。因为由大范围转成小范围可能将大范围数据截断,导致数据溢出,因此使用强制转换要注意。如下图示:  

       

    • 特点:从上图中可以看出,强制转换可能会导致丢失一些数据
    • 转换格式:小数据类型 变量名 = (小数据类型) 大数据类型的数据变量;
    • 如果试图将一个数值从一种类型强制转换为另一种类型,而又超出了目标类型的表示范围的话,结果就会截成一个完全不同的值。
    • 强制转换内存图解:

       

     

    三、类类型转换

      Java语言的类类型也是可以像话转换的。它有如下的几个方面:

    1. 子类对象可以直接转换成父类对象(多态)
    2. 父类对象也可以转成子类对象,要强制转换
    3. 接口对象也同上面两条一样
    4. String类型和Integer,Double,Float,Boolean等基本包装类之间也可以通过Java提供的方法进行转换(具体查看jdk-help)
    5. 基本数据类型和基本类型包装类之间的相互转换,拆装箱操作
      1. 基本数据类型 ---- > 包装类类型 : 装箱操作
      2. 包装类类型 ---- > 基本数据类型 : 拆箱操作
  • 相关阅读:
    python学习:字符编码与转码
    python学习:文件操作
    python学习:基本运算符
    python学习:列表、元组、字典、集合
    python学习:基础知识
    linux常用命令
    hadoop手动安全模式
    System.getProperty("user.dir")的理解
    如何获取SpringBoot项目的applicationContext对象
    spring无法注入bean
  • 原文地址:https://www.cnblogs.com/geore/p/7157335.html
Copyright © 2011-2022 走看看