在java中数据类型间的转换,分为强制类型转换和自动类型转换

数据类型转换

数据类型由低到高排序:

byte–short–char–int–long–float–double (小数优先级一定大于整数)

需注意:运算中,不同类型的数据先转化为同一类型,然后进行运算

强制类型转换:由高转到低类型

public class demo08 {
    public static void main(String[] args) {

        // 强制转换 由高转到低  (类型)变量名
        int i = 128;
        byte b = (byte)i;  //byte类的最大值为127

        System.out.println(i);    //运行结果为128
        System.out.println(b);    //运行结果为-128  内存溢出
    }
}

自动类型转换:由低转到高类型

public class demo08 {
    public static void main(String[] args) {
        // 自动转换  由低转到高
        int i1 = 128;
        double b1 = (double)i;

        System.out.println(i1);    //运行结果为128
        System.out.println(b1);    //运行结果为128.0
    }
}

需注意以下几点:

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相干的类型
  • 在把高容量转换为低容量时,需要强制转换
  • 转换时,可能存在内存溢出或者精度问题!
char c = 'a';
int d = c + 1;
System.out.println(d);     //  运行结果为98
System.out.println((char)d);     //  运行结果为b
public class demo09 {
    public static void main(String[] args) {
        // 操作比较大的数时,注意溢出问题
        // JDK7新特性,数字之间可以用下划线(_)分割
        int money = 10_0000_0000;
        System.out.println(money);   // 运行结果为1000000000

        int year = 20;
        int total = money*year;
        long total2 = money*year;
        System.out.println(total);   // 运行结果为-1474836480  计算时溢出
        System.out.println(total2);   // 运行结果为-1474836480  默认是int 计算结束后才转换为long类型 但是转换之前就有问题

        // 因此需要在计算之前就做转换,如下
        long total3 = money*((long)year);
        System.out.println(total3);  // 运行结果为20000000000
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值