Chapter 2_1: Java Data Types

Java Data Types

A variable in Java must be a specified with data type.

Data types are divided into two groups:

  • Primitive data types – includes byte, short, int, long, float, double, boolean and char
  • Non-primitive data types – such as String, Arrays and Classes (you will learn more about these in a later chapter)

Primitive Data Types

A primitive data type specifies the size and type of variable values, and it has no additional methods.

There are eight primitive data types in Java:

Data TypeSizeDescription
byte1 byteStores whole numbers from -128 to 127
short2 bytesStores whole numbers from -32,768 to 32,767
int4 bytesStores whole numbers from -2,147,483,648 to 2,147,483,647
long8 bytesStores whole numbers from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
float4 bytesStores fractional numbers. Sufficient for storing 6 to 7 decimal digits
double8 bytesStores fractional numbers. Sufficient for storing 15 decimal digits
boolean1 bitStores true or false values
char2 bytesStores a single character/letter or ASCII values

Integer Types

Byte

The byte data type can store whole numbers from -128 to 127. This can be used instead of int or other integer types to save memory when you are certain that the value will be within -128 and 127:

Example
public class DemoDataType {
	public static void main(String args[]) {
		byte Number = 118;
		System.out.println(Number);
	}

}

Output:

118

Short

The short data type can store whole numbers from -32768 to 32767:

Example
public class DemoDataType {
	public static void main(String args[]) {
		
		short Number = 3000;
		System.out.println(Number);
	}

}

Output:

3000

Int

The int data type can store whole numbers from -2147483648 to 2147483647. In general, and in our tutorial, the int data type is the preferred data type when we create variables with a numeric value.

Example
public class DemoDataType {
	public static void main(String args[]) {
		int Number = 500;
		System.out.println(Number);
		
	}

}

Output :

 500

Long

The long data type can store whole numbers from -9223372036854775808 to 9223372036854775807. This is used when int is not large enough to store the value. Note that you should end the value with an “L”:

Example
public class DemoDataType {
	public static void main(String args[]) {
		long Number = 1800000000L;
		System.out.println(Number);
		
		
	}

}

Output:

1800000000

Floating Point(Rational) Types

You should use a floating point type whenever you want a number with a decimal, such as 7.99 or 3.14515.

Float

The float data type can store fractional numbers from 3.4e−038 to 3.4e+038. Note that you should end the value with an “f”:

Example
public class DemoDataType {
	public static void main(String args[]) {
		float Number = 3.14f;
		System.out.println(Number);// output:3.14
		
	}

}

Double

The double data type can store fractional numbers from 1.7e−308 to 1.7e+308. Note that you should end the value with a “d”:

Example
public class DemoDataType {
	public static void main(String args[]) {
		
		double Number = 36.99d;
		System.out.println(Number);//output:36.99
	}

}

Use float or double?

The precision of a floating point value indicates how many digits the value can have after the decimal point. The precision of float is only six or seven decimal digits, while double variables have a precision of about 15 digits. Therefore it is safer to use double for most calculations.

Scientific Numbers

A floating point number can also be a scientific number with an “e” to indicate the power of 10:

Example
public class DemoDataType {
	public static void main(String args[]) {
		float f1 = 45e2f;
		double d1 = 21E1d;
		System.out.println(f1);
		System.out.println(d1);
		
		
	}
}

Output:

4500.0
210.0

Booleans

A boolean data type is declared with the boolean keyword and can only take the values true or false:

Example
public class DemoDataType {
	public static void main(String args[]) {
		
		boolean myNameIsJava= true;
		boolean javaIsNotAProgrammingLanguage= false;
		System.out.println(myNameIsJava);
		System.out.println( javaIsNotAProgrammingLanguage);
		
	}

}

Output:

true
False

Boolean values are mostly used for conditional testing, which you will learn more about in a later chapter.

Characters

The char data type is used to store a single character. The character must be surrounded by single quotes, like ‘c’ or ‘d’:

Example
public class DemoDataType {
	public static void main(String args[]) {
		
		char Grade ='a';
		System.out.println(Grade); //Output :a
	}

}

Alternatively, you can use ASCII values to display certain characters:

Example
public class DemoDataType {
	public static void main(String args[]) {
		char a =75, b =85, c =97;
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		
		
	}

}

Output:

K
U
a

Strings

The String data type is used to store a sequence of characters (text). String values must be surrounded by double quotes:

Example
public class DemoDataType {
	public static void main(String args[]) {
		String greeting = "Hello Java World";
		System.out.println(greeting);
		
	}

}

Output:

Hello Java World

A String in Java is actually a non-primitive data type, because it refers to an object. The String object has methods that is used to perform certain operations on strings. The String type is so much used and integrated in Java, that some call it “the special ninth type”.

Non-Primitive Data Types

Non-primitive data types are called reference types because they refer to objects.

The main difference between primitive and non-primitive data types are:

  • Primitive types are predefined or already defined in Java. Non-primitive types are created by the programmer and is not defined by Java (except for String).
  • Non-primitive types can be used to call methods to perform certain operations, while primitive types cannot.
  • A primitive type has always a value, while non-primitive types can be null.
  • A primitive type starts with a lowercase letter, while non-primitive types starts with an uppercase letter.
  • The size of a primitive type depends on the data type, while non-primitive types have all the same size.
  • Examples of non-primitive types are Strings, Arrays, Classes, Interface, etc.