类型的转换

类型转换

由于Java是强类型语言,所以在某些时候有运算需求之时,就需要用到类型转换。

为什么能够进行类型转换呢?

​ * Java中的字符本质还是数字

  • 运算规则:

    • 不同类型的数据先转化为同一类型,然后再进行运算。

      --------------------------byte,short,char -> int -> long -> float -> double
          
          为什么32float 会排在64long后面
          原因:小数的优先级一定大于整数
      
    • 什么时候是强制转换,什么时候是自动转换呢?

      • 类型从高到低转换就需要强转,从低到高转换就是自动转换。
      • 不能对布尔值进行转换
      • 不能把对象类型转换成不相干的类型
      • 转换的时候可能会存在内存溢出,或者精度问题
      public class Demo05 {
          public static void main(String[] args) {
              // 类型转换
              int i = 129;
              byte b = (byte)i; //  在变量前面加上括号重新定义暂时类型的形式 -----》强制转换
              System.out.println(i);
              System.out.println(b);
              //  为什么得到的b 的值为-128呢??
              /*
              *   byte的数值范围 -128 - 127;最大的数就是 127 ;
              *   而我们的i是128 ,这样就会造成内存溢出,内存溢出就会导致得到的结果不正确。
              *   内存溢出之后,是怎么计算值的呢? 溢出一点就得到最小值,两点就是最小值加1,以此类推。
               */
      
              //        浮点数转成int整数, 就会出现精度问题
              float dd = 121.41F;
              int dd1b = (int)dd;
              System.out.println(dd1b);
      
              // 自动类型转换
              short daf = 123;
              int dsd = daf;
              System.out.println(dsd);
      
              // 操作比较大的数的时候,要注意溢出问题
              // JDK7 新特性 , 可以使用下划线来隔开,并不会造成输出。
              int money =  100_0000_0000L; //在IDEA中,这里就会直接报错,说int类型没有这么长。
              int years = 23;
              long totle1 = money * years; // 这里就溢出了。想要让他们不溢出,那么就要把右边的运算式先进行强转,再计算。
          }
      }
      
      

学习来源:B站 --》狂神说java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值