我正在做一些 Java 练习,偶然发现了这段我不太理解的代码。
public static boolean permutation(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] letters = new int[128];
char[] s_array = s.toCharArray();
for (char c : s_array) {
letters[c]++;
}
// omitted other code
}
当我打印出字母
的内容时,我看到一个整数数组。根据我传递给函数的字符串,数组返回 0
和 1
的变体。
我认为Array
类可能正在将char
转换为int
。我添加了一条 print 语句来提供帮助,但我看到 d
的值为 13,但我看到数组中的第 13 个元素仍然为 0
。该代码如下所示:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String word1 = "dog";
String word2 = "god";
permutation(word1, word2);
}
public static boolean permutation(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] letters = new int[128];
char[] s_array = s.toCharArray();
for (char c : s_array) {
System.out.println(Character.getNumericValue(c));
letters[c]++;
}
System.out.println(Arrays.toString(letters));
return true;
}
}
输出:
13
24
16
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我的问题是 Array[char]
语法翻译成什么?
最佳答案
Character.getNumericValue
返回“解释”为数字的字符。例如,字符 '5'
变为 5
。这也适用于表示罗马数字的 unicode 字符,或十六进制数字。 (因此 'd'
变为 '13'
。)
但是,当您在需要整数值的上下文中使用 char
时,系统会使用其编码对其进行解释。例如,'a'
的代码为 97,因此 array['a']
访问 array
的第 98 个元素。
这就是您的两个输出差异的原因。 ;)
关于java - 使用 Char 访问数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285078/