如何在不使用Integer类的情况下在Java中获取Integer.MAX_VALUE的值

mad*_*d19 6 java int integer max

我有这个问题完全困扰了我.我必须创建一个等于Integer.MAX_VALUE的变量...(在Java中)

// The answer must contain balanced parentesis
public class Exercise{

  public static void main(String [] arg){
    [???]
    assert (Integer.MAX_VALUE==i);
  }
}
Run Code Online (Sandbox Code Playgroud)

挑战是源代码不能包含单词"Integer","Float","Double"或任何数字(0 - 9).

Boh*_*ian 6

这是一个简洁的方法:

int ONE = "x".length();
int i = -ONE >>> ONE; //unsigned shift
Run Code Online (Sandbox Code Playgroud)

这是因为二进制中的最大整数值都是1,除了顶部(符号)位,它是零.但是二进制补码二进制中的-1都是1,所以通过向右移位-1一位,你得到最大值.

11111111111111111111111111111111 // -1 in twos compliment
01111111111111111111111111111111 // max int (2147483647)
Run Code Online (Sandbox Code Playgroud)


Hyp*_*cle 5

正如其他人所说.

int i = Integer.MAX_VALUE;
Run Code Online (Sandbox Code Playgroud)

是你想要的.

Integer.MAX_VALUE是"包装类"Integer中的"静态常量",它只是最大值.许多类都有静态常量,这些常量很有用.