count[str.charAt(i)]++ 实际存储的是什么? [复制]
对于那些有相同相关问题的人来说,这里就是答案
第一
static final int chars=256;
static char count[]=new char[chars];
当我们把这段代码改成图片后就变成了这样
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
第二
count[str.charAt(i)]++;
假设你有 str = “abc”
那么 str.charAt(0) 将是“a”
那么 count['a'] 表示 count[97] 为什么?因为java自动将‘a’转换成ASCII码数字97;
然后 count[97] 的值是 0,当你像这样 count[97]++ 递增它时,它会变成 1
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
如果你像 count[97]++ 一样再次增加它,那么它会变成 2。
0 1 2 3 4 5 6 7 8 9 .. .. .. .. .. .. .. .. .. 97 .. 255
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0
这就是背后的全部秘密。我不描述其余的,因为我认为你的问题得到了回答。
如果您想测试我所说的是否正确,请使用此简单代码进行检查
public static void main(String[] argv)
{
int[] count = new int[255];
count['a']++;
System.out.println(count['a']);
int counter=0;
for(int i=0;i<count.length;i++) {
System.out.println(counter++ + " " + count[i]);
}
}