public class Main6 { public static void main(String[] args) { System.out.println((int)(char)(byte)-1); //输出整数-1 System.out.println(-1); //将int进行窄化原生类型转换(narrowing primitive conversion),直接去除高位,因为byte也是有符号的,所以还是输出-1 System.out.println((byte)-1); //将byte转化为char执行的是拓宽并窄化原生类型转化(widening and narrowing primitive conversion):将byte转化为int,再转化为char,char是无符号类型 System.out.println((char)(byte)-1); //将char拓宽为int,因为char是无符号的,所以进行0扩展,即高位补0 System.out.println((int)(char)(byte)-1); //如果想对char进行有符号扩展,可以先转化为short(是有符号类型),再扩展 System.out.println((int)(short)(char)(byte)-1); //如果将byte转为char想进行无符号扩展,则可以采用以下写法 byte b = -1; char c = (char)(b & 0xff); System.out.println((int)c); c = (char)((char)b & 0xff); System.out.println((int)c); }}