早教吧 育儿知识 作业答案 考试题库 百科 知识分享

关于+=复合运算//在C#与java中,byteb=100;b=b+100;编译通不过(类型转换造成),而byteb=100;b+=100;能编译通过,能否给出详细解释。还请高手赐教。

题目详情
关于+=复合运算// 在C#与java中, byte b=100; b=b+100; 编译通不过(类型转换造成),而 byte b=100; b+=100; 能编译通过, 能否给出详细解释。 还请高手赐教。
▼优质解答
答案和解析
这类题目,反编译一下就可以找到答案了 对下面的类进行反编译 public class test{ public static void main(String args[]){ byte a = 30; a +=40; int b = 20; b = b+41; } } 得到 C:\java> javap -c test Compiled from "test.java" public class test extends java.lang.Object{ public test(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object." ":()V 4: return public static void main(java.lang.String[]); Code: 0: bipush 30 2: istore_1 3: iload_1 4: bipush 40 6: iadd 7: i2b 8: istore_1 9: bipush 20 11: istore_2 12: iload_2 13: bipush 41 15: iadd 16: istore_2 17: return } 由此可得出结论: b=b+100; 中,由于b+100后值已提升为int型,再赋给byte型当然不行 b+=100; 中,由反编译结果可以看出b+=100相当于b=(byte)(b+100) C#解释应该类似。