美文网首页
捯饬一下Java类型转换

捯饬一下Java类型转换

作者: 晏子小七 | 来源:发表于2020-04-02 19:54 被阅读0次
日常开发过程中,我们经常会遇到基本数据类型的转换,今天就来稍微总结一下Java的类型转换。

1.自动类型转换(隐式转换)

基本数据类型:

Java的基本数据类型可以按照从低位到高位自动转换,但从高位到低位需要强制转换。

注意几点:
  • 布尔型和其它基本数据类型之间不能相互转换;
  • char可转换为int、long、float和double,其他类型不能转换为char;
  • 从低到高的排序为:byte->short->int->long->float->double;


    类型转换图
理解:

我们都知道数值型类型主要区别是分配的内存空间大小不同,杯中水倒入桶中,自然不会有问题;但是桶中水倒入杯中就可能会溢出。如下图:


桶转杯会溢出

引用数据类型:

①. 基本类型可以和其对应的包装类自动转换,即自动装箱和拆箱。

什么是自动拆箱和装箱?

简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型

例:

 //自动装箱
 Integer num = 99;
 
 //自动拆箱
 int numprim = num;
 

②. 子类能直接转换为父类或接口类型:子类就是父类。
如:

Animal cat = new Cat();

③. 父类转为子类时要强转,但是在运行时若与实际对象不对应,会抛异常ClassCastException。


2.强制类型转换(显式转换)

基本数据类型:

很多时候我们会用到类型需要从高到低进行转换的场景,比如你需要将 double 型的值赋给一个 int 型的变量,你将怎么办?
这样数据是不会进行自动转换的,因为double型的范围比int型大,此时就需要进行强制转换。

例:

int a = 3;
double b = 5.0;
a = (int)b;
注意:
  • char 类型比较特殊,char 自动转换成 int、long、float 和 double,但 byte 和 short 不能自动转换为 char,而且 char 也不能自动转换为 byte 或 short。
  • 在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零。

引用数据类型:

注意若转换后在运行时实际不是对应的对象,会抛出ClassCastException运行时异常。

Animal animal = new Cat();
Cat cat = (Cat)animal;
理解:

上面我们说了杯中水倒入桶中,自然不会有问题;但是桶中水倒入杯中就可能会溢出,可是桶中水没有超过杯的容积的话,还是可以倒进来的,此时就是所谓的强制类型转换。如下图:


容积允许可互转

相关文章

  • 捯饬一下Java类型转换

    日常开发过程中,我们经常会遇到基本数据类型的转换,今天就来稍微总结一下Java的类型转换。 1.自动类型转换(隐式...

  • 捯饬捯饬

    最近太忙了,眼睛睁开就开启上班模式,中午没回家吃饭,街上随便对付一顿,我又属于吃饭比较挑剔的人。 可能是太忙,真饿...

  • 捯饬捯饬自己

    5月底,家附近一大型商场开业,伙伴们约好了早早起来去凑热闹,宣传说有很多折扣和诱人的抽奖活动,想着去占占便宜。那天...

  • 捯饬捯饬心情好

    捯饬这词儿,一看就是东北味儿,干脆利落。捯饬捯饬,规整一下,利索点儿的意思。 什么事儿,整齐规矩的话,看着都齐爽,...

  • 点点滴滴 | 捯饬捯饬

    俺妈常对我说,趁着年轻赶快打扮。老了穿啥也不好看,再涂脂抹粉也吓人。 走在路上,前面一背影吸引了我。头戴黑色礼帽,...

  • 瞎捯饬

    用毛笔尝试素描

  • 瞎捯饬

    本人天生聪慧,学技术学开机器修机器自然不在话下,就是碰到数字运算有些愚笨而已。 今天开机器,我用余光撇见玻...

  • 古代叫胭脂水粉,如今叫化妆品。

    现如今,男女出门都要捯饬,不捯饬反而不被待见,对于捯饬这事,在古代就是常有的事,只不过没有现在常见。在古代,对于捯...

  • 哈哈哈

    要开始学着捯饬自己,捯饬的锃光瓦亮的哈哈哈

  • 情绪日记

    昨儿去做了头发,烫了一下,以前都是每到过年前才去做一做头发,或者染一下,毕竟过年了大家都要捯饬捯饬一下。 ...

网友评论

      本文标题:捯饬一下Java类型转换

      本文链接:https://www.haomeiwen.com/subject/eoffphtx.html