Java 赋值语句 类型转换

来源:互联网 发布:无产阶级 知乎 编辑:程序博客网 时间:2024/05/18 00:07

赋值语句的语法形式是:
<变量> = <表达式>;
  赋值语句中,等号(称作赋值号)是赋值语句的标识,<表达式>可以是一个常量,或另一个已赋过值的变量,或是由运算符组成的一个表达式。是把一个常量或另一个已赋过值的变量中的数值赋给另一个变量。当一个变量被用赋值语句重新赋值时,该变量原先的赋值就被冲掉了,即该变量原先的赋值就没有了。

  Java语言是一种强类型语言,所谓强类型语言是指数据类型的匹配要求十分严格。如果一个表达式的数据类型不一致等问题出现,则编译器给出类型不一致的出错信息。关于赋值语句的类型匹配有以下两种情况:

  • 类型相同。
    类型相同是指赋值号左端的数据类型和赋值号右端的数据类型完全一致。此种情况可以正确赋值。例如:
int smallValue =100; //类型相同long bigValue = 100L; //类型相同
  • 类型兼容。
    类型兼容是指赋值号左端的数据类型比赋值号右端的数据类型长。此时系统会自动将赋值号右端的数据类型转化成和赋值号左端一样的数据类型。这里所说的数据类型长,是指数据类型的位数长,如long类型就比int类型的位数长。例如:
long bigval = 100; //100是int类型,将自动转化为100Ldouble x = 12.345F; //12.345F是float类型,将自动转化为12.345
  • 类型不兼容。
    若赋值号右端的数据类型比赋值号左端的数据类型长则类型不兼容。此时系统在编译时会产生“可能存在精度损失”的编译错误。例如:
int smallValuel = 100L; // 100L 是long类型,不兼容float x = 12.345; //12.345是double类型,不兼容

例子:

Double D = 3; // errorDouble D1 = 3.0f; // errorDouble D2 = 3.0; // okdouble d = 3; // okdouble d1 = 3.0f; // okdouble d2 = 5.3e2; // okfloat f = 11.1; // errorfloat f1 = 11.1f; // okfloat f2 = 11; // okint i = 0.0; // errorint i1 = 0.0f; // errorint i2 = 0; // ok

当出现类型不兼容错误时,有两种解决方法:
1. 重新定义赋值号左端变量的数据类型,使之变成满足要求的较长的数据类型。
2. 用强制类型转换方法把赋值号右端的数据类型转换成和赋值号左端相同的数据类型。但要注意,强制类型转换可能丢失数据或损失数据的精度。
3. 强制类型转换的格式为:
(<目标类型>)<表达式>

int i;long k = 100L;i = (int) k; //把变量k中的数值强制转换成int类型后赋给变量i。

转自:http://blog.csdn.net/qq_33609401/article/details/54586544