当给变量赋值时,一般都是把常量值赋值给相同数据类型的变量。如:
上面三条语句中,5为整型常量,赋值给整型变量;‘b’为字符型常量,赋值给字符型变量;3.14f为单精度浮点数常量,赋值给单精度浮点数的变量。那么,能不能把常量值赋值给具有不相同数据类型的变量呢?这就涉及数据类型之间的转换。
数据类型之间的转换分为两种情况:自动类型转换和强制类型转换。
1.自动类型转换
自动类型转换,指的是把常量值(或者具有值的变量)赋值给不同数据类型变量时,常量值(或者变量的值)会自动地转换成与变量相同数据类型的常量值。要实现自动转换,必须同时满足两个条件:第一,两种数据类型彼此兼容;第二,目标类型的取值范围大于源类型的取值范围。Java中基本数据类型的转换顺序为byte、short、char→int→long→float→double。例如,byte类型的数据可以赋值short、int、long类型的变量,反之不行;short、char类型的数据也可以赋值给int、long类型的变量,反之不行;int类型的数据可以赋值给long类型的变量,反之不行;byte、short、int、long类型的数据可以赋值给float类型的变量,反之不行;byte、short、int、long、float类型的数据也可以赋值给double类型的变量,反之不行。按照上述转换规则,boolean类型的变量和byte、short、int、long、float、double不能进行自动转换。
2.强制类型转换(www.xing528.com)
当两种类型彼此不兼容,或者目标类型取值范围小于源类型时,自动类型转换无法进行,这就需要进行强制类型转化。一般格式为:
目标数据类型变量=(目标类型)值
其中()为强制类型转换符,作用是将值强制转换为目标数据类型的值。如:
上述语句中,将int类型的num 变量赋值给byte类型的变量时,编译器会报错,因为num不能自动转换为byte类型的值。此时,就需要进行强制类型转换,语句变为:
在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,此时很容易造成数据精度的丢失。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。