Integers
Java describes four integer types. Byte, short, int, and long. Whole of these are signed, positive and negative values. It does not support unsigned, positive only integers. Several other computer languages, involving C/C++, support both singed and unsigned integers. Moreover, Java's designers felt which unsigned integers were unnecessary. Specifically, they felt in which the concept of unsigned was used mostly to specify the behavior of the high order bit that defined the sign of an int when depressed as a number. It maintains the meaning of the high order bit differently, through adding a special "unsigned right shift" operator. Therefore, the needs for an unsigned integer type were eliminated.
A width of an integer type should not be though of as the amount of storage it consumes, but other as the behavior it defines for variables and expressions of that type. Java run time environment is free to use whatever size it needs, as long as the types behave as you devalued them. Actually, at least one implementation stores bytes and shorts as 32 bits (rather than 8 and 16 bit) values to improve performance, since which is the word size of most computers currently in use.
A width and ranges of these integer types vary hugely, as display in this table:
Let's look at each type of integer.