我正在使用 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/