在JAVA中,向2D短数组元素添加一个short会导致错误
下面的代码给出了以下错误: 错误:C:\Users\Laptop\algs4\hello\Main.java:8:可能丢失精度 找到:int 必填项:短在JAVA中,向2D短数组元素添加一个short会导致错误,java,Java,下面的代码给出了以下错误: 错误:C:\Users\Laptop\algs4\hello\Main.java:8:可能丢失精度 找到:int 必填项:短 import java.util.* ; import java.math.* ; import java.io.* ; public class Main{ public static void main(String[] args){ short[][] arr = new short[1][2];
import java.util.* ;
import java.math.* ;
import java.io.* ;
public class Main{
public static void main(String[] args){
short[][] arr = new short[1][2];
short val = 9 ;
arr[0][0] = arr[0][0] + val ;
}
}
但是下面给出的没有错误
import java.util.* ;
import java.math.* ;
import java.io.* ;
public class Main{
public static void main(String[] args){
short[][] arr = new short[1][2];
short val = 9 ;
arr[0][0] += val ;
}
}
这可能是什么原因 tryarr[0][0]=(短)(arr[0][0]+val)代码>
与
编译器按以下方式为您进行转换:
arr[0][0] = arr[0][0] + val ;
这两个参数首先提升为int
,执行加法,结果隐式缩小为short
。这可能会导致精度损失,从而导致错误
第二个版本:
arr[0][0] += val ;
相当于
arr[0][0] = (short)((int)arr[0][0] + (int)val);
换句话说,它的行为就像存在显式强制转换一样,因此没有错误
通过添加显式强制转换,可以在第一个版本中实现相同的效果:
arr[0][0] = (short)(arr[0][0] + val);
此代码未给出任何错误。:)
arr[0][0] = (short)(arr[0][0] + val);
import java.util.* ;
import java.math.* ;
import java.io.* ;
public class timous{
public static void main(String[] args){
short[][] arr = new short[1][2];
short val = 9 ;
arr[0][0] = (short)(arr[0][0] + val) ;
}
}