s1 += 1的问题 short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型),这个我知道,但是为什么short s1 = 1; s1 += 1;可以正确编译的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 T value;value += x; <==> value = (T)(value+x);int x = 0;x += 1.1;也是OK的 没有理由,就是规定,就记住吧。同一个句子,程序与数学并不等价。比如int x = 1; x = x + 1; 任何一个不会程序的数学家,都会告诉你,x不存在(至少在实数领域)。但是任何一个程序员(C-style的),都会告诉你,就是这样子,没什么可解释的。 T value;value += x; <==> value = (T)(value+x);因为这个原因吧什么 i++ 也是同样的道理 java解惑 里面有会有一个机制 转回去 short类型的 short s1 = 1; s1 = s1 + 1; //这里需要显示的类型转换short s1 = 1; s1 += 1;//包含一个隐藏的转型 lz,有解释的,真有解释如下:s1 = s1 + 1; 这句的等号右边是一个short类型加一个int类型,原本2个不同类型的值是不能相加,但是,java有了自动转换的机制存在,会自动把short类型转换为int,使得s1 + 1变成了int类型加int类型,得到的结果就是一个int类型,再把这个int类型赋给左边但是问题出来了,左边是short类型,int类型是不能赋给short类型的,而且自动转换机制是不能自动把int类型转换为short类型的,于是就报错了s1 = (Short)s1 + 1; 这里就把s1 + 1得到的int类型强制转换为short类型,这样就可以赋给等号左边的short类型了,不会报错了建议lz去看一下java的自动转换机制 这个是java包装器自动完成的,在java-1.5好像以后就可以完全自己转换,只要的可转换的 ResourceBundle问题 Jbuilder项目转到myelipse有类不识别 通过XSD自动生成JAVA类或者JAR,然后用这个生成 XML 文件 itext打印汉字的问题,谢谢 求救,这个计算器程序哪出了问题? Aspectj真正的用处在哪? 请问写java程序要什么编程环境好? flc +java? Tomcat+Oracle问题 类的继承性问题 java设计中的mvc模式详细解答 eclipse版本问题
int x = 0;
x += 1.1;也是OK的
同一个句子,程序与数学并不等价。
比如int x = 1; x = x + 1; 任何一个不会程序的数学家,都会告诉你,x不存在(至少在实数领域)。但是任何一个程序员(C-style的),都会告诉你,就是这样子,没什么可解释的。
会有一个机制 转回去 short类型的
short s1 = 1; s1 = s1 + 1; //这里需要显示的类型转换
short s1 = 1; s1 += 1;//包含一个隐藏的转型
解释如下:
s1 = s1 + 1;
这句的等号右边是一个short类型加一个int类型,
原本2个不同类型的值是不能相加,但是,java有了自动转换的机制存在,会自动把short类型转换为int,
使得s1 + 1变成了int类型加int类型,得到的结果就是一个int类型,再把这个int类型赋给左边
但是问题出来了,左边是short类型,int类型是不能赋给short类型的,而且自动转换机制是不能自动把int类型转换为short类型的,于是就报错了
s1 = (Short)s1 + 1; 这里就把s1 + 1得到的int类型强制转换为short类型,这样就可以赋给等号左边的short类型了,不会报错了建议lz去看一下java的自动转换机制