什么(int&Integer.MAX_VALUE)%int在Java中做什么?

Fai*_*ian 2 java

在Java中,我遇到了以下行:

e.g.: (1 & Integer.MAX_VALUE) % 4
e.g.: (2 & Integer.MAX_VALUE) % 5
Run Code Online (Sandbox Code Playgroud)

它有什么作用?我已经尝试过代码,但我无法理解它的用途或功能.试图检查的代码是什么?

基本上,它是(int & Integer.MAX_VALUE) % int.

实际代码(来自Hadoop培训课程):

public int getPartition(StringPairWritable key, Text value, int numReduceTasks) {
    return (key.getLeft().hashCode() & Integer.MAX_VALUE) % numReduceTasks;
}
Run Code Online (Sandbox Code Playgroud)

Ran*_*niz 5

i & Integer.MAX_VALUE 与此代码做同样的事情:

if(i < 0) {
    i = (i + Integer.MAX_VALUE + 1);
}
Run Code Online (Sandbox Code Playgroud)

%是一个定期的剩余操作.

如果您不关心它的实际值(例如,如果您想将可以是正数和负数的随机数转换为正值),这是确保整数为正的快速方法.