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. 包装类类型 ---- > 基本数据类型 : 拆箱操作
  • 相关阅读:
    vue form dynamic validator All In one
    TypeScript api response interface All In One
    closable VS closeable All In One
    macOS 如何开启 WiFi 热点 All In One
    vue css inline style All In One
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)
    牛腩新闻 59 整合添加新闻页 FreeTextBox 富文本编辑器,检测到有潜在危险的 Request.Form 值,DropDownList 的使用
    牛腩新闻 61尾声: error.aspx的使用 防止报错
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (上)
    牛腩新闻 62:尾声续2 asp.net的编译和发布
  • 原文地址:https://www.cnblogs.com/geore/p/7157335.html
Copyright © 2011-2022 走看看