是不是这里有变量的左值和右值得概念 例如 public class Test { public static void main(String[] arg) { short a = 2; a = 300000; //错误 } } 用的是a的左值 a还是short类型的 所以也报错了 c = a + b 用的是a的右值所以就用了用了它的值类型 2的类型 int ?? 但是这样的话 变量的类型和它的值类型就会不一致了呀 不太合理啊
什么是变量的左值,右值啊?不明白 short a = 2; //编译器会自动判断出a是short类型,且将2变成一个short并不存在问题,所以编译通过a = 300000; a = 3L; //编译器不能将右边的值直接转化成short,所以编译不通过 a = b + c; //JVM对short的相加是先变成int来完成的,所以b+c的结果是一个int类型,所以将它赋给a会出错
a=2; 这个时候并没有把个int型的值赋给short变量
只有在进行a+b运算的时候,才隐式地把a和b转化成int型的
例如
public class Test
{
public static void main(String[] arg)
{
short a = 2;
a = 300000; //错误
}
}
用的是a的左值 a还是short类型的 所以也报错了
c = a + b 用的是a的右值所以就用了用了它的值类型 2的类型 int ??
但是这样的话 变量的类型和它的值类型就会不一致了呀 不太合理啊
short a = 2;
//编译器会自动判断出a是short类型,且将2变成一个short并不存在问题,所以编译通过a = 300000;
a = 3L;
//编译器不能将右边的值直接转化成short,所以编译不通过
a = b + c;
//JVM对short的相加是先变成int来完成的,所以b+c的结果是一个int类型,所以将它赋给a会出错