【基本数据类型转换例题】

本文通过示例详细解释了Java中自动类型转换和强制类型转换的规则。在自动转换中,小精度数据类型可以无损地转换为大精度,但大精度不能直接赋值给小精度。在混合运算中,系统会将所有数据转换为最大容量类型进行计算。而在强制转换中,可能会导致精度损失或数据溢出。此外,文章还提到了byte,short,char之间的转换规则以及char类型与int变量之间的转换需要注意的问题。
摘要由CSDN通过智能技术生成

自动类型转换示例

示例1


public class AutoConvert {//自动类型转换
    public static void main(String[]args){
        //小精度自动转为大精度
        int a = 'c';
        double d=100;

        System.out.println(a);//99
        System.out.println(d);//100.0

       System.out.println("-------------------------------------------------------");//分割线
        //多种类型的数据混合运算情况
        //系统会首先自动将所有的数据转换为容量最大的那个数据类型,再进行运算
        //容量大小:int < float < double

        //示例 :314+16.1
          int i1 = 314; //true
      //  float d1 = i1+16.1;//false  i1+16.1 => 结果类型是 double
      //  double d1 = i1+16.1;//(对,此行代码和下一行代码形式都可)  i1+16.1 => 结果类型是double
          float  d1 = i1+16.1f ;//用F替换f也可,结果类型是float
      //  输出
          System.out.println(d1); //330.1
      //以上得出结论,把大精度(容量大)的数据类型赋值给小精度(容量小)的数据类型
      //就会报错,反之就会进行自动类型转换,如上代码所示


    }
}
     //(byte,short)和char之间不会相互自动转换
     //特殊:当把具体数据赋值给byte时,先判断是否在byte范围内,若果是则ok
     //若果是按变量赋值给byte就会判断数据类型,就会报错

示例2

public class AutoConvert02 {
    public static void main (String []args){
        //  byte short char 它们三者可以计算,
        //只要出现三者一个就满足,并不一定要都出现
        //  在计算时首先转换为int类型

        byte b1 = 2;
        byte b2 = 2;
        short s1 = 3;
        // short q = b1 + s1; //报错,b1+s1 =>结果类型int
        int q = b1 + s1; //ok, 结果为5
        System.out.println(q);//5

        //提升
       //byte s2 = b1 + b2;//报错,b1 + b2=>结果类型为int
        int s2 = b1 + b2; //2+2
        System.out.println(s2); //4


    }
}

强制类型转换示例

示例1

public class ForceConvert01 {//强制类型转换
    public static void main (String []args){
        int n1 = (int)2.9;
        System.out.println("n1=" + n1);//①造成精度损失
                                       //输出结果n1=2

        int n2 = 300;
        byte b1 = (byte)n2;
        System.out.println("b1=" + b1);//②造成 数据溢出
                                       //输出结果b1=44

    }
}

示例2


public class ForceConvert02 {
    public static void main (String[]args){
        //强制转换符号只针对于最近的操作数有效,
        // 往往会使用小括号提升优先级。
        //示例
       // int s = (int)15*3.6+6.6;//报错,(int)15 * 3.6 + 6.6 ==>double
         int s = (int)(15*3.6+6.6);//ok,(int)(15*3.6+6.6) ==>int
        System.out.println(s);//60

        System.out.println("---------------------------------------------");

        //char类型可以保存int的常量值(即具体数值),但不能保存int的变量值,
        //           需要强转
        //示例

        char c1 = 97;
        int h = 65; //整型变量h
        //char n = h; //报错
        char n2 = (char)h; //ok
        System.out.println(n2);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

这b会代码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值