Is a Java int always 32 bits?

java

Solution

Yes, it's defined in The Java Language Specification.

From Section 4.2: Primitive Types and Values:

The integral types are `byte`, `short`, `int`, and `long`, whose values are 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, respectively, and `char`, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).

And additionally from Section 4.2.1: Integral Types and Values:

The values of the integral types are integers in the following ranges:

- For byte, from -128 to 127, inclusive

- For short, from -32768 to 32767, inclusive

- For int, from -2147483648 to 2147483647, inclusive

- For long, from -9223372036854775808 to 9223372036854775807, inclusive

- For char, from '\u0000' to '\uffff' inclusive, that is, from 0 to 65535

Problem

Will Java's `int` always and everywhere be a 32 bit signed integer?

Original source