zoukankan      html  css  js  c++  java
  • Java类型转换

    转换规则

    • 八种基本数据类型当中除布尔类型之外的7种类型之间都可以互相转换
    • 小容量向大容量转换,称为自动类型转换,容量从小到大排序:
      byte < short < int < long < float < double < char
      注:任何浮点类型不管占用多少个字节,都比整数容量大。char和short可表示的种类数量相同,但是char可以取更大的正整数
    • 大容量转换为小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
    • 当整数字面值没有超过byte,short,char的取值范围,可以直接赋值给byte,short,char类型的变量。
    • byte,short,,char混合运算的时候,各自先转换成int类型在做运算。
    • 多种数据类型混合运算,先转换成容量最大的那种在做运算。

    ①. Int a=10.8;//数据精度丢失警告。结果为10——自动类型转换

    ②. Int a=(int)10.8;//无警告。把10.8强制转换为整型——强制类型转换

    ③. Double c=10.6+6//结果为16.600000。即把6转为6.000000后再参与运算。

    在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。

    ④. 参与运算的两个数是什么类型,那么其结果就是什么类型。
    int a=10/3结果为3,double b=10/3结果为3.000000;
    double c=10.0/3结果为3.333333。要求精确值可以进行强制类型转换。
    double d=(double)3/2把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。
    也可以写成3/(double)2。这种情况需要注意与对整体进行强制转换的区别 double e=(double)(3/2)是先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。

    优先级问题:

    byte h = (byte)(int)g / 3
    // 先将g转换为int,又将int类型的g转换为byte类型,再运算g/3。运算后的结果为int类型,所以再赋值给byte类型的h时会出现精度损失的问题。
    正确的应该是:byte h = (byte)(int)(g / 3)

  • 相关阅读:
    Java之JVM调优案例分析与实战(3)
    Java之JVM调优案例分析与实战(2)
    Java之JVM调优案例分析与实战(1)
    Creating a Fragment: constructor vs newInstance()
    Patterns-Observer
    Global Times 单词(日常收集)
    Unity3D入门工具介绍(一)
    指定安装应用程序移至SD卡(App2SD)
    Android源代码目录结构(转)
    技术路线的选择重要但不具有决定性(转)
  • 原文地址:https://www.cnblogs.com/yu011/p/12632530.html
Copyright © 2011-2022 走看看