☕ Java String — Complete Programs Guide

Basic se Advance tak — har topic ke 5 programs with VS Code theme. Bilkul simple aur clear samjhaya gaya!

📚 8 Topics 🖥️ 40 Programs 💡 VS Code Theme 📱 Fully Responsive 🎯 Interview Ready

📋 Table of Contents

🔵

Topic 1: String Creation & Memory Model

String kya hai? Kaise banti hai? Memory mein kahan jaati hai?

📖 Key Concepts

  • String immutable hai — ek baar bani, change nahi hoti. Koi bhi operation NAYA object banata hai.
  • String LiteralString Pool mein jaata hai (same value = same object)
  • new String() → Heap mein HAMESHA naya object banta hai
  • == reference compare karta hai, .equals() content compare karta hai
⚠️ Golden Rule: Strings compare karne ke liye HAMESHA .equals() use karo, kabhi == nahi!
StringCreation1.java
Program 1
▶ Output
s1 == s2 : true ← same pool reference s1 == s3 : false ← alag object (heap) s3 == s4 : false ← dono alag heap objects s1.equals(s2): true s1.equals(s3): true ← content same hai s3.equals(s4): true
StringCreation2.java
Program 2
▶ Output
Before: Hello Hash before: 12345678 After: Hello World Hash after: 87654321 ← Hash change = NAYA object bana! a = JAVA ← naya object b = Java ← unchanged! String IMMUTABLE hai!
StringCreation3.java
Program 3
▶ Output
Char[] to String: Java Char array: B a c k e n d int→String: "42" double→String: "99.99" Shortcut: "42" String→int: 123 (check: 124)
StringCreation4.java
Program 4
▶ Output
empty.isEmpty() : true blank.isEmpty() : false blank.isBlank() : true ← Java 11+ empty.length() : 0 nullStr is null — safe check! "Java".equals(null): false ← no crash! s1 == s2: false (heap vs pool) s2 == s3: true (dono pool)
StringCreation5.java
Program 5
▶ Output
JSON: { "name": "Rahul", "course": "Java Backend", "age": 21 } ------------------------------ Java Java Java ------------------------------ SMS: Dear Rahul, your OTP is 9876. Valid for 5 mins.
🟢

Topic 2: length(), charAt(), indexOf()

String ke andar characters ko access karna aur dhundhna

📖 Key Concepts

  • length() — total characters count (spaces bhi count hoti hain)
  • charAt(i) — index i par ka character (0 se start)
  • indexOf(x) — pehli occurrence ka index, nahi mila toh -1
  • lastIndexOf(x) — aakhri occurrence ka index
  • contains(s) — substring hai ya nahi → boolean
⚠️ Note: indexOf() return karta hai -1 agar char/string nahi mili. Hamesha check karo: if (s.indexOf("x") != -1)
StringMethods1.java
Program 1
▶ Output
String: "Java Backend Course" length(): 19 charAt(0): J charAt(5): B charAt(last): e indexOf('a'): 1 indexOf("Backend"): 5 indexOf("xyz"): -1 ← not found lastIndexOf('a'): 6 lastIndexOf('e'): 18 indexOf('a', 2): 6 ← search from index 2 contains("Backend"): true
StringMethods2.java
Program 2
▶ Output
Original : Hello Reversed : olleH Sentence : Java Programming Language Vowels : 8 Email: hello.world@gmail.com Dots: 2
StringMethods3.java
Program 3
▶ Output
"racecar" palindrome: true All occurrences of "an" in "banana": index: 1 index: 3 URL: https://www.google.com startsWith("https"): true endsWith(".com"): true
StringMethods4.java
Program 4
▶ Output
String : "Hello World 123 Java 456" Letters: 14 Digits : 6 Spaces : 4 Others : 0 Sentence: "Java is very powerful" Words : 4
StringMethods5.java
Program 5
▶ Output
Char frequency in: "programming" --------------------- 'p' → 1 █ 'r' → 2 ██ 'o' → 1 █ 'g' → 2 ██ 'a' → 1 █ 'm' → 2 ██ 'i' → 1 █ 'n' → 1 █
🟠

