首页 > 其他 > 详细

类型转换和拓展

时间:2021-04-16 21:37:46      阅读:33      评论:0      收藏:0      [点我收藏+]

类型转换

由于Java是强类型语言,所以在进行有些运算的时候,需要用到类型转换。在运算中不同类型的数据是先转化为同一类型,然后在进行运算。

低----------------------------------------------------------------->高

byte,short,char—>int—>long—>float—>double

小数类型的优先级一定大于整数其余的按大小排列

而类型转换他分为两个一个是强制类型转换一个是自动类型转换

强制类型转换

强制类型转换它是以高到低的转换

 public static void main(String[] args) {
       int i=128;
       byte b=(byte)i;//内容溢出
       System.out.println(i);
       System.out.println(b);}
            //运行结果为:128
            //         -128

从上面我们可以看出直接转换之后为负数而这个是我们进行强制转换的时候比较容易出现的问题内容溢出 byte的范围只有 -128~127所以当128转换为byte是内容溢出了就会随便显示一个数

自动转换

自动转化和强制类型相反是从低到高转换所以就不存在内容溢出的问题

 public static void main(String[] args) {        
       int a=129;
       double c=a;
       System.out.println(a);
       System.out.println(c);}
           //运行结果:129
           //       129.0

注意点

  • 不能对布尔值进行转换/

  • 不能把对象类型转换为不相干的类型

  • 下不是高容量转换为低容量时侯,强制转换

  • 转换的时候可能存在内存溢出,或者精度问题!

精度问题举例

public static void main(String[] args) {
   float a=-45.89f;
   double b=23.7;
    System.out.println((int)a);
       System.out.println((int)b);}
             //运行结果:45
             //       23

强制转换的话不仅会有内容溢出而且还会出现精度丢失的问题

拓展

操作比加大的数的时候注意溢出问题

public static void main(String[] args) {
   //JDK新特性,数字之间可以用下划线分割
   int money=10_0000_0000;
   int year=20;
   int total=money*year}
       Systen.out.println(total);
       //运行结果:-1474836486

计算的时候溢出了所以出现了负的我们换一个容量大的long来看看

public static void main(String[] args) {
   //JDK新特性,数字之间可以用下划线分割
   int money=10_0000_0000;
   int year=20;
   long total=money*year;
      Systen.out.println(total);}
      //运行结果 :-1474836486

我们把它的容量便大了,还是出现了付的。因为 money 和 year 默认是 int 所以计算的时候它的结果也是 int 已经存在问题。所以在转换也没有用

*我们在它运行之前转换看一下

public static void main(String[] args) {
   int money=10_0000_0000;
   int year=20;
   long total=money*(long)year;
      Systen.out.println(total);}
      //运行结果 :20000000000

从运行结果来看在运算中。运行之前转换是可以的,在运行之后转换的话会出现错误

 

类型转换和拓展

原文:https://www.cnblogs.com/dengyi102986/p/14668473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!