Working with Primitive Data Types

1. Declaring Integer Types

TypeSizeRangeDefault
byte8-bit-128 to 1270
short16-bit-32,768 to 32,7670
int32-bit±2.14 billion0
long64-bit±9.2 quintillion0L

Example: Integer literals

byte b = 100;
int decimal = 1_000_000;        // underscore separator
int hex = 0xFF;                 // hexadecimal
int binary = 0b1010_0001;       // binary
long big = 9_999_999_999L;      // L suffix required

2. Working with Floating-Point Types

TypeSizePrecisionSuffix
float32-bit IEEE 754~7 digitsf / F
double64-bit IEEE 754~15 digitsd (optional)

Example: Float vs double

float price = 19.99f;           // f required
double pi = 3.14159265358979;
double sci = 1.5e3;             // 1500.0
double hexFloat = 0x1.8p3;      // 12.0
Warning: Never use float/double for money — use BigDecimal.

3. Using Character Type

FormExampleNotes
Literal'A'Single quotes
Unicode escape'\u0041'16-bit code unit
Numeric value(char) 65Same as 'A'
Escape sequences'\n' '\t' '\\' '\''Special characters

4. Understanding Boolean Type

PropertyValue
Typeboolean
Valuestrue, false
Defaultfalse
SizeJVM-dependent (typically 1 byte stored, 4 in arrays)

5. Understanding Default Values

TypeDefault (instance/static fields)
Numeric primitives0 / 0L / 0.0
booleanfalse
char'\u0000'
Reference typesnull
Note: Local variables have NO default — must be explicitly assigned before use.

6. Working with Literals

LiteralExample
Integer42, 0x2A, 0b101010, 052 (octal)
Long42L
Float3.14f
Double3.14, 3.14d
Char'A', '\u0041'
String"hello"
Underscore separator1_000_000 (Java 7+)

7. Understanding Type Casting

CastBehaviorExample
Widening (implicit)No data lossint i = 10; long l = i;
Narrowing (explicit)Possible data lossint i = (int) 3.7; // 3
Promotionbyte/short → int in expressionsbyte a=1,b=2; int c = a+b;

8. Using Wrapper Classes

PrimitiveWrapperUseful Methods
intIntegerparseInt, valueOf, compare, MAX_VALUE
longLongparseLong, toBinaryString
doubleDoubleparseDouble, isNaN, isInfinite
booleanBooleanparseBoolean, logicalAnd
charCharacterisDigit, isLetter, toUpperCase

9. Understanding Autoboxing and Unboxing

OperationDirectionExample
Autoboxingprimitive → wrapperInteger x = 5;
Unboxingwrapper → primitiveint y = x;
Warning: Unboxing a null wrapper throws NullPointerException. Avoid wrappers in tight loops (boxing overhead).

10. Comparing Primitives vs Wrapper Classes

AspectPrimitiveWrapper
StorageStack/inlineHeap object
Default0/falsenull
Equality== compares value== compares reference, use .equals()
Use in collectionsNot allowedRequired (List<Integer>)
PerformanceFaster, less memoryObject overhead