java类型转换

类型转换分为两种:隐式类型转换和显示类型转换

一、隐式类型转换

从取值范围小的–>取值范围大的,系统会自动执行

public static void main(String[] args) {
        int a = 5;
        long b = 2147483648L;// java默认整数类型为int超出int类型的数要在后面加L
        b = a + b;
        System.out.println(b);
    }

程序不会出错,输出为2147483653;

很好理解,此程序相当于把int转换为long,而int的范围被long包围,所以int类型也是long类型。int占四个字节,long占8个字节,在进行计算的时候将int前面加上四个字节,00000000 00000000 00000000 00000000

二、显式类型转换

范围大的–>范围小的,必须使用显式类型转换,如果将一中的代码修改如下,

public static void main(String[] args) {
        int a = 5;
        long b = 2147483648L;// java默认整数类型为int超出int类型的数要在后面加L
        a = a + (int) b;
        System.out.println(a);
    }

输出结果为-2147483643,因为2147483648已经超出int范围,强行将long转为int就会出错

以下程序也是错误的

public static void main(String[] args) {
        int a = 25.3; //出错
        int b = 5;
        long c = 25;
        b = b + c;  //出错
        System.out.println(a + "" + b);
    }

修改为

public static void main(String[] args) {
        int a = (int) 25.3;
        int b = 5;
        long c = 25;
        b = b + (int) c;
        System.out.println(a + "" + b);
    }

输出25 30

三、

public static void main(String[] args) {
        byte b = 5;
        b = b + 1;   //出错
        System.out.println(b);
    }

java中数字默认是int型的,但第一行中并不会报错,是因为第一行的b是确定的,就等于5,java会计算出5并不会超出byte的范围,所以正确;第二行就会报错,因为b = b + 1中的第二个b是个变量,并不能确定具体数值,如果b=127,那么相加后所得到的变量b就会超出byte范围。

四、字符型的转换

public static void main(String[] args) {
        char ch = 97;
        System.out.println(ch);
        char ch2 = 'a';
        System.out.println(ch2 + 1);
    }

输出结果为a 98

char类型占两个字节,97在char范围内,可以将其转换为char类型的字符,所以输出a

‘a’是97,向上转换为int,所以相加后是int类型,如果想显示字符类型,可以用强制类型转换,只要在char范围内

五、+=是赋值运算符

public static void main(String[] args) {
        short s = 4;
        s = s + 5;//编译失败
        s += 5;//编译通过,会做自动转换,如short s = 4;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值