💡 Final vs Immutable in Java – Why You Can’t Convert a Final Variable to Immutable Ever got confused when asked in interviews: If I declare a StringBuffer as final, does it become immutable Here’s the truth 1️⃣ final is about the variable reference You cannot reassign the variable But you can modify the object it points to Example: final StringBuffer sb = new StringBuffer("Java") sb.append(" Easy") System.out.println(sb) // Output → Java Easy ✅ Even though sb is final, we can append/change content ❌ But if we try sb = new StringBuffer("is") → compilation error 2️⃣ immutable is about the object itself Its state cannot be changed once created Example: String → String s = "Java"; s.concat(" Easy"); → original s is still "Java" 💡 Analogy: Think of final as locking the address of a house – you cannot move to a new house, but you can renovate inside freely Immutable is like a museum – nothing inside can ever change ⚡ Key takeaway for interviews → Declaring a variable final does not make the object immutable ✨ Keep coding, keep experimenting, your next aha moment is just one line of code away #Java #JavaTips #CodingLife #Programming #SoftwareDevelopment #LearnJava #Immutable #Final #CareerGrowth #DeveloperTips #TechInterview
Java Final vs Immutable: Variable Reference vs Object State
More Relevant Posts
-
🔥 Day 11: Comparable vs Comparator (Java) One of the most important concepts for sorting in Java — especially for interviews 👇 🔹 1. Comparable 👉 Definition: Defines the natural (default) sorting of objects inside the class itself. ✔ Found in java.lang ✔ Uses compareTo() method ✔ Only one sorting logic per class 🔹 2. Comparator 👉 Definition: Defines custom sorting logic outside the class. ✔ Found in java.util ✔ Uses compare() method ✔ Supports multiple sorting logics 🔹 When to Use? ✔ Comparable → when class has natural/default order ✔ Comparator → when you need multiple or dynamic sorting 💡 Real-Life Analogy: Comparable = Default rule 📏 Comparator = Custom rule 🎯 📌 Final Thought: "Comparable gives you one way to sort, Comparator gives you many." #Java #Comparable #Comparator #Programming #JavaDeveloper #Coding #InterviewPrep #Day11
To view or add a comment, sign in
-
-
💡 Java Interview Question – Immutable Strings Trap What will be the output? String s = "Java"; s.replace("J", "K"); System.out.println(s); 🤔 Options: A) Kava B) Java C) Compilation Error D) Runtime Exception --- ✅ Correct Answer: B) Java --- 🔍 Explanation: In Java, String is immutable. That means once a String object is created, it cannot be modified. 👉 The "replace()" method does not change the original string, it returns a new modified string. But here’s the catch 👇 s.replace("J", "K"); We are not assigning the result back to "s", so the original value remains unchanged. --- 💡 Correct way to modify: s = s.replace("J", "K"); System.out.println(s); // Output: Kava --- 🚀 Key Takeaway: Always remember: 👉 Strings in Java are immutable → Reassignment is required for changes --- #Java #JavaInterview #Coding #BackendDevelopment #Programming #InterviewPrep
To view or add a comment, sign in
-
A simple Java interview question 👇 class Main { public static void main(String[] args) { String name = "Hello"; String b = new String("Hello"); String c = name; String d = b; System.out.println(name == b); System.out.println(name == c); } } I was asked this in an interview and it’s a perfect example of how fundamentals matter more than complexity. Most people expect both outputs to be true. But the actual result is: false true 💡 Why? Because in Java: 🔹 "Hello" is stored in the String Pool (optimized memory) 🔹 new String("Hello") creates a new object in Heap 🔹 c = name → same reference 🔹 d = b → same reference ⚡ The key insight: == compares memory reference, not content 👉 name == b → false (different objects) 👉 name == c → true (same object) If you actually want to compare values: name.equals(b); // true 📌 What this question really tests: Not syntax. Not memorization. But your understanding of how Java handles memory. #Java #CodingInterview #SoftwareEngineering #Programming #Developers #TechCareers
To view or add a comment, sign in
-
🌟 Hello Shining Stars!!! 🙏 💡 Java Type Promotion Hierarchy (Must-Know for Developers) Understanding type promotion is key to avoiding subtle bugs in Java 👇 🔼 Hierarchy (Widening Conversion): byte → short → int → long → float → double char → int → long → float → double ⚡ Golden Rules: 👉 byte, short, and char are automatically promoted to int in expressions 👉 Result = largest data type in the expression 👉 ✅ Promotion (widening) is automatic 👉 ❌ De-promotion (narrowing) is NOT automatic — requires explicit casting 🚨 Edge Case Examples (Tricky but Important): byte a = 10; byte b = 20; byte c = a + b; // ❌ Compilation Error // a + b becomes int → cannot store in byte without casting int x = 130; byte b = (byte) x; // ⚠️ Explicit cast (data loss) // Output will be -126 due to overflow char ch = 'A'; System.out.println(ch + 1); // Output: 66 // 'A' → 65 → promoted to int 🧠 Method vs Constructor Promotion (Important Interview Point): void test(int x) { System.out.println("int method"); } void test(double x) { System.out.println("double method"); } test(10); // Calls int method (exact match preferred over promotion) 👉 In methods, Java allows type promotion during overload resolution 👉 But constructors don’t “prefer” promotion the same way — exact match is prioritized, and ambiguous cases can lead to compilation errors 🎯 Takeaway: Java silently promotes smaller types, but it never automatically demotes them — and overload resolution can surprise you! #Java #Programming #Developers #Coding #InterviewPrep #TechTips 👍 Like | 🔁 Repost | 🔄 Share | 💬 Comment | 🔔 Follow | 🤝 Connect to grow together
To view or add a comment, sign in
-
🚀 LinkedHashMap = Built-in LRU Cache in Java If you’ve ever implemented an LRU Cache in interviews, this is your shortcut 👇 What is it? LinkedHashMap maintains insertion order (or access order) using a doubly linked list + hash table. With a small tweak, it behaves exactly like an LRU Cache. Why use it? • No need to manually manage DLL + HashMap • O(1) get & put operations • Clean and interview-friendly implementation How it works (LRU mode) Set accessOrder = true → recently accessed items move to the end Example 👇 import java.util.*; class LRUCache<K, V> extends LinkedHashMap<K, V> { private final int capacity; public LRUCache(int capacity) { super(capacity, 0.75f, true); // accessOrder = true this.capacity = capacity; } @Override protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { return size() > capacity; // remove least recently used } } Usage 👇 LRUCache<Integer, String> cache = new LRUCache<>(3); cache.put(1, "A"); cache.put(2, "B"); cache.put(3, "C"); cache.get(1); // access → 1 becomes recent cache.put(4, "D"); // removes key 2 (LRU) Flow 🧠 1️⃣ Insert → goes to end 2️⃣ Access → moves to end 3️⃣ Capacity full → remove from start (LRU) Result Efficient LRU cache in just ~10 lines of code ✅ Rule of Thumb 👉 If interviewer asks LRU → First say DLL + HashMap, then optimize using LinkedHashMap 👉 If you are preparing for Java backend interviews, connect & follow - I share short, practical backend concepts regularly. #Java #DSA #BackendDevelopment #SystemDesign #CodingInterview
To view or add a comment, sign in
-
-
Day 4 One of the questions from my recent interview was to reverse each word in a string. It’s a small problem, but it really makes you think about string manipulation and iteration. Simple problem, but good test of core concepts ================================================= // Online Java Compiler // Use this editor to write, compile and run your Java code online class Main { public static void main(String[] args) { String s="Hello world from java language"; String [] words=s.split(" "); String revString=""; for(String w:words) { String reverseWord=""; for(int i=w.length()-1; i>=0;i--) { reverseWord=reverseWord+w.charAt(i); } revString=revString+reverseWord+" "; } System.out.println(revString); } } Output :olleH dlrow morf avaj egaugnal #Java #InterviewQuestion #CodingPractice #Learning #Developers
To view or add a comment, sign in
-
-
🚀 Most Asked Core Java Interview Questions (Part 2) Continuing from Part 1 — more frequently asked questions 👇 🔹 Multithreading Questions Thread vs Process What happens if you call run() instead of start()? What if you don’t override run()? Thread lifecycle Class level lock vs Object level lock Race condition (with example) Deadlock (with example) Runnable vs Callable ThreadLocal wait vs sleep notify vs notifyAll yield, join Why wait/notify/notifyAll present in Object class? 🔹 Concurrency & Advanced Synchronization ReentrantLock Semaphore CyclicBarrier CompletableFuture vs Future ThreadPoolExecutor (internal working) FixedThreadPool vs CachedThreadPool BlockingQueue 🔹 Coding Questions (Threads) Print even/odd using two threads Producer-Consumer problem Print numbers (0–N) using 3 threads (mod 3) Print ABCABC using 3 threads 🔹 Collections ArrayList vs LinkedList HashMap internal working HashSet vs LinkedHashSet ConcurrentHashMap vs HashMap ConcurrentHashMap vs Hashtable TreeMap vs TreeSet Comparable vs Comparator Iterator vs ListIterator vs Enumeration ConcurrentModificationException Default size of ArrayList 🔹 Advanced Collections Immutable Map WeakHashMap vs IdentityHashMap HashSet internal working If a class has ArrayList, how to make it immutable 🔹 Design Singleton class Double locking How to break Singleton 💡 Save this for revision — these are highly repeated interview questions 🔥 #Java #CoreJava #Multithreading #Collections #InterviewPreparation
To view or add a comment, sign in
-
Java Collection Methods Useful for LeetCode Interviews https://lnkd.in/eaFH_6qv Subscribe and join 6.9k Java & spring boot devs and recieve handbook containing 100 useful resources : https://lnkd.in/gwiRqWBV
To view or add a comment, sign in
-
-
🚀 Can you find the first non-repeating character in a string? Here’s a simple Java approach 👇 String str = "aabbcd"; for(int i = 0; i < str.length(); i++) { boolean unique = true; for(int j = 0; j < str.length(); j++) { if(i != j && str.charAt(i) == str.charAt(j)) { unique = false; break; } } if(unique) { System.out.println(str.charAt(i)); break; } } 💡 Output: c 🔍 How it works: For each character, we check if it appears anywhere else in the string If it appears → not unique ❌ If it does NOT appear → first non-repeating character ✅ 👉 Time Complexity: O(n²) 💭 Interview Insight: This question is commonly asked to test your understanding of: ✔ Strings ✔ Nested loops ✔ Logic building 📌 Bonus: Can you optimize this to O(n) using HashMap? 👀 Drop your approach in comments 👇 #Java #Coding #DSA #InterviewPrep #Developers #100DaysOfCode
To view or add a comment, sign in
-
Java interview question on Memory Leaks — here's everything you need to know! Had a great technical interview recently where Memory Leaks came up as a deep-dive topic. Here's a concise breakdown that I think every Java developer should know 🔍 What is a Memory Leak in Java? A memory leak happens when objects are no longer needed by the application, but the Garbage Collector (GC) cannot reclaim them — because references still exist. The JVM keeps them in heap, and over time, this causes OutOfMemoryError. ⚠️ Common Causes 1. Static fields holding object references 2. Unclosed resources (streams, connections, sessions) 3. Listeners / callbacks never removed 4. Inner classes holding implicit reference to outer class 5. ThreadLocal variables not cleaned up 6. Caches without eviction policies 🛠️ How to Detect It 1. JVisualVM / JConsole — monitor heap usage over time 2. Eclipse MAT (Memory Analyzer Tool) — analyze heap dumps 3. YourKit / JProfiler — commercial profilers, powerful for production 4. verbose:gc JVM flag — observe GC behavior 5. Heap dumps with jmap -dump:live,format=b,file=heap.hprof <pid> ✅ How to Fix / Prevent It 1. Use WeakReference / SoftReference for caches 2. Always close resources with try-with-resources 3. Remove listeners when done 4. Avoid unnecessary static references 5. Use tools like Caffeine / Guava Cache with TTL/max-size 6. Review ThreadLocal.remove() usage in thread pools Memory leaks are silent killers in production. If you're preparing for Java interviews — bookmark this. Drop a comment if you've faced memory leak issues in production. Let's learn together! 🙌 #Java #JavaDeveloper #MemoryLeak #JVM #PerformanceTuning #JavaInterview #SoftwareEngineering #Programming #TechInterview #BackendDevelopment #ProductionIssue #Interview #MemoryLeaks #Spring
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development
⚡ Key takeaway for interviews → Declaring a variable final does not make the object immutable