Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中,向2D短数组元素添加一个short会导致错误_Java - Fatal编程技术网

在JAVA中,向2D短数组元素添加一个short会导致错误

在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];

下面的代码给出了以下错误:

错误: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]; 
        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 ; 
    }
}
这可能是什么原因

try
arr[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) ; 
    }
}