Java--类型转换 & JDK7扩展

1. 类型转换


1.1 自动类型转换

自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型

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

【演示】

    public static void main(String[] args) {
//        定义一个char类型
        char c1 = 'a';
//        char类型自动转换位int
        int i1 = c1;
        System.out.println("char自动类型转换位int后的值等于" + i1);
//        定义一个char类型
        char c2 = 'A';
//        char类型和int类型计算
        int i2 = c2 + 1;
        System.out.println("char类型和int计算后的值等于: " + i2);
    }

在这里插入图片描述


1.2 强制类型转换

  • 强制类型转换,又被称为造型,用于显式的转换一个数值的类型.
  • 强制类型转换可能造成精度降低或溢出。

语法:

强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类型。 条件是转换的数据类型必须是兼容的。

【演示】

    public static void main(String[] args) {
        double x = 3.14;
        int nx = (int) x;
        System.out.println("nx = " + nx);
        char c = 'a';
        int d = c + 1;
        System.out.println("d = " + d);
        System.out.println("(char) " + d + " = " + (char) d);
    }

在这里插入图片描述

1.3 强制类型转换可能丢失信息

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。

示例:

    public static void main(String[] args) {
        int x = 300;
        System.out.println((byte) x); //44
    }

在这里插入图片描述


1.4 常见错误和问题

  1. 操作比较大的数时,要留意是否溢出,尤其是整数操作时;
    public static void main(String[] args) {
        //10亿
        int money = 1000000000;
        int years = 20;
        //返回的是负数
        int total = money * years;
        //返回的仍然是负数。默认是int,因此结果会转成 int值,再转成long。但是已经发生了数据丢失
        long total1 = money * years;
        //先将一个因子变成long,整个表达式发生提升。全部用long来计算。
        long total2 = money * ((long) years);
        System.out.println("total = " + total);
        System.out.println("total1 = " + total1);
        System.out.println("total2 = " + total2);
    }

在这里插入图片描述

  1. L和l 的问题:
  • 不要命名名字为l的变量
  • long类型使用大写L不要用小写。

示例:

    public static void main(String[] args) {
        // 不要用l命名变量, 看着很像1
        int l = 2;
        // 需要用大写L表示long类型
        long a = 23451L;
    }

2. JDK7扩展

JDK7新特性: 二进制整数

  • 由于我们在开发中也经常使用二进制整数,因此JDK7为我们直接提供了二进制整数的类型。我们只要以:0b开头即可。

示例:

    public static void main(String[] args) {
        System.out.println("二进制: 0101 = " + 0b0101);
    }

在这里插入图片描述

JDK7新特性:下划线分隔符

  • 在实际开发和学习中,如果遇到特别长的数字,读懂它令人头疼!JDK7为我们提供了下划线分隔符,可以按照自己的习惯进行分割。

在这里插入图片描述

示例:

    public static void main(String[] args) {
        System.out.println("1_2345_7893 = " + 1_2345_7893);
    }

在这里插入图片描述



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值