In Java, each variable has a specific data type, where a data type tells us the size, range and the type of a value that can be stored in a variable.
In Java, there are about eightprimitive data types, such as - byte, short, int, long, char, float, double, boolean.
Primitive data types are categorized into 4 parts
integer data types, such as byte, short, int, long.
floating point data types, such as float, double.
character data type, such as char.
boolean data type, such as boolean.
Note: For many of us who like the reasoning behind equations, we will use a formula to calculate a minimum range
and a maximum range of values, that can be stored for the data types like byte, char, int and long.
Minimum Range- It is the minimum value that can be stored in a data type.
Maximum Range- It is the maximum value that can be stored in a data type.
The minimum range is calculated by -2^{(bits-1)} and for the maximum range it is 2^{(bits-1)}-1, while bits = size of a data type.
For example - The size of a byte data type is 8 bits.
And, as per formula above, the minimum range of value that can be stored in a variable declared as byte data type is -2^{7}(-128), while the
the maximum range of value is 2^{7}-1(127). Hence, the range of values for the byte data type is -128 to 127.
Understanding primitive data types
Let's see each primitive data type in Java, one-by-one.
byte
A variable of byte data type is of size 8 bits, which is equal to 1 byte.
As per the formulas discussed above,
a minimum value a byte variable can store is -2^{7} or -128 and a maximum value in a byte variable is 2^{7}-1 or +127 .
Hence, it's range is -128 to 127.
short
Size of a short variable is 16 bits or 2 bytes.
A minimum value that can be stored in a short is -2^{15} or -32768 and a maximum is 2^{15}-1 or +32767.
So, it's range is -32768 to 0 to 32767.
int
Size of an int variable is 32 bits or 4 bytes.
Minimum value that can be stored in an int is -2^{31} or -2, 147, 483, 648 while, Maximum is 2^{31}-1 or 2, 147, 483, 647.
So, it's range is -2, 147, 483, 648 to +2, 147, 483, 7.
long
Size of a Java long variable is 64 bits or 8 bytes.
The minimum range of a value that can be stored in a long is -2^{63} while, the maximum is 2^{63}-1 Note : Because of a wider range than int, long data type is used to store a larger number.
float
In float data types, we can hold number with its fractional part as well. So, we use this data type when a very precise calculation is required.
Size of a float variable is 32 bits= 4 bytes.
You don't need to remember the minimum and maximum value floating data types but for those who still wish to know, its minimum range is 3.4e-038 and a maximum limit of 3.4e+038.
double
Size of a double variable is 64 bits= 8 bytes.
Double data type variable may store a data with a minimum value of 1.7 e-038 until a maximum value of 1.7e+038
Note : In double data type, we can hold numbers with double precision values, as compared to float.
char
Java's char type variable takes 16 bits=2 bytes in the memory.
In java we have Unicode characters. Unicode characters are represented by unsigned(only positive) 16 bit numbers. Hence, the minimum range is 0 and the maximum range is 2^{16}-1.
Ranging from 0 to 65535 values.
Why Unicode characters in Java?
Because Unicode characters are 16 bits, a wider range than characters in C or C++(where they were just 8 bits or 1 byte). Hence in Java, a rich international set of characters are easily represented in Unicode.
boolean
For boolean types, there is no range of values. Unlike programming languages like C/C++, a boolean primitive data type in Java cannot take a 0 or 1 value.
A boolean in Java can be eithertrue or false.