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

    类型转换规则

    在Java语言中,当参与运算的两个变量的数据类型不同时,就需要进行隐式的数据类型转换,转换的规则是:从低精度向高精度转换即优先级满足:

    byte < short < char < int < long < float < double  
    

    例如,不同数据类型的值进行运算时,short 类型数据能够自动转换为 int 类型, int 类型数据能够自动转换为 float 类型等。反之,则需要通过强制类型装换来实现。

    类型自动转换

    操作数1的类型 操作数2的类型 转换后的类型
    long byte short char int long
    int byte short char int
    float byte short char int long float
    double byte short char int float double

    当类型自动转换时,需要注意以下几点:

    1. char类型的数据转换为高级类型,会转换为其对应的ASCII码。
    2. byte char short 类型的数据在参与运算时会自动转换为int型,但当使用“+=”运算时,就不会产生类型的转换。
    3. 基本数据类型与boolean类型是不能相互转换的

    强制类型转换

    操作数1的类型 操作数2的类型
    byte char
    char byte char
    short byte char
    int byte short char
    long byte short char int
    float byte short char int long
    double byte short char int float double
    short a = 128;
    byte b = (byte)a;
    

    a = 128,b = -128。short类型变量占两个字节,a对应的二进制为:0000000010000000,由于byte只占一个字节,在强制转换为byte的时候只截取低字节:10000000,10000000是-128的补码,因此b的值为-128。

    Java余元在设计byte、short和char类型的运算时,首先会把这些类型的变量值强制转换为int类型,然后对int类型的值进行计算,最后得到的值也是int类型。
    如果把两个byte值相加最后会得到一个int类型的值,如果想得到short类型的结果,必须要显示转换为short类型。

    short s1 =1;
    s1 = s1+1;//这句编译器会报错
    s1 = (short) (s1+1);//这句是正确的
    s1 +=1;//这句java编译器会对其进行特殊处理,可以编译通过。 
    
  • 相关阅读:
    Android之rild进程启动源码分析
    ListView使用详解,listActivity使用方法
    打开其他android应用代码
    Android剖析和运行机制
    自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)
    Internet采用哪种网络协议?该协议的主要层次结构?Internet物理地址和IP地址转换采用什么协议?
    引用与指针有什么区别?
    在C/C++中static有什么用途?
    软件验收测试包括
    自底向上集成
  • 原文地址:https://www.cnblogs.com/luanpeng/p/6654865.html
Copyright © 2011-2022 走看看