如:下面这些
int a = 64317
int b = 65124
int c = 61506
int d = 1097
System.out.prinln((char)a);System.out.prinln((char)b);.... 
输出乱码,请问怎么就不乱码了

解决方案 »

  1.   

    印象中整形的字节长度要比char的多,所以就导致了在强制类型转换的时候出现了错误
    就好像是一袋饼干你现在直接想压成压缩饼干是不可能的。只能在出厂的时候就以压缩饼干的工序去制造一样
    不知道这样的比喻何不合理,但是可以确定的是,字节数少的类型转成字节数长的是没有问题的。相反长的转成短的会有问题
    在这里你可以用toString的方法。呵呵
      

  2.   

    char的范围是 65535 - 0之间  这是unicode的编码范围
    所以楼主的int值还没有超出此范围,但是用char转换是 直接转成相对应的char对应的编码。
    下面的代码例子里:87对应 字符:“W”
    所以要取的话,用String转换 。
    char 的编码范围见:http://topic.csdn.net/u/20081021/11/ec27e193-2c49-45a8-8b6a-d7a491896c8e.html
    public static void charTest2(){
    int a = 64317;
    int b = 65124;
    int c = 87;
    System.out.println((char)c);//用char转换 直接转成相对应的char对应的编码 ,此处 87对应 字符:“W”
    System.out.println(String.valueOf(a));
    System.out.println(String.valueOf(b));
    }运行结果:W
    64317
    65124
      

  3.   

    先把基本的String类弄明白,再看类型的转换吧