对于1):
首先,您有一个整数(32位)的二进制表示形式
-1是:
1111 1111 1111 1111 1111 1111 1111 1111
然后,将其转换为一个字节(8位):
1111 1111
如果打印出来,将得到-1(即-1的
byte表示形式),然后将其转换为一个
char(16位无符号字符),这将为您提供:
1111 1111 1111 1111
(因为它会“扩展”符号),如果您尝试将其打印为字符,则会得到“无法识别”的字符(在某些系统中,它将打印问号),然后将其强制转换为
int; 但是,a
char是无符号的,因此该符号有一个展开式(因为没有符号),因此您最终拥有:
0000 0000 0000 0000 1111 1111 1111 1111
十进制等于65535
对于2):
不,
(int)(char)(byte)-1不等同于
(int)(char)-1(请参阅#1的说明)