Topic 3: substring(), trim(), replace()

String se parts nikalna, spaces hatana, aur content replace karna

📖 Key Concepts

  • substring(start) — start se end tak extract karo
  • substring(start, end) — end index EXCLUDED hai!
  • trim() — leading/trailing whitespace hatao
  • replace(old, new) — sabhi occurrences replace (no regex)
  • replaceAll(regex, new) — regex pattern use karta hai
  • replaceFirst(regex, new) — sirf pehli occurrence
⚠️ Yaad rakho: substring(0, 4) mein 4 index EXCLUDED hai — sirf 0,1,2,3 ke chars milenge!
SubstringReplace1.java
Program 1
▶ Output
Java World World Hello Java Last 5: World First 5: Hello Email : student@gmail.com User : student Domain : gmail.com
SubstringReplace2.java
Program 2
▶ Output
Before trim: | Hello World | After trim: |Hello World| Length before: 15 Length after: 11 strip() : |Java| stripLeading(): |Java | stripTrailing(): | Java| Raw : | RAHUL@GMAIL.COM | Cleaned: |rahul@gmail.com|
SubstringReplace3.java
Program 3
▶ Output
replace 'a'→'X': bXnXnX replace Java→Python: I love Python. Python is awesome! replaceFirst: I love Python. Java is awesome! Before: |Hello World Java| After: |Hello World Java| ← multiple spaces → one Remove digits: JavaBackendCourse Clean phone: 919876543210
SubstringReplace4.java
Program 4
▶ Output
Password: mySecret123 Masked : my*******23 Original : rahul kumar sharma Title Case : Rahul Kumar Sharma URL : https://api.example.com/users/profile Host: https://api.example.com Path: /users/profile
SubstringReplace5.java
Program 5
▶ Output
camelCase : backendJavaDevelopmentCourse snake_case: backend_java_development_course Back to camel: backendJavaDevelopmentCourse First : Hello Middle: Beautiful Last : World
🔴

Topic 4: Case & Comparison Methods

String ka case change karna aur correct tarike se compare karna

📖 Key Concepts

  • toUpperCase() / toLowerCase() — case convert karo (naya object banta hai)
  • equals() — case-sensitive comparison → boolean
  • equalsIgnoreCase() — case ignore karke compare (login ke liye)
  • compareTo() — Negative=pehle, Zero=equal, Positive=baad mein
  • matches(regex) — full string ko regex se validate karo
CompareCase1.java
Program 1
▶ Output
Original : Java Backend toUpperCase : JAVA BACKEND toLowerCase : java backend s1.equals(s2) : false s1.equals(s3) : true s1.equalsIgnoreCase(s2) : true ✅ Login Successful!
CompareCase2.java
Program 2
▶ Output
"apple".compareTo("banana") = -1 ← pehle aata hai "apple".compareTo("apple") = 0 ← equal "banana".compareTo("apple") = 1 ← baad mein aata hai Before: Rahul Amit Priya Vikram Deepa After: Amit Deepa Priya Rahul Vikram Smallest: Apple | Largest: Mango
CompareCase3.java
Program 3
▶ Output
"Java".equals(a): true "Java".equals(b): false ← null safe, no crash! Objects.equals(a, "Java"): true Objects.equals(b, "Java"): false Objects.equals(null,null): true "9876543210" valid phone: true "test@gmail.com" valid email: true
CompareCase4.java
Program 4
▶ Output
"listen" and "silent" anagram: true Anagram pairs: triangle + integral = ✅ Anagram hello + world = ❌ Not Anagram race + care = ✅ Anagram java + avaj = ✅ Anagram
CompareCase5.java
Program 5
▶ Output
Text: Java is POWERFUL and Java is FUN. JAVA rocks! "java" (case-insensitive) count: 3 Original : Hello World JAVA SwapCase : hELLO wORLD java Upper: 5 | Lower: 11
🟣

