在你没有初始化j的情况下,就用j来给k赋值,这里是错误的。
还有就是j=i;有可能造成精度损失

解决方案 »

  1.   

    short和int要求的位数不同需进行强制转换并且j需要初始化
      

  2.   

    很简单,可能导致精度的缺失
    short在java中是2字节,而int是4字节类型,你把一个int型的数据转化到一个short,就有可能出项精度丢失。
    如果你的int型数据值大于short的最大或者最小表示范围就会发生的。
    如你的int为100000,而short的表示范围为(-32768---32767)
      

  3.   

    public class e2
    {
    public static void main(String[] args) 
    {
    int i=10;//4 bytes
    short j; //2 bytes
    int k=j;//应该使用short默认值,要么报错j没有初始化
    j=i;//出错,从小转大可以,否则要使用(int)
    System.out.println(j);
    }
    }
      

  4.   

    public class e2b
    {
    public static void main(String[] args) 
    {
    int i=10;
    short j = 0;    
    int k= j;
    j = (short)i ;
    System.out.println(j);
    }
    } 这样就可以了,谢谢各位了!!!