变量的类型转换(JAVA)

1.自动类型转换

满足以下两个条件:

(1)两种数据类型彼此兼容
(2)目标类型的取值范围大于源类型的取值范围

自动转换大致可分为3种情况:

(1)整数类型之间的转换
(2)整数类型转换为float类型
(3)其他类型转换为double类型

public static void main(String[] args) {
        /*  整数之间的转换   (可以简单粗暴的看为大吃小  小转大)  */
        byte b = 32;
        long l = b;

        /*  整数转单精度浮点数  */
        float f = l;/* 这里要注意long是8字节,float是4字节,有数据丢失的风险 所以不建议long转float */
        
        /*  其他类型转双精度浮点数  */
        char c = 97;
        double d = c;
        
        System.out.println(l+" "+f+" "+d);
    }

2.强制类型转换

(1)强制类型转换的方法为:

目标类型  变量  = (目标类型) 变量或值

public static void main(String[] args) {
        int num = 7;
        byte num2 ;
        num2 = (byte)num;  //注意,强制类型转换一样容易造成数据丢失

        System.out.println("num = "+num+"  num2 = "+num2);
    }

 

 (2)强制类型转换数据的丢失

以上为例:

int型占用内存4字节 num=7 在计算机里表示为  00000000  00000000  00000000  00000111

byte型占用内存1字节  故在强制类型转换中  num  会丢失3个高位字节的数据

故  num2  只能取到  num  最低位字节的数据   00000111

温馨提示:

变量在表达式中运行时,有可能会自动提升数据类型。

比如以下代码段:

public static void main(String[] args) {
        byte b1 = 1;
        byte b2 = 2;
        byte b3 = b1 + b2;
        
        System.out.println(b3);
    }

明明 b1,b2 都是 byte 类型,可编译器却说是 int 型

也就是说在运算期间 b1,b2 被自动提升为 int 型。  注意是 b1,b2被提升类型,而不是 b1+b2 的结果被提升类型

解决方法很简单,就是用上 强制类型转换 的方法,如下:

 

public static void main(String[] args) {
        byte b1 = 1;
        byte b2 = 2;
        byte b3 = (byte) (b1 + b2);
        
        System.out.println("b3="+b3);
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值