黑马程序员技术交流社区

标题: 数据类型自动转换的原理是什么? [打印本页]

作者: 伍淑江    时间: 2013-3-12 21:09
标题: 数据类型自动转换的原理是什么?
本帖最后由 伍淑江 于 2013-3-12 23:09 编辑

byte,short,char,--int --long--float--double
作者: 郑昌奋    时间: 2013-3-12 21:35
数据类型自动转换时就是低类型向高类型转换啊。
作者: 刘国涛    时间: 2013-3-12 21:40
数据类型自动提升:
所有的byte型、short型和char型值将被提升到int型
如果一个操作数是long型,计算结果就是long型。
如果一个操作数是float型,计算结果就是float型。
如果一个操作数是double型,计算结果就是double型。
作者: 杨博    时间: 2013-3-12 21:41
数据类型间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

JAVA数据类型自动转换时,遵循从小到大的原则:

具体地讲,当一个较“小”数据与一个较“大”的数据一起运算时,系统将自动将“小”数据转换成“大”数据,再进行运算。而在方法调用时,实际参数较“小”,而被调用的方法的形式参数数据又较“大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将“小”数据转换成“大”数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最“接近”的“大”数据并进行调用。

这些类型由“小”到“大”分别为 (byte,short,char)--int--long--float—double。这里我们所说的“大”与“小”,并不是指占用字节的多少,而是指表示值的范围的大小。自动转换其实也避免了数据丢失
JAVA强制数据类型转换:
将“大”数据转换为“小”数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式:

int n=(int)3.14159/2;   可以想象,这种转换肯定可能会导致溢出或精度的下降。有一定的危险性
总的来说,数据类型的转换,是根据我们的需求来的,选择强制转换的时候,一定要注意会不会对我的程序带来风险
希望对你有帮助




作者: Benwolf0818    时间: 2013-3-12 21:46
转换的规则就是小数据类型变大数据类型,如果再深究的话就涉及到编译原理了
作者: 我自信我很牛    时间: 2013-3-12 22:32
楼上各位说的都有道理,但是不方便记忆,其实只要把握以下两点,所有问题迎刃而解
1.做运算的俩个如果不同型,低的自动转高,
2.byte,short,char这三个非常特殊,他们运算前先自己转int,然后运算
  从高到低顺序如下 double,float,long,int,short(char),byte;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2