Java Basics
Learn Java programming fundamentals
Java Basics
Java is a class-based, object-oriented programming language designed for portability and reliability. This guide covers the fundamentals you need to get started with Java programming.
Variables
Java is statically typed - you must declare variable types:
// Primitive types
int age = 30;
double price = 19.99;
float temperature = 98.6f;
char grade = 'A';
boolean isActive = true;
byte smallNumber = 127;
short mediumNumber = 32767;
long bigNumber = 9223372036854775807L;
// Reference types
String name = "Java";
Integer number = 42; // Wrapper class
// Final (immutable)
final int MAX_SIZE = 100;
final String COMPANY = "Tech Corp";
// Multiple variables
int x = 1, y = 2, z = 3;
Data Types
Java has primitive and reference types:
// Primitives
int integer = 42;
double decimal = 3.14;
boolean flag = true;
char character = 'J';
// Strings (reference type)
String text = "Hello, World!";
String formatted = String.format("Hello, %s!", "Java");
String concatenated = "Hello" + " " + "World";
// Arrays
int[] numbers = {1, 2, 3, 4, 5};
String[] fruits = {"apple", "banana", "orange"};
Arrays
Arrays are fixed-size collections:
// Creating arrays
int[] numbers = {1, 2, 3, 4, 5};
int[] empty = new int[5]; // All zeros
String[] fruits = new String[3];
// Accessing elements
fruits[0] = "apple";
fruits[1] = "banana";
fruits[2] = "orange";
int first = numbers[0]; // 1
int length = numbers.length; // 5
// Multi-dimensional arrays
int[][] matrix = {{1, 2}, {3, 4}};
int value = matrix[0][1]; // 2
ArrayList
ArrayList is a dynamic array (growable):
import java.util.ArrayList;
// Creating ArrayList
ArrayList fruits = new ArrayList<>();
ArrayList numbers = new ArrayList();
// Adding elements
fruits.add("apple");
fruits.add("banana");
fruits.add(0, "kiwi"); // Insert at index
// Accessing elements
String first = fruits.get(0);
int size = fruits.size();
// Removing elements
fruits.remove(0); // Remove at index
fruits.remove("banana"); // Remove by value
// ArrayList methods
fruits.contains("apple"); // true
fruits.indexOf("banana"); // 1
fruits.isEmpty(); // false
fruits.clear(); // Remove all
Loops
Java offers several iteration methods:
// For loop
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
// Enhanced for loop (for-each)
String[] fruits = {"apple", "banana", "orange"};
for (String fruit : fruits) {
System.out.println(fruit);
}
// While loop
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
// Do-while loop
do {
System.out.println(count);
count--;
} while (count > 0);
// Loop control
for (int i = 0; i < 10; i++) {
if (i == 3) {
continue; // Skip to next iteration
}
if (i == 7) {
break; // Exit loop
}
System.out.println(i);
}
Conditionals
Control flow with if/else statements:
// If/else
int age = 20;
if (age >= 18) {
System.out.println("Adult");
} else if (age >= 13) {
System.out.println("Teenager");
} else {
System.out.println("Child");
}
// Ternary operator
String status = age >= 18 ? "Adult" : "Minor";
// Logical operators
if (age >= 18 && hasLicense) {
System.out.println("Can drive");
}
if (isWeekend || isHoliday) {
System.out.println("Day off");
}
if (!isComplete) {
System.out.println("Not done yet");
}
// Switch statement (Java 14+)
String grade = "B";
switch (grade) {
case "A" -> System.out.println("Excellent");
case "B" -> System.out.println("Good");
case "C" -> System.out.println("Average");
default -> System.out.println("Needs improvement");
}
// Switch expression (Java 14+)
String result = switch (grade) {
case "A" -> "Excellent";
case "B" -> "Good";
case "C" -> "Average";
default -> "Needs improvement";
};
Methods
Methods are functions defined within classes:
// Method definition
public static int add(int x, int y) {
return x + y;
}
// Method with multiple parameters
public static void greet(String name, int age) {
System.out.println("Hello, " + name + "! You are " + age);
}
// Method overloading
public static int multiply(int a, int b) {
return a * b;
}
public static double multiply(double a, double b) {
return a * b;
}
// Method with variable arguments
public static int sum(int... numbers) {
int total = 0;
for (int num : numbers) {
total += num;
}
return total;
}
// Calling methods
int result = add(5, 3); // 8
greet("Java", 30);
int total = sum(1, 2, 3, 4, 5); // 15
Classes
Java is object-oriented - everything is in a class:
// Class definition
public class Person {
// Fields (instance variables)
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter methods
public String getName() {
return name;
}
public int getAge() {
return age;
}
// Setter methods
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
// Instance method
public String introduce() {
return "Hi, I'm " + name + " and I'm " + age + " years old";
}
}
// Creating objects
Person person = new Person("John", 30);
System.out.println(person.introduce());
person.setAge(31);
System.out.println(person.getAge());
Inheritance
Java supports single inheritance:
// Parent class
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void makeSound() {
System.out.println("Some sound");
}
}
// Child class
public class Dog extends Animal {
public Dog(String name) {
super(name); // Call parent constructor
}
@Override
public void makeSound() {
System.out.println("Woof!");
}
public void wagTail() {
System.out.println(name + " is wagging tail");
}
}
// Using inheritance
Dog dog = new Dog("Buddy");
dog.makeSound(); // "Woof!"
dog.wagTail(); // "Buddy is wagging tail"
Collections
Java Collections Framework provides data structures:
import java.util.*;
// List (ArrayList, LinkedList)
List list = new ArrayList<>();
list.add("apple");
list.add("banana");
// Set (HashSet, TreeSet)
Set set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // Duplicate ignored
// Map (HashMap, TreeMap)
Map map = new HashMap<>();
map.put("apple", 5);
map.put("banana", 3);
int count = map.get("apple"); // 5
// Iterating collections
for (String item : list) {
System.out.println(item);
}
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}