Data types specify the different sizes and values that can be stored in the variable. There are two types of data types in Java:
- Primitive data types: The primitive data types include boolean, char, byte, short, int, long, float and double.
- Non-primitive data types: The non-primitive data types include Classes, Interfaces, and Arrays.
There are 8 types of primitive data types:
- boolean
- byte
- char
- short
- int
- long
- float
- double
Java is a statically-typed programming language. It means, all variables must be declared before its use. That is why we need to declare variable's type and name.
Data Type |
Default Value |
Default size |
boolean |
false |
1 bit |
char |
'\u0000' |
2 byte |
byte |
0 |
1 byte |
short |
0 |
2 byte |
int |
0 |
4 byte |
long |
0L |
8 byte |
float |
0.0f |
4 byte |
double |
0.0d |
8 byte |
Default Values By Oracle Define
It's not always necessary to assign a value when a field is declared. Fields that are declared but not initialized will be set to a reasonable default by the compiler. Generally speaking, this default will be zero or
null
, depending on the data type. Relying on such default values, however, is generally considered bad programming style.
The following chart summarizes the default values for the above data types.
Data Type |
Default Value (for fields) |
byte |
0 |
short |
0 |
int |
0 |
long |
0L |
float |
0.0f |
double |
0.0d |
char |
'\u0000' |
String (or any object) |
null |
boolean |
false |
Local variables are slightly different; the compiler never assigns a default value to an uninitialized local variable. If you cannot initialize your local variable where it is declared, make sure to assign it a value before you attempt to use it. Accessing an uninitialized local variable will result in a compile-time error.
Boolean Data Type
The Boolean data type is used to store only two possible values: t
rue and false.
This data type is used for simple
flags that track true/false conditions.
The Boolean data type specifies one bit of information, but its "size" can't be defined precisely.
Syntax:
boolean hpkingdom;
boolean hp = true;
Size:
virtual machine dependent
Values:
true, false
Default Value:
false
// Java program to boolean data type
class hpkingdom {
public static void main(String args[])
{
boolean b = true;
if (b == true)
System.out.println("HELLO HP");
}
}
Output:
HELLO HP
Define By Oracle
boolean: The
boolean
data type has only two possible values:
true
and
false
. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
Byte Data Type
The byte data type is an example of primitive data type. It isan 8-bit signed two's complement integer. Its value-range lies between -128 to 127 (inclusive). Its minimum value is -128 and maximum value is 127. Its default value is 0.
The byte data type is used to save memory in large arrays where the memory savings is most required. It saves space because a byte is 4 times smaller than an integer. It can also be used in place of "int" data type.
Syntax:
byte byteVar;
byte hp=3;
Size:
1 byte ( 8 bits )
Values:
-128 to 127
Default Value:
0
// Java program to byte data type in Java
class hpkingdom {
public static void main(String args[])
{
byte a = 126;
// byte is 8 bit value
System.out.println(a);
a++;
System.out.println(a);
// It overflows here because
// byte can hold values from -128 to 127
a++;
System.out.println(a);
// Looping back within the range
a++;
System.out.println(a);
byte hp = 1;
}
}
Output:
126
127
-128
-127
1
Define By Oracle:
byte: The
byte
data type is an 8-bit signed two's complement integer. It has a minimum value of -128 and a maximum value of 127 (inclusive). The
byte
data type can be useful for saving memory in large arrays, where the memory savings actually matters. They can also be used in place of
int
where their limits help to clarify your code; the fact that a variable's range is limited can serve as a form of documentation.
Short Data Type
The short data type is a 16-bit signed two's complement integer. Its value-range lies between -32,768 to 32,767 (inclusive). Its minimum value is -32,768 and maximum value is 32,767. Its default value is 0.
The short data type can also be used to save memory just like byte data type. A short data type is 2 times smaller than an integer.
Syntax:
short shortVar;
short hp = 1000;
Size:
2 byte ( 16 bits )
Values:
-32, 768 to 32, 767 (inclusive)
Default Value:
0
// Java program to short data type
class hpkingdom {
public static void main(String args[])
{
short b = 2000;
if (b == 2000)
System.out.println(b);
}
}
Output:
2000
Define By Oracle:
short: The
short
data type is a 16-bit signed two's complement integer. It has a minimum value of -32,768 and a maximum value of 32,767 (inclusive). As with
byte
, the same guidelines apply: you can use a
short
to save memory in large arrays, in situations where the memory savings actually matters.
Int Data Type
The int data type is a 32-bit signed two's complement integer. Its value-range lies between - 2,147,483,648 (-2^31) to 2,147,483,647 (2^31 -1) (inclusive). Its minimum value is - 2,147,483,648and maximum value is 2,147,483,647. Its default value is 0.
The int data type is generally used as a default data type for integral values unless if there is no problem about memory.
Syntax:
int intVar;
int hp = 5000;
Size:
4 byte ( 32 bits )
Values:
-2, 147, 483, 648 to 2, 147, 483, 647 (inclusive)
Default Value:
0
Note: In Java SE 8 and later, we can use the int data type to represent an unsigned 32-bit integer, which has value in the range [0, 232-1]. Use the Integer class to use int data type as an unsigned integer.
// Java program to int data type
class hpkingdom {
public static void main(String args[])
{
int a = 5000;
if (a == 5000)
System.out.println(b);
}
}
Output:
5000
Define By Oracle:
int: By default, the
int
data type is a 32-bit signed two's complement integer, which has a minimum value of -2
31 and a maximum value of 2
31-1. In Java SE 8 and later, you can use the
int
data type to represent an unsigned 32-bit integer, which has a minimum value of 0 and a maximum value of 2
32-1. Use the Integer class to use
int
data type as an unsigned integer. See the section The Number Classes for more information. Static methods like
compareUnsigned
,
divideUnsigned
etc have been added to the
Integer
class to support the arithmetic operations for unsigned integers.
Long Data Type
The long data type is a 64-bit two's complement integer. Its value-range lies between -9,223,372,036,854,775,808(-2^63) to 9,223,372,036,854,775,807(2^63 -1)(inclusive). Its minimum value is - 9,223,372,036,854,775,808and maximum value is 9,223,372,036,854,775,807. Its default value is 0. The long data type is used when you need a range of values more than those provided by int.
Syntax:
long longVar;
long hp =77777L;
Size:
8 byte ( 64 bits )
Values:
-9, 223, 372, 036, 854, 775, 808
to
9, 223, 372, 036, 854, 775, 807
(inclusive)
Default Value:
0
Define By Oracle:
long: The
long
data type is a 64-bit two's complement integer. The signed long has a minimum value of -2
63 and a maximum value of 2
63-1. In Java SE 8 and later, you can use the
long
data type to represent an unsigned 64-bit long, which has a minimum value of 0 and a maximum value of 2
64-1. Use this data type when you need a range of values wider than those provided by
int
. The
Long
class also contains methods like
compareUnsigned
,
divideUnsigned
etc to support arithmetic operations for unsigned long.
Note: In Java SE 8 and later, you can use the long data type to represent an unsigned 64-bit long, which has a minimum value of 0 and a maximum value of 264-1. The Long class also contains methods like comparing Unsigned, divide Unsigned, etc to support arithmetic operations for unsigned long.
Float Data Type
The float data type is a single-precision 32-bit IEEE 754 floating point.Its value range is unlimited. It is recommended to use a float (instead of double) if you need to save memory in large arrays of floating point numbers. The float data type should never be used for precise values, such as currency. Its default value is 0.0F.
Syntax:
float floatVar;
float hp =10.5;
Size:
4 byte ( 32 bits )
Values:
upto 7 decimal digits
Default Value:
0.0
Define By Oracle:
float: The
float
data type is a single-precision 32-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in the Floating-Point Types, Formats, and Values section of the Java Language Specification. As with the recommendations for
byte
and
short
, use a
float
(instead of
double
) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency. For that, you will need to use the java.math.BigDecimal class instead. Numbers and Strings covers
BigDecimal
and other useful classes provided by the Java platform.
Example: float f1 = 234.5f
Double Data Type
The double data type is a double-precision 64-bit IEEE 754 floating point. Its value range is unlimited. The double data type is generally used for decimal values just like float. The double data type also should never be used for precise values, such as currency. Its default value is 0.0d.
Syntax:
double doubleVar;
Size:
8 byte ( 64 bits )
Values:
upto 16 decimal digits
Default Value:
0.0
Define By Oracle:
- double: The
double
data type is a double-precision 64-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in the Floating-Point Types, Formats, and Values section of the Java Language Specification. For decimal values, this data type is generally the default choice. As mentioned above, this data type should never be used for precise values, such as currency.
Example: double d1 = 12.3
Char Data Type
The char data type is a single 16-bit Unicode character. Its value-range lies between '\u0000' (or 0) to '\uffff' (or 65,535 inclusive).The char data type is used to store characters.
Syntax:
char charVar;
char hp = 'h';
Size:
2 byte ( 16 bits )
Values:
'\u0000' (0) to '\uffff' (65535)
Default Value:
'\u0000'
Define By Oracle:
char: The
char
data type is a single 16-bit Unicode character. It has a minimum value of
'\u0000'
(or 0) and a maximum value of
'\uffff'
(or 65,535 inclusive).
Example: char letterA = 'A'