Int >char
Charnumber = 5 ;
Char是符号类型 , 5是整形, int> char为什么 5没有被强制转换,是因为 char的取值范围是0~255 , 5在这个取值范围中,所以系统不会报错,会在最底层默默的偷偷地进行一次转换.
Int > byte
Byte num = 5 ; 为什么不报错,因为 5属于 byte的取值范围(超出取值范围就会报错) ,编译器会默认成立,也是在底层默默的偷偷地进行一次转换.
设 int的最大值为 : Max ;
方法一:
Int number = Max + 1 ; 会报错 ; 因为 Max + 1是一个整数 ,当编译时编译器会验证这个数字是不是在取值范围内,不在取值范围内就会报错.
方法二:
Intnumber = Max ;
Number = number + 1 ;这样就不会报错 ,因为 int number = Max赋值时,没有超过取值范围,编译器验证时没有发现错误,所以不会报错,当执行 number = number+ 1时 ,不处于编译阶段了,处于运行阶段,运行阶段不会检验错误,因为 number = number+ 1 是一个表达式,没有任何语法错误,有错误的话,编译阶段就会出现报错了 .