各位大虾,高手我是个JAVA 初学者有个问题不明白:public class StaticTest{
public static void main(String []args){
short i=1;
i=(short)(i+1);//正确
i=i+1;//错误
i+=1;//正确,
System.out.println(i);
}
}错误如下:
E:\java练习\StaticTest.java:6: possible loss of precision
found : int
required: short
i=i+1;//错误
^
1 errorProcess completed.
为什么呢?
i=i+1; 和 i+=1; 有什么不同? 谢谢大家!!
public static void main(String []args){
short i=1;
i=(short)(i+1);//正确
i=i+1;//错误
i+=1;//正确,
System.out.println(i);
}
}错误如下:
E:\java练习\StaticTest.java:6: possible loss of precision
found : int
required: short
i=i+1;//错误
^
1 errorProcess completed.
为什么呢?
i=i+1; 和 i+=1; 有什么不同? 谢谢大家!!
解决方案 »
- 关于Properties的读取问题
- 在JCreate下新建了项目也可以调试,怎样才能在单步时监视变量的值。
- 急急急!关于java在Data(数据类)类里存储数据的方法
- 请问谁用过snmp4j,能给个例子么,谢谢!!
- 跪地裸求以下Java试题答案,嗷嗷急!!!
- 我是一个初学者,这学期学JSP的,不过看书,有点抽象,又没有实例,大家能不能进来帮帮忙啊?
- DecimalFormat有精度限制么?
- 请问JDK装好之后,有一个 JAVA WEB START是干什么用的?
- 在Java中如何判断小鼠鼠被按下的是左键还是右键
- java 语法问题
- 如何实现jsp中对文件中固定行的修改或删除
- 我想问个问题——关于显示圆形问题?怎么样 才可以显示的更好(比如你显示的图片一般都是方的,那么多余的显示出来,不就不好看拉吗?)
i+=1 就不会.
i+=1 就不会呢
i=i+1;和i+=1;在执行的时候有什么区别呢?
等于号的右边是一个short型数据和int型数据进行运算,那么它会都按int型来计算,得到的结果是int型,然后int型数据赋给short型变量,出现精度损失,所以编译报错。
i=(short)(i+1); 在赋值前强制类型转换了,所以不报错。
i+=1; 虽然等同与 i = i + 1 ;但是,在编译的时候可能是不同的,具体我也说不清楚,猜测可能是这种情况都按照i的数据类型来计算,而不是按照1的数据类型(int)来计算了。
编译器如何工作要是能知道的话就好了.
等于号的右边是一个short型数据和int型数据进行运算,那么它会都按int型来计算,得到的结果是int型,然后int型数据赋给short型变量,出现精度损失,所以编译报错。
i=(short)(i+1); 在赋值前强制类型转换了,所以不报错。
i+=1; 虽然等同与 i = i + 1 ;但是,在编译的时候可能是不同的,具体我也说不清楚,猜测可能是这种情况都按照i的数据类型来计算,而不是按照1的数据类型(int)来计算了。=============================================
i=i+1和i+=1是不同的.
i=i+1 你上面已经解释了.但别忘记了,这个表达式是用了两个操作符"=" "+"
而i+=1是用了一个操作符"+=" 它的意思就是在short型的i的基础上增加1;short是整形的一种,当然可以加1了.如同int可以加1一样.c++提供了操作符重载,java不提供这些功能,如同它不提供指针一样.但java的内定了类似的操作,但是内部隐藏了.如string+string等