char a='h';
char b='c';
a=(char)-b;
System.out.println((int)a);这是什么意思?

解决方案 »

  1.   

    char和int内部都是个数字类型char可以变成int
    int可以变成char你想问什么?
      

  2.   

    它是将char转换成int类型,输出的是'c'所对应的int类型值负值
      

  3.   


    char a='h';
    char b='c';
    System.out.println(Integer.toBinaryString(b));//1100011,char其实就是2个字节的,无符号的int,也就是说char的最高位是1的话,并不代表负数。
    a=(char)-b;//b是char类型,-b会默认转换成int
    System.out.println(Integer.toBinaryString(-b));//11111111111111111111111110011101,按位取反,然后加1,int有32位,最高位1代表是负数。
    //赋值给a,a是char,截取后面的16位
    System.out.println(Integer.toBinaryString(a));//1111111110011101//最高位是1,但是并不是负数
    System.out.println((int)a);//65437
      

  4.   


    在unicode编码中,52个大小写字母对应一个特定的数字值,所以char类型可以进行加减之类的运算。。
      

  5.   


    同意(若鱼)的说法,这块主要看a=(char)-b;计算机里负数是用补码表示的。
      

  6.   

    再补充一句,char是无符号型的,-b会补自动转换成int型,所以用char将其强转一下(此时就会用补码表示)。