数据类型-转换-隐式转换和显式转换
数据类型转换分为隐式转换和显式转换,根据不同的转换对象,来确定是那种类型的转换。
隐式转换:就是系统默认的、不需要加以声明就可以进⾏转换。
⾸先来说在程序语⾔中默认的类型,⼀般整数是int类型,浮点数(3.14),默认就是double类型。但是还有其他类型的,例如整数类型的long,浮点数的float。当相同类型之间相遇的时候,就会出现隐式转换的问题。
那么隐式转换的规则就是根据数据类型从⼩到⼤的转换:
byte→short→int→long(整数类型)
例如:
long num1 = 100;这个num1根据类型命名为long整数型,但是右侧的100在程序语⾔中默认为是int整数类型。然⽽根据隐式转换规则,int类型可以⾃动的转换为long整数类型。故⽽在程序运⾏的时候不会出现错误。
float→double(浮点数)
例如:
double num1 = 2.5F(F在这⾥代表是float类型的意思);这个同上复述。num1是double类型,但是2.5F是float类型,因为符合隐式转换的规则,所以2.5F会⾃动的转换为双精度类型,2.50.
显⽰转换:当系统默认转换不能转换的时候,⽽我们⼜需要把某⼀类型改为另⼀个类型,这个过程我们称之为显⽰转换也叫做强制转换。
记住我例如:
double类型转换成int类型,如int num1 = 3.14(3.14默认为double类型)int是整数型,是不带⼩数点的,然⽽在double类型中是带⼩数点之后两位的,如果要想让这⾏代码成⽴,则需要强制转换,在不同的程序语⾔中有不同的⽅法,这⾥是⽤java语⾔来说明的,int num1 =(int)3.14;只要如此写,在程序中这⾏代码就可以运⾏。
精度丢失:
然⽽在这样情况下,会出现⼀个⽐较常见的问题,也是经常会遇见的错误,精度丢失,就是3.14double类型的转换到int类型之后,就只剩下了⼀个3,变为整数型。这不是四舍五⼊的套路,你就是3.99,也是会成为int类型的3,因为是精度丢失,就是没有了,所以不要想其它的。这也是强制转换
的⼀个后续问题,当然不单单是这两个类型可以强制转换,⼀些常见的类型都是可以的。
当隐式转换(⾃动转换)不能解决问题的时候,可以尝试使⽤显⽰转换(强制转换),但是需要注意的是,精度丢失的问题是否影响结果,如果影响,请注意哦。