java - 数组索引越界 - 类名称约定

标签 java arrays exception terminal

我正在使用 Mac 中的终端尝试使用 javac 输出一些字符串。然而,有一些符号似乎不起作用,例如美元符号和星号:

public class BirdDisplay{
    public static void main(String... args){
    System.out.println(args[1]);
    }
}

然后:

javac BirdDisplay.java
java BirdDisplay sparrow $someBird

我收到此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at BirdDisplay.main(BirdDisplay.java:3)

据我所知 $ 在类名中被接受并且是有效的标识符,导致此异常的原因是什么?

最佳答案

您正在从 shell 中使用它,其中 $ 正在执行环境/shell 变量替换。这与 Java 无关 - 这是 shell 调用进程的方式。

只需将其放在单引号中即可:

java BirdDisplay sparrow '$someBird'

请注意,使用 $ 作为有效的 Java 标识符是无关紧要的,因为您没有在任何源代码中使用它 - 值 $someBird 纯粹用作程序中的数据(或者一旦您阻止 shell 执行变量替换)。

关于java - 数组索引越界 - 类名称约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49824259/

相关文章:

java - Hibernate:线程 "main"org.hibernate.exception.SQLGrammarException 中出现异常: 'DTYPE' 中的未知列 'field list'

java - Google Collections 相当于 Apache Commons Collections ArrayUtils.toObject 和 ArrayUtils.toPrimitive

java - 从数组列表中检索多个值

php - 使用序列化数组进行查询,搜索字段中的值

javascript - 如果 html 表中的字符串 == 带有 Javascript 的内容则显示按钮

javascript - 如何通过 JavaScript 在 Internet Explorer 11 中仅收集数组中的唯一值?

java - 获取进程CPU使用率

Java EE、Eclipse、Tomcat Simple Servlet 启动错误

c# - 需要覆盖来自 asmx web 服务的 Http 响应代码

c# - 关闭时服务器异常(阻塞操作中断)