Qual'è l'intero massimo utilizzabile in un programma con riferimento al seguente script in java?

codice:
// Improved Stack class that uses the length array member.
class Stack {
  private int stck[];
  private int tos;

  // allocate and initialize stack
  Stack(int size) {
    stck = new int[size];
    tos = -1;
  }

  // Push an item onto the stack
  void push(int item) {
    if(tos==stck.length-1) // use length member 
      System.out.println("Stack is full.");
    else 
      stck[++tos] = item;
  }

  // Pop an item from the stack
  int pop() {
    if(tos < 0) {
      System.out.println("Stack underflow.");
      return 0;
    }
    else 
      return stck[tos--];
  }
}
class Esempio {
	  public static void main(String args[]) {
	    int x=2_147_483_647;
	    Stack mystack1 = new Stack(5);
	    Stack mystack2 = new Stack(x);

	    // push some numbers onto the stack
	    for(int i=0; i<5; i++) mystack1.push(i);
	    for(int i=0; i<x; i++) mystack2.push(i);

	    // pop those numbers off the stack
	    System.out.println("Stack in mystack1:");
	    for(int i=0; i<5; i++) 
	       System.out.println(mystack1.pop());

	    System.out.println("Stack in mystack2:");
	    for(int i=0; i<x; i++) 
	       System.out.println(mystack2.pop());
	  }
	}
Perché non posso scrivere int x=2_147_483_647; ?