• 类型转换


    整型、实型(常量)、字符型数据可以混合运算。

    Java是强类型语言,运算中,不同类型的数据先转化为同一类型,然后进行运算。

    一、自动类型转换

    转换从低级到高级(数据字节大小由小到大)

     ------------------------------------>  

    byte,short,char—> int —> long—> float —> double

    数据类型转换必须满足如下规则:

    不能对Boolean类型进行类型转换。

    不能把对象类型转换成不相关类的对象。

    在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

    转换过程中可能导致溢出或损失精度,例如:

    int i =128;   

    byte b = (byte)i;

    因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

       5.浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:

    (int)23.7 == 23;        

    (int)-45.89f == -45

    自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型

    例如: short数据类型的位数为16位,就可以自动转换位数为32int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

    实例

    public class day0928 {
        public static void main(String[]args){
            char c1='j';//定义一个char类型
            int j1=c1;//char自动类型转换为int
            System.out.println("Char自动转换为int后的值等于"+j1);
            char i2='J';
            int j2=i2-4;//char 类型和 int 类型计算
            System.out.println("Char类型和int计算后的值等于"+j2);
        }

    运行结果为:

    Char自动转换为int后的值等于106

    Char类型和int计算后的值等于70

    解析:c1 的值为字符 j ,ASCII 码表可知对应的 int 类型值为 106 A 对应值为 74,所以 j2=74-4=70

    二、强制类型转换

    条件是转换的数据类型必须是兼容的。

    格式:(type)value

    type是要强制类型转换后的数据类型

    实例:

    public class day0928 {
        public static void main(String[]args){
            int c1 = 113;
            char b = (char) c1;//强制类型转换为char
            System.out.println("int强制类型转换为char后的值等于"+b);
        }
    }

    运行结果:

    int强制类型转换为char后的值等于q

    三、隐含强制类型转换

    整数的默认类型是 int

    小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f

  • 相关阅读:
    Java学习:面向对象三大特征:封装、继承、多态之封装性
    Java学习:构造方法
    Java学习:集合双列Map
    斗地主综合案例:有序版本(双列)
    JDK9对集合添加的优化
    Java学习:Debug调试程序
    计算一个字符串中每一个字符出现的次数
    Java学习:Map接口
    Java学习:可变参数
    Pediy CTF 2018 reverse
  • 原文地址:https://www.cnblogs.com/yhcTACK/p/15350682.html
Copyright © 2020-2023  润新知