JavaSE-数据类型转换的几个难点学习

一 谈谈long类型变量的初始化

定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围。

情况一:

 //此时100默认是int类型,但没有超过int类型表示范围,故不报错
		long l1 = 100; 
        System.out.println(l1);
        System.out.println("-------------");

情况二:
//控制台显示过大的整数,因1000000000超过了int的表示范围。
		long l2 = 10000000000;
        System.out.println(l2);
        System.out.println("-------------");

在这里插入图片描述


解决方法:解决方法,在该数值后面添加L,标识为long类型。
		long l2 = 10000000000L;
        System.out.println(l2);
        System.out.println("-------------");

成功运行:

在这里插入图片描述



二 浮点数常量(默认是double类型)转为float类型变量的两种可能

定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容。

示例:13.14默认为double类型,表示范围比float要大

        float f1 = 13.14;
        System.out.println(f1);
        System.out.println("-------------");

运行结果:
错误:(10, 20) java: 不兼容的类型:double转换到float可能会有损失

解决方法:在13.14后加上F,使其转换为float类型的再赋值就不会出错。
        float f1 = 13.14F;
        System.out.println(f1);
        System.out.println("-------------");

运行结果:
13.14
-------------
13.14
-------------

设想:如果不在13.14后加F,改为强制类型转换的方式可不可以呢?
        float f2 = (float)13.14;
        System.out.println(f2);
        System.out.println("-------------");


运行结果:
13.14
-------------
13.14
-------------

设想成立!

整型数据赋值给short,byte,char类型的几种情况

整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型,在不做运算的情况下,如果直接将较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量,系统会自动把这个整数值当成byte或short类型来处理。

情况一:在不做运算的情况下,将较小的整数值(在byte或short类型的表数范围内)赋给一个byte或short变量。
        //不做运算
        byte b1 = 10;
        short s1 = 20;
        System.out.println(b1);
        System.out.println(s1);
        System.out.println("--------");

运行结果:系统会自动把这个整数值当成byte或short类型来处理
10
20
--------

情况二:在将short,byte,int类型数据做运行的情况下:
        byte b1 = 10;
        byte b2 = 15;
        short s1 = 20;
        short s2 = 25;
        int i1 = 30;
        byte sum1 = b1 + b2 ;

        byte b1 = 10;
        byte b2 = 15;
        short s1 = 20;
        short s2 = 25;
        int i1 = 30;
        //byte sum1 = b1 + b2 ;
        short sum2 = s1 + s2;
        byte b1 = 10;
        byte b2 = 15;
        short s1 = 20;
        short s2 = 25;
        int i1 = 30;
        //byte sum1 = b1 + b2 ;
        //short sum2 = s1 + s2;
        byte sum3 =b1+s1+i1;

以上运行结果均类似:
在这里插入图片描述
情况三:将数值直接做运算后赋值给byte或short类型数据则不会出现情况二,而与情况一类属统一情况。

        byte sum4 = 10 + 20;
        System.out.println(sum4);

运行结果:
30

进程已结束,退出代码 0

char类型变量不能与short类型变量互相赋值

示例:

        //char类型赋值给short
        char c1 = 'a';
        short s1 = c1;
        System.out.println(s1);
        short s1 = 98;
        char c1 = s1;
        System.out.println(c1);

运行结果均类似:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值