short s1='a';
char c1='a';
short s2=c1;第一句可以 为什么第三句不可以馁 我不要强制转化 我只是想知道为什么

解决方案 »

  1.   

    第一个其实是把‘a’转换成Ascii来进行赋值的,所以可以。后面是数据类型不一致当然不行啊。
      

  2.   

    1楼说的很清楚
    就像
    String str = "1";
    int i = 1;
    i = str;
    的道理一样
    short s1='a';
    只是隐式转换了而已
      

  3.   

    我也是菜鸟,我认为是类型不同,不能直接这样赋值,short用于表示有符号整数。short通常为int所占一半。short 存储的是字符和数字对应的KeyDwon值(键盘数字)
    我用的是My Explorer 8.5
    short ss='a';
    System.out.println(ss);
    结果是:98
    short ss='3';
    System.out.println(ss);
    结果是:51
    int ss='3';
    System.out.println(ss);
    结果是:51
    也就是short存储的是数字。
    short 把字符转换成数字类型存储,数字不能转换成字符。