🚀 Day 1/100 – Java Practice Challenge Today I started my #100DaysOfCode journey focusing on core Java concepts. 🔹 Topics Covered: Java Access Modifiers Understanding private, default, protected, public How visibility works across classes 💻 Practice Code: 🔸 1. Private (accessible only within same class) class PrivateExample { private int value = 10; public static void main(String[] args) { PrivateExample obj = new PrivateExample(); System.out.println(obj.value); // ✅ accessible inside same class } } 🔸 2. Default (accessible within same package) class DefaultExample { int value = 20; // default public static void main(String[] args) { DefaultExample obj = new DefaultExample(); System.out.println(obj.value); // ✅ same package } } 🔸 3. Protected (same package + child class) class ProtectedExample { protected int value = 30; } class Child extends ProtectedExample { public static void main(String[] args) { Child obj = new Child(); System.out.println(obj.value); // ✅ inherited access } } 🔸 4. Public (accessible everywhere) class PublicExample { public int value = 40; public static void main(String[] args) { PublicExample obj = new PublicExample(); System.out.println(obj.value); // ✅ accessible everywhere } } 📌 Key Learning: private → accessible only within the same class default → accessible within the same package protected → same package + inheritance public → accessible from anywhere Access modifiers are used to control visibility and secure data in Java. #100DaysOfCode #Java #JavaDeveloper #CodingJourney #LearningInPublic #Programming
Java Access Modifiers Explained
More Relevant Posts
-
🚀 Day 3/100 – Java Practice Challenge Continuing my #100DaysOfCode journey with another important core Java concept. 🔹 Topics Covered: Generics in Java Understanding type safety, reusability, and avoiding runtime errors. 💻 Practice Code: 🔸 Generic Class Example class Box { private T value; public void set(T value) { this.value = value; } public T get() { return value; } } 🔸 Usage Box intBox = new Box<>(); intBox.set(10); Box strBox = new Box<>(); strBox.set("Hello"); System.out.println(intBox.get()); // 10 System.out.println(strBox.get()); // Hello 📌 Key Learning: ✔ Generics provide compile-time type safety ✔ Avoid ClassCastException ✔ Help write reusable and clean code ⚠️ Important: • Use <?> for unknown types (wildcards) • Use for bounded types • Generics work only with objects, not primitives 🔥 Interview Insight: Generics use type erasure — type information is removed at runtime Widely used in collections like List, Map<K, V> 👉 Without Generics: List list = new ArrayList(); list.add("Java"); list.add(10); // No compile-time error ❌ #100DaysOfCode #Java #JavaDeveloper #Generics #CodingJourney #LearningInPublic #Programming
To view or add a comment, sign in
-
🚀 Java 8 changed everything — and this is one of the biggest reasons why. While deepening my understanding of Java internals, I spent time breaking down Anonymous Inner Classes, Functional Interfaces, and Lambda Expressions — three concepts that completely change how you write Java. At first, it feels like just syntax. But when you look closer, it’s really about how Java represents and handles behavior. 🔹 Anonymous Inner Class Allows us to declare and instantiate a class at the same time—without giving it a name. Useful when the implementation is needed only once. Greeting greeting = new Greeting() { public void greet(String name) { System.out.println("Welcome " + name); } }; ⚠️ Cons: -> Code is bulky -> Can only access effectively final variables -> Harder for the JVM to optimize 🔹 Functional Interface An interface with exactly one abstract method. Can still have multiple default and static methods. @FunctionalInterface public interface Greeting { void greet(String name); } 🔹 Lambda Expression (Java 8+) A more compact way to represent behavior — like an anonymous method. name -> System.out.println("Welcome " + name); 💡 What stood out to me: ⚙️ Anonymous Class → multiple lines ⚙️ Lambda Expression → one line Same logic, less noise — that’s where modern Java stands out.” #Java #LambdaExpressions #FunctionalInterface #BackendDevelopment #CleanCode #Java8 #SoftwareEngineering
To view or add a comment, sign in
-
📘 Day 9 of Java Learning Series 🔹 String vs StringBuilder vs StringBuffer If you're working with text in Java, understanding these 3 is very important 👇 🔸 1. String ✔ Immutable (cannot be changed) ✔ Every modification creates a new object ✔ Slower when modifying frequently 💡 Example: String s = "Hello"; s = s + " World"; 🔸 2. StringBuilder ✔ Mutable (can be changed) ✔ Faster than String ✔ Not thread-safe 💡 Example: StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); 🔸 3. StringBuffer ✔ Mutable ✔ Thread-safe (synchronized) ✔ Slightly slower than StringBuilder 💡 Example: StringBuffer sbf = new StringBuffer("Hello"); sbf.append(" World"); 🔸 Key Differences: ✔ String → Immutable ✔ StringBuilder → Fast & Non-Synchronized ✔ StringBuffer → Thread-Safe 💡 When to Use? ✔ Use String → when data doesn’t change ✔ Use StringBuilder → for performance (most cases) ✔ Use StringBuffer → in multi-threaded apps 💬 Which one do you use the most? 👉 Follow me for more Java content 🚀 #Java #Programming #100DaysOfCode #Developers #Learning #CoreJava
To view or add a comment, sign in
-
-
🚀 Starting My Java Learning Journey – Day 12 🔹 Topic: StringBuilder vs StringBuffer in Java In Java, StringBuilder and StringBuffer are used to create mutable (modifiable) strings, unlike String which is immutable. StringBuilder ✔ Not thread-safe ✔ Faster performance ✔ Used in single-threaded applications StringBuffer ✔ Thread-safe (synchronized) ✔ Slower than StringBuilder ✔ Used in multi-threaded applications 🔷 Program: public class Main { public static void main(String[] args) { StringBuilder sb = new StringBuilder("Hello"); sb.append(" World"); System.out.println("StringBuilder: " + sb); StringBuffer sbf = new StringBuffer("Hello"); sbf.append(" Java"); System.out.println("StringBuffer: " + sbf); } } Output: StringBuilder: Hello World StringBuffer: Hello Java 💡 Key Points: ✔ String → Immutable ✔ StringBuilder → Mutable & Fast ✔ StringBuffer → Mutable & Thread-safe #Java #JavaLearning #Programming #BackendDevelopment #CodingJourney #StringBuilder #StringBuffer
To view or add a comment, sign in
-
Hello Connections, Post 18 — Java Fundamentals A-Z This one makes your code 10x cleaner. Most developers avoid it. 😱 Can you spot the difference? 👇 // ❌ Before Java 8 — verbose and painful! List<String> names = Arrays.asList( "Charlie", "Alice", "Bob" ); Collections.sort(names, new Comparator<String>() { @Override public int compare(String a, String b) { return a.compareTo(b); } }); 8 lines. Just to sort a list. 😬 // ✅ With Lambda — clean and powerful! Collections.sort(names, (a, b) -> a.compareTo(b)); // ✅ Done! // Even cleaner with method reference! names.sort(String::compareTo); // ✅ One liner! // Real example! transactions.stream() .filter(t -> t.getAmount() > 10000) // Lambda! .forEach(t -> System.out.println(t)); // Lambda! Lambda = anonymous function // Structure of a Lambda (parameters) -> expression // Examples () -> System.out.println("Hello") // No params (n) -> n * 2 // One param (a, b) -> a + b // Two params (a, b) -> { // Block body int sum = a + b; return sum; } Post 18 Summary: 🔴 Unlearned → Writing verbose anonymous classes for simple operations 🟢 Relearned → Lambda = concise anonymous function — write less do more! 🤯 Biggest surprise → Replaced 50 lines of transaction processing code with 5 lines using Lambdas! Have you started using Lambdas? Drop a λ below! #Java #JavaFundamentals #BackendDevelopment #LearningInPublic #SDE2 Follow along for more! 👇
To view or add a comment, sign in
-
-
I recently explored a subtle but important concept in Java constructor execution order. Many developers assume constructors simply initialize values, but the actual lifecycle is more complex. In this article, I explain: • The real order of object creation • Why overridden methods can behave unexpectedly • A common bug caused by partial initialization This concept is especially useful for interviews and writing safer object-oriented code. Medium Link: https://lnkd.in/gtRhpdfP #Java #OOP #SoftwareDevelopment #Programming
To view or add a comment, sign in
-
Next Step in My Java Journey: Understanding the Java ClassLoader While learning how Java works internally, I discovered something very interesting — ClassLoaders. Whenever we run a Java program, the JVM needs to load the ".class" files into memory before executing them. This task is handled by the ClassLoader subsystem. But here's the interesting part: Java doesn't use just one class loader — it uses three main ClassLoaders. 🔹 Bootstrap ClassLoader Loads core Java classes like "java.lang", "java.util", etc. These are the fundamental classes required for every Java program. 🔹 Extension ClassLoader Loads classes from the Java extension libraries. 🔹 Application ClassLoader Loads the classes that we write in our Java applications. 📌 How it works When we run a program: "Hello.class" → Application ClassLoader → JVM loads it → Program executes 💡 Interesting fact Java uses a mechanism called Parent Delegation Model, where a class loader first asks its parent to load the class before loading it itself. This improves security and avoids duplicate class loading. Learning these internal concepts makes Java even more fascinating. #Java #JVM #ClassLoader #Programming #SoftwareDevelopment #LearnJava #DeveloperJourney
To view or add a comment, sign in
-
-
Day 11/100 – Java Practice Challenge 🚀 Continuing my #100DaysOfCode journey with another important Java concept. 🔹 Topic Covered: Compile-time vs Runtime Polymorphism 💻 Practice Code: 🔸 Compile-time Polymorphism (Method Overloading) class Calculator { int add(int a, int b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } } 🔸 Runtime Polymorphism (Method Overriding) class Animal { void sound() { System.out.println("Animal sound"); } } class Cat extends Animal { @Override void sound() { System.out.println("Cat meows"); } } public class Main { public static void main(String[] args) { // Compile-time Calculator c = new Calculator(); System.out.println(c.add(10, 20)); System.out.println(c.add(10, 20, 30)); // Runtime Animal a = new Cat(); a.sound(); } } 📌 Key Learnings: ✔️ Compile-time → method decided at compile time ✔️ Runtime → method decided at runtime ✔️ Overloading vs Overriding difference 🎯 Focus: Understanding how Java resolves method calls 🔥 Interview Insight: Difference between compile-time and runtime polymorphism is one of the most frequently asked Java interview questions. #Java #100DaysOfCode #MethodOverloading #MethodOverriding #Polymorphism #JavaDeveloper #Programming #LearningInPublic
To view or add a comment, sign in
-
💎 Understanding the Diamond Problem in Java (and how Java solves it!) Ever heard of the Diamond Problem in Object-Oriented Programming? 🤔 It happens in multiple inheritance when a class inherits from two classes that both have the same method. The Problem Structure: Class A → has a method show() Class B extends A Class C extends A Class D extends B and C Now the confusion is: Which show() method should Class D inherit? This creates ambiguity — famously called the Diamond Problem Why Java avoids it? Java does NOT support multiple inheritance with classes. So this problem is avoided at the root itself. But what about Interfaces? Java allows multiple inheritance using interfaces, but resolves ambiguity smartly. If two interfaces have the same default method, the implementing class must override it. Example: interface A { default void show() { System.out.println("A"); } } interface B { default void show() { System.out.println("B"); } } class C implements A, B { public void show() { A.super.show(); // or B.super.show(); } } Key Takeaways: No multiple inheritance with classes in Java Multiple inheritance allowed via interfaces Ambiguity is resolved using method overriding Real Insight: Java doesn’t just avoid problems — it enforces clarity. #Java #OOP #Programming #SoftwareDevelopment #CodingInterview #TechConcepts
To view or add a comment, sign in
-
Day 8 of Java Series ☕💻 Today we dive into one of the most important real-world concepts in Java — Exception Handling 🚨 👉 Exception Handling is used to handle runtime errors so that the normal flow of the program can be maintained. 🧠 What is an Exception? An Exception is an unwanted event that occurs during program execution and disrupts the normal flow of the program. ⚙️ Types of Exceptions: Checked Exceptions (Compile-time) Example: IOException, SQLException Unchecked Exceptions (Runtime) Example: ArithmeticException, NullPointerException Errors Example: StackOverflowError, OutOfMemoryError 🛠️ Exception Handling Keywords: try → Code that may throw exception catch → Handles the exception finally → Always executes (cleanup code) throw → Used to explicitly throw exception throws → Declares exceptions 💻 Example Code: Java Copy code public class Main { public static void main(String[] args) { try { int a = 10 / 0; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero!"); } finally { System.out.println("Execution Completed"); } } } ⚡ Custom Exception: You can create your own exception by extending Exception class. Java Copy code class MyException extends Exception { MyException(String msg) { super(msg); } } 🎯 Why Exception Handling is Important? ✔ Prevents program crash ✔ Maintains normal flow ✔ Improves debugging ✔ Makes code robust 🚀 Pro Tip: Always catch specific exceptions instead of generic ones for better debugging! 📢 Hashtags: #Java #ExceptionHandling #JavaSeries #Programming #CodingLife #LearnJava #Developers #Tech
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