Topic 5: split(), join(), format()

String ko todna, milana, aur format karna

📖 Key Concepts

  • split(delimiter) — String → String[]; delimiter ek regex hai
  • split(delimiter, limit) — max limit parts mein split
  • String.join(sep, parts) — parts ko separator se jodo
  • String.format("%s %d %.2f") — %s=string, %d=int, %f=float, %-10s=left-align
⚠️ Trap: split(".") GALAT hai! Dot regex mein "any char" hota hai. Sahi likho: split("\\.")
SplitJoinFormat1.java
Program 1
▶ Output
Parts: 4 [0] = Apple [1] = Banana [2] = Mango [3] = Orange Words: [Java] [is] [the] [best] Version parts: [Java] [17] [0] [2] Split with limit 3: → one → two → three:four:five
SplitJoinFormat2.java
Program 2
▶ Output
Java-Backend-2024 Rahul, Amit, Priya Java | Spring | MySQL | REST API CSV : name,age,city,salary Headers : NAME | AGE | CITY | SALARY INSERT INTO users (name, email, phone, city) VALUES ('Rahul', 'rahul@gmail.com', '9876543210', 'Indore')
SplitJoinFormat3.java
Program 3
▶ Output
Name: Rahul | Age: 21 | CGPA: 8.76 | Java| ← right-aligned |Java | ← left-aligned |0000000042| ← zero-padded |+100| ╔══════════════════════════════════╗ ║ Student Report ║ ╠══════════════════════════════════╣ ║ Name Age Grade ║ ╠══════════════════════════════════╣ ║ Rahul Sharma 21 A+ ║ ║ Priya Singh 20 A ║ ║ Amit Kumar 22 B+ ║ ╚══════════════════════════════════╝
SplitJoinFormat4.java
Program 4
▶ Output
=== Employee Details === Name : Rahul Age : 21 City : Indore Role : Java Developer Salary : 75000 === URL Parts === Full URL: https://api.example.com/users/123/orders └─ users └─ 123 └─ orders Original: Java is very powerful Reversed: powerful very is Java
SplitJoinFormat5.java
Program 5
▶ Output
Text: "the quick brown fox jumps over the lazy dog the fox" Total words: 11 Word Frequencies: ------------------------------ the → 3 ★★★ quick → 1 ★ brown → 1 ★ fox → 2 ★★ jumps → 1 ★ over → 1 ★ lazy → 1 ★ dog → 1 ★
🟡

Topic 6: StringBuilder & StringBuffer

Mutable strings — performance ke liye zaroori!

📖 String vs StringBuilder vs StringBuffer

FeatureStringStringBuilderStringBuffer
Mutable?NoYesYes
Thread-safe?YesNoYes
Performance (loops)Slow ❌Fast ⚡Medium
Use WhenFixed valuesSingle threadMulti-thread
Rule: Loop ke andar String concatenation (s += "x") AVOID karo! Hamesha StringBuilder use karo — 100x faster hai!
StringBuilder1.java
Program 1
▶ Output
Iterations : 50000 String time : 1200 ms ← bahut slow! StringBuilder : 2 ms ← blazing fast! ⚡ Both equal? : true
StringBuilder2.java
Program 2
▶ Output
Initial : Hello append : Hello World! insert(6) : Hello Java World! delete : Hello World! replace : Hi World! reverse : !dlroW iH setCharAt : Hi World! deleteAt : H World! length : 8 charAt(0) : H
StringBuilder3.java
Program 3
▶ Output
Java Backend Development 2024 Original: HelloWorld Reversed: dlroWolleH Palindrome check: madam → ✅ Palindrome racecar → ✅ Palindrome hello → ❌ Not Palindrome level → ✅ Palindrome
StringBuilder4.java
Program 4
▶ Output
<ul class="topics"> <li>Java Basics</li> <li>OOP Concepts</li> <li>String Class</li> <li>Collections</li> </ul> Query: SELECT * FROM users WHERE 1=1 AND name = 'Rahul' AND city = 'Indore' AND age >= 18;
StringBuilder5.java
Program 5
▶ Output
StringBuffer: ⚡ Thread-Safe firstIndexOf : 0 lastIndexOf : 19 substring(8,12): Java ╔═══════════════════════════════════════════╗ ║ Use String → Fixed/readonly values║ ║ Use StringBuilder → Single thread, loops║ ║ Use StringBuffer → Multi-thread apps ║ ╚═══════════════════════════════════════════╝
🔵

