百分比符号(%)是什么意思?

Moh*_*men 1 java

我遇到了一些包含%数组参数内符号的代码.

它是什么意思,它是如何工作的?

例:

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]);
Run Code Online (Sandbox Code Playgroud)

输出:

a
d
c
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 9

这是余数运算符,它给出了整数除法的余数.例如,3 % 21因为其余部分3 / 21.

在那里使用它来保持范围内的值:如果name.length小于4,7或50,则% name.length这些值的结果是在范围0to 中的值name.length - 1.

因此,即使数字(4,7或50)超出范围,代码也会可靠地从数组中选择条目.4 % 40,7 % 43,50 % 42.所有这些都是有效的数组索引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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

 4 % 4 is 0: a
 7 % 4 is 3: d
50 % 4 is 2: c

  • @TheAlpha:取决于预期的结果.:-)使用'%`来保持范围内的值是非常常见的,并且如果您希望将其保持在范围内,则给出预期结果.您通常会在索引中看到它:`index =(index + 1)%size` (3认同)