Java 字符串和数组的混合语法和非常罕见的用法
我发现字符串和数组(语法)混合在一起非常有趣但却非常奇怪。见以下代码: 示例A:Java 字符串和数组的混合语法和非常罕见的用法,java,arrays,string,Java,Arrays,String,我发现字符串和数组(语法)混合在一起非常有趣但却非常奇怪。见以下代码: 示例A: int x = (int)(Math.random()*4 ); String n = new String[] {"FF", "RR"}[x]; System.out.println(n) ; 当随机数为0或1时,输出“FF”或“RR”。我的问题是如何做到这一点。我无法理解示例A中使用的语法。我使用了非常普通的字符串数组语法,如下所示: String s[] ; s = new String[]{"dd",
int x = (int)(Math.random()*4 );
String n = new String[] {"FF", "RR"}[x];
System.out.println(n) ;
当随机数为0或1时,输出“FF”或“RR”。我的问题是如何做到这一点。我无法理解示例A中使用的语法。我使用了非常普通的字符串数组语法,如下所示:
String s[] ;
s = new String[]{"dd", "rr"};
或
String s [] = {"gg", "ss"};
但是我还没有看到顶级语法(示例A)。有人能帮我理解顶级语法是如何处理和执行的吗。提前谢谢。它与您的第二个符号基本相同 第二行相当于
String s[]= new String[]{"FF","RR"};
String n = s[x];
只是在这个例子中,
s
是匿名的。它基本上与第二个符号相同
String n = new String[] {"FF", "RR"}[x];
^^^^^^^^^^^^^^^^^^^^^^^^^
第二行相当于
String s[]= new String[]{"FF","RR"};
String n = s[x];
只是在这个例子中,s
是匿名的
String n = new String[] {"FF", "RR"}[x];
^^^^^^^^^^^^^^^^^^^^^^^^^
这将创建一个包含两个元素的匿名数组,“FF”
和“RR”
。匿名数组是一个没有名称的临时对象,在语句执行完毕后立即销毁。然后使用[]
运算符对该匿名数组编制索引
String n = new String[] {"FF", "RR"}[x];
^^^
这将返回匿名数组的第x个元素
请注意,此程序中似乎存在错误;如果随机数导致x
大于1,您将获得ArrayIndexOutOfBoundsException
这将创建一个包含两个元素的匿名数组,“FF”
和“RR”
。匿名数组是一个没有名称的临时对象,在语句执行完毕后立即销毁。然后使用[]
运算符对该匿名数组编制索引
String n = new String[] {"FF", "RR"}[x];
^^^
这将返回匿名数组的第x个元素
请注意,此程序中似乎存在错误;如果随机数导致
x
大于1,您将获得ArrayIndexOutOfBoundsException
如下所示:当您通常访问字符串数组中的元素时,您会做什么
String s = arr[0];
获取数组中的第一个元素。现在您正在这样做:
String n = new String[] {"FF", "RR"}[x];
您只需在创建时立即从数组中获取一个元素。或者,
xth
元素。请注意,如果随机数超出数组的边界,则程序将失败。这是这样的:当您正常访问字符串数组中的元素时,您会怎么做
String s = arr[0];
获取数组中的第一个元素。现在您正在这样做:
String n = new String[] {"FF", "RR"}[x];
您只需在创建时立即从数组中获取一个元素。或者,xth
元素。请注意,如果随机数超出数组的边界,则程序将失败。新字符串[]{“FF”,“RR”}
是“字符串数组”类型的表达式。这就是为什么您可以在中将其分配给s
String[] s = new String[] {"FF", "RR"};
由于它是“字符串数组”类型,因此可以在其上使用[]
运算符来获取给定索引处的字符串。您必须在括号内加一个int
。而x
是一个int
因此newstring[]{“FF”,“RR”}[x]
是数组newstring[]{“FF”,“RR”}
的索引x
处的元素。此元素的类型为String。因此,您可以将其分配给变量n
,该变量也声明为字符串
这基本上和做同样的事情
char c = "hello".charAt(2);
或
新字符串[]{“FF”,“RR”}
是“字符串数组”类型的表达式。这就是为什么您可以在中将其分配给s
String[] s = new String[] {"FF", "RR"};
由于它是“字符串数组”类型,因此可以在其上使用[]
运算符来获取给定索引处的字符串。您必须在括号内加一个int
。而x
是一个int
因此newstring[]{“FF”,“RR”}[x]
是数组newstring[]{“FF”,“RR”}
的索引x
处的元素。此元素的类型为String。因此,您可以将其分配给变量n
,该变量也声明为字符串
这基本上和做同样的事情
char c = "hello".charAt(2);
或
详细说明您的上一条语句,
x
可以接受[0,3]中的任何值,2和3都将生成一个异常。简单而好的解释。我同意,如果随机数大于1,它将抛出“ArrayIndexOutofBoundException”。详细说明您的上一条语句,x
可以接受[0,3]中的任何值,2和3都将生成异常。简单而好的解释。我同意,如果随机数大于1,则抛出“ArayIdxOutOfBangExtExpPoint”。通常,代码>随机。NeXint(int n)< /C>通常被认为是生成一个随机整数的更好方法(至少,我认为它是这样的)。(嗯,至少我认为是这样的。)