1. Difference between JDK, JRE, and JVM
JDK (Java Development Kit)
- Full package for Java development
- Includes JRE + development tools (compiler, debugger)
- Used to write and compile Java programs
JRE (Java Runtime Environment)
- Provides environment to run Java programs
- Includes JVM + libraries
- Used to execute Java programs
JVM (Java Virtual Machine)
- Executes Java bytecode
- Converts bytecode into machine code
- Platform independent
Flow:
Java Code → Compiled by JDK → Bytecode → Executed by JVM (inside JRE)
2. Data Types in Java (Primitive vs Non-Primitive)
Primitive Data Types
- int, float, char, boolean, byte, short, long, double
- Store actual values
- Fixed size
- Faster performance
Example:
int a = 10;
char c = 'A';
boolean flag = true;
Non-Primitive Data Types
- String, Array, Class, Object
- Store reference (address)
- Can be null
- More flexible
Example:
String name = "Java";
int[] arr = {1, 2, 3};
3. String vs StringBuilder vs StringBuffer
String
- Immutable (cannot change)
- Thread-safe
- Slower when modifying
Example:
String s = "Hello";
s = s + " World";
StringBuilder
- Mutable
- Not thread-safe
- Faster
Example:
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
StringBuffer
- Mutable
- Thread-safe
- Slower than StringBuilder
Example:
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
Key Difference Table:
| Feature | String | StringBuilder | StringBuffer |
|---|---|---|---|
| Mutability | Immutable | Mutable | Mutable |
| Thread Safe | Yes | No | Yes |
| Performance | Slow | Fast | Medium |
4.Coding Questions
i. Reverse a String
Logic:
- Convert string to char array
- Swap characters from start and end
Code:
public class ReverseString {
public static void main(String[] args) {
String str = "hello";
String reversed = "";
for (int i = str.length() - 1; i >= 0; i--) {
reversed += str.charAt(i);
}
System.out.println(reversed);
}
}
ii. Check Palindrome String
Logic:
- Reverse the string
- Compare with original
Code:
public class Palindrome {
public static void main(String[] args) {
String str = "madam";
String reversed = "";
for (int i = str.length() - 1; i >= 0; i--) {
reversed += str.charAt(i);
}
if (str.equals(reversed)) {
System.out.println("Palindrome");
} else {
System.out.println("Not Palindrome");
}
}
}