Java入门:java中不同类型的转换和提升

发表于:2008-05-09来源:作者:点击数: 标签:javaJAVAJava类型入门
关键字: byte转换为int时出现的问题是始料不及的,byte的范围0??255,但是转换为int的时候却出现了负值,这种突然的变化惹了很大的麻烦。当时心情急躁,匆匆忙忙试了几种方法通过后就继续项目了,但真正的原因在什么地方一直没能解决,成了心
关键字:

byte转换为int时出现的问题是始料不及的,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转换为其他整数类型的方法是对其数字的二位补码方式进行带符号扩展,char类型转换为int类型的方法是进行0扩展。提示:无论精度是否损失,扩宽转换都不能引发运行时错误。

原文转自:http://www.ltesting.net