Java数据类型转换

Java的类型转换可分为基本类型和引用类型的数据转换。

基本类型的转换

类型转换主要在赋值、方法调用、算术运算三种情况下发生。

  1. 赋值和方法调用 转换规则: 从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换
    布尔型和其它基本数据类型之间不能相互转换;
    byte型可以转换为short、int、long、float和double;
    short可转换为int、long、float和double;
    char可转换为int、long、float和double;
    int可转换为long、float和double;
    long可转换为float和double;
    float可转换为double
  2. 算术运算中的自动类型转换:
    基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型;
    byte short char运算会转换为Int;
    如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
    如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
    如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
    如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。
    特殊:
    如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。
    当运算符为自动递增运算符(++)或自动递减运算符(--)时,如果操作数为byte,short或char类型不发生改变;

引用类型的转换

  1. 基本类型与对应包装类可自动转换,这是自动装箱和拆箱的原理,由基本类型转换成包装类称为装箱,反之称为拆箱。byte, char, short, int, long, float, double, boolean分别与Byte, Character, Short, Integer, Long, Float, Double, Boolean对应。
  2. 子类能直接转换为父类或接口类型: 子类就是父类。
    例如,牛和狮子都是动物,所以在生成牛和狮子的实例的时候用动物类来指向,所以,子类就是父类;但是,反过来就不行,比如“动物是牛”这句话就说不通。所以在继承体系中,子类会比父类更加具体,代指的实例也更加明确。这种现象在Java中叫做“Is-A”的关系。
  3. 父类转换为子类要强制类型转换;且在运行时若实际不是对应的对象,会抛出ClassCastException运行时异常。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,118评论 0 4
  • “江南好,风景旧曾谙,日出江花红胜火,春来江水绿如蓝。能不忆江南?”最初对江南的印象,就来源于白居易的这首《...
    遥望江南阅读 594评论 1 0
  • 我的妈妈她真的很好。 我的妈妈名字叫:杨红文。她有一双水汪汪的眼睛,高高的鼻梁上带着一副眼镜,红红的嘴唇。 ...
    孟国强1阅读 129评论 0 1
  • 你们都跟简书,那我也跟,先来个三年的说。我的是承诺,但不是绝对保证,反正我的会员已经预定到2020年了。而且就投资...
    或潜阅读 367评论 1 15
  • 我有个老顾客,M姐,她是个妈咪。 她说,她带的小姐永远都是最受欢迎的那一拨,很多场子都争着抢着想邀请她过去助阵,也...
    清风明月7773阅读 278评论 0 1