Java Programs
Practice Code Examples
Hands-on Java programs to practice and master the language. From basic to advanced level.
Java 21
✓ Practice
40 Programs
01
Basic Programs
#1Check Prime NumberBasic
Java
static boolean isPrime(int n) { if (n < 2) return false; for (int i = 2; i <= Math.sqrt(n); i++) if (n % i == 0) return false; return true; } isPrime(17); // true
#2Factorial (Recursive)Basic
Java
static long factorial(int n) { return n <= 1 ? 1 : n * factorial(n - 1); } factorial(5); // 120
#3Fibonacci SequenceBasic
Java
int a = 0, b = 1; for (int i = 0; i < 8; i++) { System.out.print(a + " "); // 0 1 1 2 3 5 8 13 int next = a + b; a = b; b = next; }
#4Reverse a StringBasic
Java
String reversed = new StringBuilder("hello").reverse().toString(); System.out.println(reversed); // "olleh"
#5Check PalindromeBasic
Java
static boolean isPalindrome(String s) { String c = s.toLowerCase().replaceAll("[^a-z0-9]", ""); return c.equals(new StringBuilder(c).reverse().toString()); } isPalindrome("Race car"); // true
#6Swap Without a TempBasic
Java
int a = 5, b = 10; a = a + b; // 15 b = a - b; // 5 a = a - b; // 10
#7Celsius to FahrenheitBasic
Java
static double toFahrenheit(double c) { return c * 9 / 5 + 32; } toFahrenheit(100); // 212.0
#8Check Odd or EvenBasic
Java
static boolean isEven(int n) { return n % 2 == 0; } isEven(7); // false
#9Check Leap YearBasic
Java
static boolean isLeap(int y) { return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0; } isLeap(2024); // true
#10Sum of Natural NumbersBasic
Java
static int sumUpTo(int n) { return n * (n + 1) / 2; } sumUpTo(100); // 5050
#11GCD (Euclid) and LCMBasic
Java
static int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } static int lcm(int a, int b) { return a / gcd(a, b) * b; } gcd(36, 60); // 12
#12Multiplication TableBasic
Java
int n = 5; for (int i = 1; i <= 10; i++) System.out.println(n + " x " + i + " = " + (n * i));
#13Decimal to Binary / HexBasic
Java
Integer.toBinaryString(42); // "101010" Integer.toHexString(42); // "2a" Integer.parseInt("2a", 16); // 42
#14Simple CalculatorBasic
Java
static double calc(double a, char op, double b) { return switch (op) { case '+' -> a + b; case '-' -> a - b; case '*' -> a * b; case '/' -> a / b; default -> throw new IllegalArgumentException("bad op"); }; } calc(6, '*', 7); // 42.0
#15FizzBuzzBasic
Java
for (int i = 1; i <= 15; i++) { if (i % 15 == 0) System.out.println("FizzBuzz"); else if (i % 3 == 0) System.out.println("Fizz"); else if (i % 5 == 0) System.out.println("Buzz"); else System.out.println(i); }
#16Count VowelsBasic
Java
static long countVowels(String s) { return s.toLowerCase().chars() .filter(c -> "aeiou".indexOf(c) >= 0).count(); } countVowels("Java"); // 2
#17Largest of ThreeBasic
Java
int max = Math.max(a, Math.max(b, c));
#18Sum of DigitsBasic
Java
static int digitSum(int n) { int sum = 0; while (n > 0) { sum += n % 10; n /= 10; } return sum; } digitSum(1234); // 10
#19Count Words in a SentenceBasic
Java
String s = "the quick brown fox"; int words = s.trim().split("\\s+").length; // 4
#20Power Without Math.powBasic
Java
static long power(int base, int exp) { long r = 1; for (int i = 0; i < exp; i++) r *= base; return r; } power(2, 10); // 1024
02
Intermediate Programs
#21Binary SearchIntermediate
Java
static int binarySearch(int[] a, int target) { int lo = 0, hi = a.length - 1; while (lo <= hi) { int mid = (lo + hi) >>> 1; if (a[mid] == target) return mid; if (a[mid] < target) lo = mid + 1; else hi = mid - 1; } return -1; }
#22Bubble SortIntermediate
Java
static void bubbleSort(int[] a) { for (int i = 0; i < a.length; i++) for (int j = 0; j < a.length - i - 1; j++) if (a[j] > a[j + 1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } }
#23Count Word FrequencyIntermediate
Java
Map<String, Integer> freq = new HashMap<>(); for (String w : "the cat and the dog".split(" ")) freq.merge(w, 1, Integer::sum); // {the=2, cat=1, and=1, dog=1}
#24Sum & Max of an Array (Streams)Intermediate
Java
int[] a = {4, 9, 2, 7}; int sum = Arrays.stream(a).sum(); // 22 int max = Arrays.stream(a).max().getAsInt(); // 9
#25Rotate an Array by KIntermediate
Java
static int[] rotate(int[] a, int k) { int n = a.length; k %= n; int[] r = new int[n]; for (int i = 0; i < n; i++) r[(i + k) % n] = a[i]; return r; }
#26Remove DuplicatesIntermediate
Java
List<Integer> unique = new ArrayList<>( new LinkedHashSet<>(List.of(1, 2, 2, 3, 3))); // [1, 2, 3]
#27Second LargestIntermediate
Java
int second = Arrays.stream(new int[]{5, 9, 9, 3}) .distinct().boxed() .sorted(Comparator.reverseOrder()) .skip(1).findFirst().get(); // 5
#28Check AnagramIntermediate
Java
static boolean isAnagram(String a, String b) { char[] x = a.toCharArray(), y = b.toCharArray(); Arrays.sort(x); Arrays.sort(y); return Arrays.equals(x, y); } isAnagram("listen", "silent"); // true
#29Title-Case a SentenceIntermediate
Java
String title = Arrays.stream("the quick fox".split(" ")) .map(w -> Character.toUpperCase(w.charAt(0)) + w.substring(1)) .collect(Collectors.joining(" ")); // "The Quick Fox"
#30Group by Length (Streams)Intermediate
Java
Map<Integer, List<String>> byLen = Stream.of("a", "bb", "cc", "d") .collect(Collectors.groupingBy(String::length)); // {1=[a, d], 2=[bb, cc]}
#31Find Missing NumberIntermediate
Java
static int missing(int[] a, int n) { int expected = n * (n + 1) / 2; return expected - Arrays.stream(a).sum(); } missing(new int[]{1, 2, 4, 5}, 5); // 3
#32Merge Two Sorted ArraysIntermediate
Java
static int[] merge(int[] a, int[] b) { int[] r = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) r[k++] = a[i] < b[j] ? a[i++] : b[j++]; while (i < a.length) r[k++] = a[i++]; while (j < b.length) r[k++] = b[j++]; return r; }
#33Reverse an IntegerIntermediate
Java
static int reverse(int n) { int r = 0; while (n != 0) { r = r * 10 + n % 10; n /= 10; } return r; } reverse(1234); // 4321
#34Two Sum (HashMap)Intermediate
Java
static int[] twoSum(int[] a, int target) { Map<Integer, Integer> seen = new HashMap<>(); for (int i = 0; i < a.length; i++) { int need = target - a[i]; if (seen.containsKey(need)) return new int[]{seen.get(need), i}; seen.put(a[i], i); } return new int[0]; }
#35Fibonacci with MemoizationIntermediate
Java
static Map<Integer, Long> memo = new HashMap<>(); static long fib(int n) { if (n <= 1) return n; return memo.computeIfAbsent(n, k -> fib(k - 1) + fib(k - 2)); }
03
Advanced Programs
#36Merge SortAdvanced
Java
static void mergeSort(int[] a, int lo, int hi) { if (lo >= hi) return; int mid = (lo + hi) >>> 1; mergeSort(a, lo, mid); mergeSort(a, mid + 1, hi); int[] tmp = new int[hi - lo + 1]; int i = lo, j = mid + 1, k = 0; while (i <= mid && j <= hi) tmp[k++] = a[i] <= a[j] ? a[i++] : a[j++]; while (i <= mid) tmp[k++] = a[i++]; while (j <= hi) tmp[k++] = a[j++]; System.arraycopy(tmp, 0, a, lo, tmp.length); }
#37Quick SortAdvanced
Java
static void quickSort(int[] a, int lo, int hi) { if (lo >= hi) return; int pivot = a[hi], i = lo - 1; for (int j = lo; j < hi; j++) if (a[j] < pivot) { i++; int t = a[i]; a[i] = a[j]; a[j] = t; } int t = a[i + 1]; a[i + 1] = a[hi]; a[hi] = t; quickSort(a, lo, i); quickSort(a, i + 2, hi); }
#38Generic Stack (OOP + Generics)Advanced
Java
class Stack<T> { private List<T> items = new ArrayList<>(); void push(T x) { items.add(x); } T pop() { if (items.isEmpty()) throw new RuntimeException("empty"); return items.remove(items.size() - 1); } boolean isEmpty() { return items.isEmpty(); } }
#39Bank Account System (OOP)Advanced
Java
class Account { private double balance; void deposit(double amt) { if (amt <= 0) throw new IllegalArgumentException("bad amount"); balance += amt; } void withdraw(double amt) { if (amt > balance) throw new IllegalStateException("insufficient funds"); balance -= amt; } double getBalance() { return balance; } }
#40Concurrent Counter (Threads)Advanced
Java
import java.util.concurrent.atomic.*; AtomicInteger counter = new AtomicInteger(0); List<Thread> threads = new ArrayList<>(); for (int i = 0; i < 4; i++) { Thread t = new Thread(() -> { for (int j = 0; j < 1000; j++) counter.incrementAndGet(); }); threads.add(t); t.start(); } for (Thread t : threads) t.join(); counter.get(); // 4000 — always correct, no lost updates