java中不同类型的转换和提升
2009-06-19 22:52
253 查看
java中不同类型的转换和提升
04-12-2 21:35
byte转换为int时出现的问题是me始料不及的,byte的范围0——255,但是转换为int的时候却出现了负值,这种突然的变化惹了很大的麻烦。当时心情急躁,匆匆忙忙试了几种方法通过后就继续项目了,但真正的原因在什么地方一直没能解决,成了心病。后来想起来曾经阅读过java的语言规范说明书,里面有提到这些内容,于是抽时间再回顾一下,希望能搞通这些东西。
在java语言中,转换可以分为七大类:
一、Identity conversions(同类转换)。
看起来没有什么用,但却是整个转换体系的基石。提示:boolean基本类型只能进行同类转换。
二、Widening primitive conversions(基本类型扩宽转换)。
以所占字节数为基准,单字节向多字节转换就是所谓的扩宽,比如1到2、2到4等。int到其他整数类型的转换、float到double是没有失真的,完全一致。但是整数到浮点数的转换虽然也是扩宽,但因为浮点数是用有效数字的方式进行表示的,转换的时候可能出现精度损失(float类型不能支持9位有效数字),如int i=1234567890;float pp = i - (float)i;pp不等于零。带符号int转换为其他整数类型的方法是对其数字的二位补码方式进行带符号扩展【这个me碰到问题的关键byte-》int】,char类型转换为int类型的方法是进行0扩展。提示:无论精度是否损失,扩宽转换都不能引发运行时错误。
三、Narrowing primitive conversions(基本类型缩窄转换)。
带符号的整数缩窄为其他整数类型时只保留低位的值,除了精度损失外还可能出出现符号改变。char缩窄为其他整数类型时也可能出现负值,尽管char是无符号数。
四、Widening reference conversions(引用类型扩宽转换)。
子类到父类。提示:数列也是引用类型。
五、Narrowing reference conversions(引用类型缩窄转换)。
父类到子类。
六、String conversions(字符串转换)。
七、Value set conversions(值域转换)。
专指浮点数。
转换发生在五种情况下,分别是Assignment conversion(赋值转换)、Method invocation conversion(方法激活时的转换)、Casting conversion(造型转换)、String conversion(字符串转换)、Numeric promotion(数值提升)。
发现了一个有用的方法,数值用不同的进制表示可以用Long.toString(l,16);Integer,toString(i,8);可以任意使用。
相关文章推荐
- Java入门:java中不同类型的转换和提升
- Java中不同类型的转换和提升
- java中不同类型的转换和提升
- Java 入门 之 不同类型数据的输出与转换
- Java中不同数字类型之间的转换
- Java中不同转换符实现不同数据类型到字符串的转换
- Java中不同转换符实现不同数据类型到字符串的转换
- Java数据类型转换short s=1;s=s+1;与short s=1;s+=1;为什么不同
- java 中的不同类型的相互转换
- Android中的java基础(二)——装箱与拆箱及不同基本类型的比较(类型转换)
- java——不同数据类型的转换规则
- JAVA中数据的读取与写入,不同类型数据的转换
- Java中不同数值类型间转换与计算精度丢失问题
- Java不同数据类型之间的转换
- Java中不同数值类型间转换与计算精度丢失问题
- 要求根据RandomStr.java:使用类型转换生成六位验证字符串,示例程序每次运 行时,都会生成不同的字符串。
- java中不同类型数据运算时转换问题
- Java不同类型字符转换String/int/Float/////
- 小白Java笔记——基本类型的类型转换和表达式类型的自动提升
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题