八大基本类型转换

八种基本类型

类型名称字节空间应用场景
byte1Byte字节数据
short2Byte短整数
int4Byte普通整数
long8Byte长整数
float4Byte普通整数点数
double8Byte双精度浮点数
char2Byte一个字符
boolean1Byte逻辑变量(true flase)

转换时的高低顺序

高容量到低容量需要强制转换

public class Demo003 {
    public static void main(String[] args) {
        int i=128;
        byte b=(byte)i;//高到底需进行强制转换
        System.out.println(i);
        System.out.println(b);

结果:

 

低容量到高容量自然转换

int i1=128;
double d=i1;//低到高进行自然转换
System.out.println(i1);
System.out.println(d);
System.out.println("=============");

结果:

 

/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换成不相干的类型
3.高容量转换成低容量时是强制转换
4.转换时可能出现溢出和精度问题
 */

精度问题

System.out.println("=========");
System.out.println((int)23.7);//23 精度出错
System.out.println((int)45.78f);//45 精度出错

结果:

 

数值溢出问题

public class Demo4 {
    public static void main(String[] args) {
        //操作数比较大的时候注意溢出问题
        //JDK7新功能 数值过大时可用下划线隔开
        int money=10_0000_0000;
        System.out.println(money);
        System.out.println("===========");
        int money1=10_0000_0000;
        int years=20;
        int total=money1*years;
        System.out.println(total);//结果-1474836480 原因是数值溢出

结果:

 

转换成容量更大的long类型:

long total1=money1*years;
System.out.println(total1);//结果仍然是-1474836480 原因是转换之前已经出了问题,所以转换后依然是错误答案
System.out.println("=============");

结果:

 

在转换前定义

long total2=money1*((long)years);
System.out.println(total2);//结果正确
​
long total3=((long)money1)*((long)years);
System.out.println(total3);

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值