【Java】Java基础-数据类型转换

boolean 类型不可以转换为其他的数据类型。
整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

  1. 容量小的类型自动转换为容量大的数据类型:
    (数据类型按容量大小排序为:
    byte,short,char->int->long->float->double byte,short,char之间不会互相转换,他们三者在计算时首先转换为int类型)
  2. 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出: 使用时要格外注意。
  3. 有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
    实数常量(如:1.2) 默认为 double.
    整数常量 (如: 123) 默认为 int

double转float产生溢出:
https://zhuanlan.zhihu.com/p/575766608
为啥呢?

在这里插入图片描述

public class Main {
    public static void main(String[] args) {
        int i=1,j;
        float f1=0.1f; float f2=123f;//直接加数字会被默认成double类
//        float f1=(float)0.1; float f2=(float)123;//第二种修改方法
        long l1 = 12345678L,l2=8888888888l;
        double d1 = 2e20,d2=124;
        byte b1 = 1,b2 =2,b3 = 127;//byte范围-2^7~-2^7-1,129>127,所以会报错
//        j=j+10//还没有给j赋值
        j=0;
        j=j+10;
        i=i/10;//i/10是float类
        i= (int)(i*0.1);//0.1默认为double类,需要强制类型转换
        char c1='a',c2=125;
        byte b = (byte)(b1-b2);//byte在计算时转为了int类
        char c = (char)(c1+c2-1);//char在计算时转为了int类
        float f3 = f1+f2;
        float f4 = (float)(f1+f2*0.1);
        double d = d1*i+j;
        float f =(float)(d1*5+d2) ;//1.0E21
        System.out.print(f);
    }
}

在这里插入图片描述
这里f的值为啥等于1.0E21?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值