Java数据类型转换

Java是强类型语言(强制类型定义语言,即一个变量被定义为一个数据类型之后,如果不进行强制类型转换那么该变量就一直是该数据类型),所以有时候运算需要使用类型转换。

类型转换分为强制类型转换和自动类型转换

数据字节大小:低------------------------------------------------------→高

                          byte,char,short→int→long→float→double

强制类型转换:高→低   转换方法:(类型名)变量

                举例:int i =128;

                          byte i2 = (byte)i;

        不过上面的代码把i2输出后输出结果会变成-128,这是关于内存溢出的问题,具体不再赘述(其实我还没学到)

自动类型转换:低→高 转换方法:正常转换

                举例:byte i =127;

                           int i2 = i;

                         //这样已经转换了

运算时需要先转换成同一类型

举例:

public class demo05 {
    public static void main(String[] args) {
        int money = 10_0000_0000;//jdk7新特性,可以用下划线分割数字,不影响输出
        int years = 20;
        int salary = money*years;
        System.out.println(salary);
    }
}

输出结果:

这就是内存溢出,int类型数据字节不够需要转换成更多字节的数据类型才能输出正确的结果例如long类型

修改代码把salary强制转换为long后输出结果不会变

public class demo05 {
    public static void main(String[] args) {
        int money = 10_0000_0000;//jdk7新特性,可以用下划线分割数字,不影响输出
        int years = 20;
        long salary = money*years;
        System.out.println(salary);
    }
}

输出结果还是

这就是在运算后转换数据类型,并不能zhua想到达到的作用,因此我们需要在运算前就进行数据类型转换,把int类型转换为long类型

public class demo05 {
    public static void main(String[] args) {
        int money = 10_0000_0000;//jdk7新特性,可以用下划线分割数字,不影响输出
        int years = 20;
        long salary = money*(long)years;
        System.out.println(salary);
    }
}

这样就会输出正确的结果 

注意!1.boolean类型不能强制转换

           2.不能把对象类型转换成不相干的类型

           3.转换时可能会出现内存溢出和精度丢失(例如小数转换成整数会丢失小数点后的数字)问题 System.out.println((int)36.126f);//会输出36

ps:疫情又出来闹妖了,希望不会延迟开学七道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值