Topic 7: Type Conversion Methods

Primitives ko String mein aur String ko primitives mein convert karna

📖 Key Conversions

  • Primitive → String: String.valueOf(x) — recommended way for all types
  • String → int: Integer.parseInt("123")
  • String → double: Double.parseDouble("3.14")
  • String → boolean: Boolean.parseBoolean("true")
  • Special: Integer.toBinaryString(10), toHexString(), toOctalString()
⚠️ Exception: Integer.parseInt("abc")NumberFormatException! Invalid input ke liye hamesha try-catch use karo!
StringConversion1.java
Program 1
▶ Output
42 3.14 true A Decimal : 255 Binary : 1010 Hex : ff Octal : 10 int : 124 ← arithmetic works! double : 199.98 boolean: true long : 9876543210
StringConversion2.java
Program 2
▶ Output
Safe parseInt results: "123" → ✅ 123 "456.78" → ❌ Not valid int "hello" → ❌ Not valid int "99" → ✅ 99 "" → ❌ Not valid int "2147483648" → ❌ Not valid int ← int overflow! isNumeric check: 42 → ✅ Numeric 3.14 → ✅ Numeric -99 → ✅ Numeric abc → ❌ Not numeric
StringConversion3.java
Program 3
▶ Output
=== Simple Calculator === 45 + 67 = 112 100 - 37 = 63 12 * 8 = 96 100 / 4 = 25 Price : ₹1499.99 Discount : ₹269.99 Final : ₹1230.00
StringConversion4.java
Program 4
▶ Output
Bytes of "Java": 74 97 118 97 From bytes: Java SwapCase: Hello World → hELLO wORLD int max: 2147483647 long max: 9223372036854775807 Big sum : 18888888887
StringConversion5.java
Program 5
▶ Output
Hello Rahul! Score: 92/100. Grade: A+ ╔══════════════════════════════╗ ║ Name Score Grade ║ ╠══════════════════════════════╣ ║ Rahul 85 A ║ ║ Priya 92 A+ ║ ║ Amit 67 B ║ ║ Deepa 78 B+ ║ ║ Vikram 55 C ║ ╠══════════════════════════════╣ ║ Average: 75.4 ║ ╚══════════════════════════════╝
🩷

Topic 8: Interview Programs

Exam aur interview mein aane wale classic String problems

📖 Common Approaches

  • Two-pointer — Palindrome, reverse check (start+end)
  • indexOf loop — Sabhi occurrences dhundne ke liye
  • Sort + Compare — Anagram check
  • StringBuilder — String building operations
  • charAt + frequency — Character counting
StringInterview1.java
Program 1
▶ Output
First non-repeating in "aabcddbe": 'c' Remove duplicates: programming → progamin "abcde" rotation of "cdeab": true
StringInterview2.java
Program 2
▶ Output
Original : aaabbbccddddee Compressed: a3b3c2d4e2 Shorter? : true Original : Java is very powerful Reversed : powerful very is Java Longest word: programming
StringInterview3.java
Program 3
▶ Output
Strings: flower, flow, flight Longest common prefix: "fl" All unique chars: abcdef → ✅ All unique backend → ❌ Has duplicates java → ❌ Has duplicates swift → ✅ All unique
StringInterview4.java
Program 4
▶ Output
Count of "to": 2 Palindrome results: madam → ✅ java → ❌ level → ✅ backend → ❌ racecar → ✅ civic → ✅ "Hello World JAVA 2024!" Upper=7 Lower=7 Digit=4 Space=2 Other=1
StringInterview5.java
Program 5
▶ Output
Pangram: ✅ "The quick brown fox jumps over the lazy..." Pangram: ❌ (missing: bcdfhijkmnopqruvwxyz) "Java is the best programming language" Sentence: Hello, Java World! How are you? Punctuations: 3

