public class test {
public static void main(String[] args) {
char[]c={'0','6'};
int a=c[0];
int b=c[1];
System.out.println(a);
System.out.println(b);
}
}
a和b的结果怎么分别是48和54啊?为什么不是0和6?

解决方案 »

  1.   

    因为你没有强转int a= (int)c[0];
    int b= (int)c[1]; 这样就可以。
      

  2.   

    不好意思,看错了。。自动强转了。。int a = Integer.parseInt(c[0]+"");
    int b = Integer.parseInt(c[1]+"");
      

  3.   

    字符0和6的ASCII码就是48和54没错。。
      

  4.   

    建议不要使用char[]
    数组里是非整的时候,转换会挂掉。
      

  5.   

    首先,你必须明白所有的信息都是以0,1的形式在计算机中存储的
    而在java中char是以16位Byte存储的,所以字符'0','6'对应的二进制形式为
    0000000000110000,0000000000110110
    而你定义的a,b都是int型的,他们对应的内存中的内容即为字符'0','6'所对应
    的内容。而System.out.println()这个函数只是根据你传入的参数的类型,将
    内存的内容以不同形式打到控制台,展示给你看。 public static void main(String[] args) {
    char[] tests = {'0','6'};
    int a = tests[0];
    int b = tests[1];
    //以数字的形式打印出内存中对应的二进制内容
    System.out.println(a);
    System.out.println(b);
    //以字符的形式打印出内存中对应的二进制内容
    System.out.println(tests[0]);
    System.out.println(tests[1]);
    //将48和54的二进制形式打出来
    System.out.println(Integer.toBinaryString(48));
    System.out.println(Integer.toBinaryString(54));
    }
      

  6.   

    输出的ASCII没错
    要强制转换
    由于原来是char类型
      

  7.   

    6楼说的很明白,如果你对这种类型转换不是很清晰的话,最好就不用char类型的变量了.用char ch = tests[i]就不需要转换了