Data Types in Java

Overview of data types

Any programming language has a set of data types. Data types are basic, and quite similar for all languages. All data types are composed from bits, therefore, I dedicate a post to introduce the history of bits and bytesMy advice is that you should read it before continuing reading this post.

Java has two types of data types:

  • Primitive Types
  • Reference Types

Primitive Types

There are 8 primitive data types which are booleanbytecharshortintlongfloatdouble.

Data typeDefault ValueSize
booleanfalse1 bit
char‘\u0000’2 byte
byte01 byte
short02 byte
int04 byte
long0L8 byte
float0.0f4 byte
double0.0d8 byte
  • Logic type: boolean.
  • Integer types: byteshortcharintlong.
  • Real number type is also called floating point: floatdouble.

Reference types, which are objects created by the constructor of classes.

2- byte

byte a byte is composed of 8 consecutive bits in the memory of computer. Each bit  is a binary number of 0 or 1. Java uses ” byte” to name a integer type with small scope (Size: 1  byte).

The first bit in a row of 8 bits has value of 0 or 1.

  • If it is 0, Java considers it as + (Represent a positive number)
  • If it is 1 Java considers it as – (Represent a negative number)

For next 7 bits, you can represent a number between 0 and 127. From here you deduce the byte type in Java with the range of [-127, 127].
But wait, it is supposed to be [-128, 127], why?

Why is the smallest number of byte type in Java -128?

If the rules that the first bit has a value of 0 equivalent to +, the value of 1 equivalent to -, then we have two ways to represent 0 (see the illustration).

Therefore, the binary sequence of  “1 0 0 0 0 0 0” should be considered as the smallest number of byte data type in Java. It represents  -128.

3- boolean

boolean is the simplest data type. It has size of 1 bit. It has 2 values of   true and  false.The default value for the  boolean type i sfalse.?

// Declare a variable named 'valid', data type is boolean
// The value will be false by default.
boolean valid;
// Declare a variable named 'active', data type is boolean
// Value is true.
boolean active = true;

4- char

Although ” char” is the first four characters of the ” Character” term, the char type in Java is used to store non-negative integers with the two- byte size. It is also used to represent for a Unicode character because in nature, each character corresponds to a specific number. (This number is understood as the code of character.) Because  char is non-negative integer type, size: 2 bytes, its scope is [0, 2*16-1]  ( [0, 65535] ).When char is understood as a  Unicode character, the smallest character is ‘\u0000’ (Mã 0), and the largest character is ‘\uffff’ (code: 65535).

What is Unicode character?

  • TODO

5- short

short is data type for the purpose of representing a two-byte integer  (16 bits), including negative integer.

  • The smallest value is -32,768 (-2^15) and the largest value is 32,767 (2^15 -1).
  • Default value is 0.

** Note: See the explanation of the rule to determine the positive or negative number in the section of  byte data type. 

6- int

int data type is used to represent an integer with the size of 4 bytes (32 bits).

  • The smallest value: -2,147,483,648 (-2^31)
  • The largest value:  2,147,483,647 (2^31 -1)
  • Default value: 0.

In Java, the int data type is considered as default data type for integers. Therefore, if you write 100Java will create a four- byte memory area for storage. And if you want Java to create an eight- byte memory area to store 100, you have to write 100L. (long is an eight- byte integer type, introduced in the following section).?

int a = 100;

7- long

The long data type is used to represent integers with the size of  8 bytes (64 bits).

  • The smallest value is -9,223,372,036,854,775,808.(-2^63)
  • The largest value is 9,223,372,036,854,775,807. (2^63 -1)
  • This type is used when a value pattern wider than int is necessary.
  • Default value is 0L.
// You need to add 'L' immediately after 100
// so that Java creates an 8 byte memory area to store 100
long a = 100L;

8- float

float data type is used to represent a real number with the size of 4 bytes (32 bits).

  • The smallest value: -3.4028235 x 10^38
  • The largest value:: 3.4028235 x 10^38
  • Default value: 0.0f


float value = 2.5f;

9- double

double data type is used to represent a real number with the size of 8 bytes (64 bits). It is the default type for real numbers.

  • The smallest value: -1.7976931348623157 x 10^308
  • The largest value:  1.7976931348623157 x 10^308
  • Default value: 0.0d


double a = 2.5d;
// Since doubling is the default type for real numbers,
// You can write more concisely:
double b = 2.5;

10- Reference Types

In Java, a data type created by a combination of primitive types is called a reference type. The most commonly used reference type is the String, which is a combination of characters.

Reference types are created based on a class. The class is like a blueprint to define a reference type.

class Address 
  String address;
  String cityName;
class Student 
  String fullName;
  int age;
  Address address; 
Follow Us On