📋 String Methods — Quick Reference

length()
Total characters ki count
→ int
charAt(i)
Index i par ka character
→ char
indexOf(x)
Pehli occurrence ka index (-1 if not found)
→ int
lastIndexOf(x)
Aakhri occurrence ka index
→ int
substring(s,e)
s se e-1 tak extract (end excluded)
→ String
toUpperCase()
Sabhi chars UPPERCASE mein
→ String
toLowerCase()
Sabhi chars lowercase mein
→ String
trim()
Leading/trailing spaces remove
→ String
strip() ☕11
trim() + Unicode whitespace support
→ String
replace(old,new)
Sabhi occurrences replace karo
→ String
replaceAll(rx,n)
Regex pattern se replace
→ String
split(delim)
Delimiter se todna → array
→ String[]
equals(s)
Content compare (case-sensitive)
→ boolean
equalsIgnoreCase
Case ignore karke compare
→ boolean
compareTo(s)
Lexicographic: neg/0/pos
→ int
contains(s)
Substring hai ya nahi?
→ boolean
startsWith(s)
Is prefix se shuru hai?
→ boolean
endsWith(s)
Is suffix se khatam hai?
→ boolean
isEmpty()
length == 0?
→ boolean
isBlank() ☕11
Empty ya sirf whitespace?
→ boolean
toCharArray()
char[] mein convert karo
→ char[]
String.valueOf(x)
Koi bhi type → String
→ String
String.join(d,...)
Parts ko delimiter se jodo
→ String
String.format(p)
Printf-style formatted string
→ String
intern()
String Pool mein daalo
→ String
matches(regex)
Full string regex se match?
→ boolean
repeat(n) ☕11
n baar repeat karo
→ String
getBytes()
byte[] mein convert karo
→ byte[]

⭐ Exam Tips — Yeh ZAROOR yaad rakho!

✅ String IMMUTABLE hai — koi bhi method NAYA object banata hai
✅ String literal → String Pool | new String() → Heap
== sirf reference | .equals() content compare
✅ substring(start, end) mein end index EXCLUDED hai
✅ indexOf() return karta hai -1 agar nahi mila
✅ Loop mein String concat SLOW → StringBuilder use karo
✅ StringBuilder = fast, single-thread | StringBuffer = thread-safe
✅ split(".") GALAT → split("\\.") sahi hai!
✅ Null String pe method → NullPointerException!
✅ Null-safe: "Java".equals(str) — literal pehle!
✅ compareTo(): negative=pehle, 0=equal, positive=baad
✅ parseInt("abc") → NumberFormatException → try-catch!

⚠️ Common Mistakes — Exam mein yeh mat karo!

Mistake❌ Galat✅ Sahi
String comparisonif (s1 == s2)if (s1.equals(s2))
Null-safe compares.equals("Java") ← NPE if null"Java".equals(s) ← safe
substring end indexsubstring(0,4) = 5 chars sochnasubstring(0,4) = 4 chars (0,1,2,3)
Loop concatenationfor(...) s += "x"; ← slow!sb.append("x");
parseInt on floatparseInt("12.5") → Exception!parseDouble("12.5") = 12.5
split dotsplit(".") → empty result!split("\\.") → correct
Immutability forgets.toUpperCase(); ← s unchanged!s = s.toUpperCase(); ← assign back