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?
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?
int b= (int)c[1]; 这样就可以。
int b = Integer.parseInt(c[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));
}
要强制转换
由于原来是char类型