我遇到了一些包含数组参数中的%
符号的代码。
它是什么意思,如何工作?
例子:
String[] name = { "a", "b", "c", "d" };
System.out.println(name[4 % name.length]);
System.out.println(name[7 % name.length]);
System.out.println(name[50 % name.length]);
输出:
a
d
c
我遇到了一些包含数组参数中的%
符号的代码。
它是什么意思,如何工作?
例子:
String[] name = { "a", "b", "c", "d" };
System.out.println(name[4 % name.length]);
System.out.println(name[7 % name.length]);
System.out.println(name[50 % name.length]);
输出:
a
d
c
3 % 2
是1
,因为3 / 2
的余数是1
。name.length
小于4、7或50,则在这些值上执行% name.length
的结果是一个处于0
到name.length - 1
范围内的值。4 % 4
是0
,7 % 4
是3
,50 % 4
是2
。所有这些都是name
的有效数组索引。class Example
{
public static void main (String[] args) throws java.lang.Exception
{
String[] name = { "a" , "b" , "c" , "d"};
int n;
n = 4 % name.length;
System.out.println(" 4 % 4 is " + n + ": " + name[n]);
n = 7 % name.length;
System.out.println(" 7 % 4 is " + n + ": " + name[n]);
n = 50 % name.length;
System.out.println("50 % 4 is " + n + ": " + name[n]);
}
}
输出:
4 % 4 是 0:a 7 % 4 是 3:d 50 % 4 是 2:c
%
来保持数值在范围内非常普遍,如果你希望将其保持在范围内,则会得到预期的结果。你通常会在需要循环索引的情况下看到它:index = (index + 1) % size
。 - T.J. Crowder()
中的4
、7
和50
并没有起到任何作用。通常情况下,对于单个值,分组运算符(()
)是没有意义的。 - T.J. Crowder