轻松掌握java中的数据类型转换

    最近一直在看马士兵老师讲的J2SE视频,感觉怎一个“爽”字了得。每一集都有振聋发聩的效果,尤其是内存分析的那部分。但是兴奋过后,不做总结还是白搭。数据类型转换这部分的知识点不难,但是很杂,网上的资料到处都是规则。看得脑袋都大了一圈。下面是我根据视频和资料做得总结,个人感觉比较简单。


   我把数据类型转换分为两类:一类是基本数据类型之间的转换;二是基本数据类型和引用类型之间的转换。


   在java中基本的数据类型有4类8种:整数型(byte,short,int,long);浮点型(float,double);布尔型(boolean);字符型(char)。只有这8种。这里跟我们学得其他语言有些不同:String类型不是基本数据类型,而是引用类型。转换规则概括为两条:

  一、boolean  类型的变量不可以转换为其他的数据类型

  二、整形、字符型和浮点型的数据在混合运算中互相转换。具体怎么转换又分为自动转换和强制转换。

      自动转换:容量从小到大可以自动转换,就像一杯水的量,当然可以用桶来装一样。容量大小如下:byte,short,char,--->int --->long--->float --->double.这里需要注意一点:这里的容量大小不是按存储空间算的。long占用8个字节,而float占4个字节。但是float却比long的容量大。byte,short,char之间不会相互转换,他们在计算时首先转换为int类型。

      强制转换:就是实现逆向的过程。大容量向小容量转换,一大桶的水用一个杯子装肯定会有损失。在这里就是精度降低或溢出。这里还需要注意一些点:1、整数的默认类型是int,浮点的默认类型是double;2、运算赋值和常量赋值有一些区别: 常量赋值可以直接将int类型的数据放在byte,short,char中,只要不超出他们的范围;而运算赋值结果为int类型强制转换为byte,short,char,则砍掉多余的字节。3、浮点型的存储方式不同,将double转换为float,不是直接砍掉。4、float转换为long类型直接砍掉小数部分。

梳理后用图表示为:

轻松掌握java中的数据类型转换_第1张图片


  不用去记那些乱七八糟的规则。实践过程发现不合理的地方再进行修改。

  

  基本类型和引用类型的转换

  引用类型能够跟基本类型转换的一般就是涉及:String类和一些基本类型的包装类。我以Integer为例画了一张图:

轻松掌握java中的数据类型转换_第2张图片


       方法inValue()可以将从包装类中的数据转换到基本类型,Integer(int value)或者是Integer(String s)是包装类的构造函数,可以将int类型的数据和String类型的数据包装成Integer类。parseInt(String)是一个静态的方法,作用是将字符串转换为基本数据类型;valueof(...)也是一个静态方法,很多类都有这个方法,最终目的是转换为类。


      这是我总结的类型转换的知识,如果不对地方请指出。



你可能感兴趣的:(轻松掌握java中的数据类型转换)