【问题标题】:Is it possible to have array index as char? [duplicate]是否可以将数组索引作为char? [复制]
【发布时间】:2019-04-06 06:37:20
【问题描述】:

count[str1.charAt(i)]

charAt() 返回 char 类型。 char类型如何作为数组中的索引

【问题讨论】:

  • 为什么需要它?
  • 我在 geeksforgeeks 上看到了这个,我想了解这怎么可能
  • Char 可以转换为 int。
  • A char 是一个整数类型。是的,这是合法的。
  • charAt() 返回 ascii 值?

标签: java arrays char


【解决方案1】:

是的!有可能的。 这是java的基本规则。 我们可以将 char 值分配给 int 类型的变量。现在 int 类型变量不会存储字符,而是存储它的 ASCII 值。看例子

class Test{
    public static void main(String[] args){
        int num='a';
        System.out.println(num);//97
    }
}

您可以看到我已将“a”分配给 int 类型的变量。

在同样的情况下,每当我们将 char 作为索引值传递时,总是会传递 ASCII 值。我们知道,97是a的ASCII值。

所以如果我们通过传递 'a' 来访问一个数组,内部会调用数组的第 97 个索引。

int num='a';
System.out.println(args[num]);//AIOOBE 

这里我们得到了类似的异常

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 97 在 Test.main(Test.java:4)

程序编译正常,但在运行时出现异常,因为 args 现在是空数组。

【讨论】:

  • A char 值不是 ASCII 值,而是“A char 值 [...] 表示基本多语言平面 (BMP) 代码点,包括代理项UTF-16 编码的代码点或代码单元。" -- docs.oracle.com/javase/9/docs/api/java/lang/Character.html
  • @ErwinBolwidt 谢谢你的建议。我并不是说 char 值是 ASCII 值,但我提到每个 char 值都可以用 ASCII 值表示,或者每个字符都有自己的 ASCII 码。是的,但很抱歉,我不应该使用 ASCII 这个词,因为与 C 或 C++ 不同,Java 支持 UNICODE 字符集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
相关资源
最近更新 更多