short x = 7 + 7; x = x + 1;//报错short x = 7 + 7; //无错x = x + 1; //报错为什么?如果第二句报错原因是把1这个字面量当做int,short + int = int而报错的话我可以理解,那么第一句2个int字面量相加为何还能放

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 08:04:04
short x = 7 + 7; x = x + 1;//报错short x = 7 + 7; //无错x = x + 1; //报错为什么?如果第二句报错原因是把1这个字面量当做int,short + int = int而报错的话我可以理解,那么第一句2个int字面量相加为何还能放

short x = 7 + 7; x = x + 1;//报错short x = 7 + 7; //无错x = x + 1; //报错为什么?如果第二句报错原因是把1这个字面量当做int,short + int = int而报错的话我可以理解,那么第一句2个int字面量相加为何还能放
short x = 7 + 7; x = x + 1;//报错
short x = 7 + 7; //无错
x = x + 1; //报错
为什么?如果第二句报错原因是把1这个字面量当做int,short + int = int而报错的话我可以理解,那么第一句2个int字面量相加为何还能放在short里?
short a = (short)a + (short)1; //报错
short a = (short)1 + (short)1; //无错
求专业人士啊

short x = 7 + 7; x = x + 1;//报错short x = 7 + 7; //无错x = x + 1; //报错为什么?如果第二句报错原因是把1这个字面量当做int,short + int = int而报错的话我可以理解,那么第一句2个int字面量相加为何还能放
同意楼上,补充如下:自动强制转换前提是等号右边的所有类型相同,第一句符合,第二句不符合.你想想,如果你是JVM,程序传递给你一个short+int你认为应该转换成int呢还是short呢?JVM里面没有定义应该转换成什么,而是认为这是错误,java不允许你这样做.
注:
1、我没有看过源码,但我是这样理解的
2、以上两句的写法不是良好的编程习惯,在使用到不是经常使用的基本数据类型的时候一定要注明标注类型,以方便类型转换.记住,保持良好的编程习惯