<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kathirvel S</title>
    <description>The latest articles on DEV Community by Kathirvel S (@kathirvel-s).</description>
    <link>https://dev.to/kathirvel-s</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3689425%2F49462e6b-f95a-4bb0-b5e3-080ad3919937.jpeg</url>
      <title>DEV Community: Kathirvel S</title>
      <link>https://dev.to/kathirvel-s</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kathirvel-s"/>
    <language>en</language>
    <item>
      <title>From Java Methods to Method Overloading: A Complete Beginner's Guide to Compile-Time Polymorphism</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Mon, 01 Jun 2026 16:28:01 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/from-java-methods-to-method-overloading-a-complete-beginners-guide-to-compile-time-polymorphism-3egl</link>
      <guid>https://dev.to/kathirvel-s/from-java-methods-to-method-overloading-a-complete-beginners-guide-to-compile-time-polymorphism-3egl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When most beginners start learning Java, they spend a lot of time understanding variables, data types, classes, and objects. While these concepts are important, there is another concept that gives life to an object: &lt;strong&gt;methods&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine you have a mobile phone.&lt;/p&gt;

&lt;p&gt;The phone contains data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Brand&lt;/li&gt;
&lt;li&gt;Model&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Battery Percentage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But simply having data is not enough.&lt;/p&gt;

&lt;p&gt;A phone can also perform actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make a call&lt;/li&gt;
&lt;li&gt;Send a message&lt;/li&gt;
&lt;li&gt;Open an application&lt;/li&gt;
&lt;li&gt;Take a picture&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Object-Oriented Programming (OOP), data is represented using variables, while actions are represented using methods.&lt;/p&gt;

&lt;p&gt;Without methods, objects would simply hold information. They would not be able to perform any meaningful work.&lt;/p&gt;

&lt;p&gt;According to Oracle's Java Documentation, a method is a collection of statements that perform a specific operation. In simple terms, a method is a reusable block of code that performs a particular task.&lt;/p&gt;

&lt;p&gt;In this article, we will take a complete journey through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Objects and non-static variables&lt;/li&gt;
&lt;li&gt;Accessing methods through objects&lt;/li&gt;
&lt;li&gt;Understanding what methods are&lt;/li&gt;
&lt;li&gt;Learning every keyword used in method creation&lt;/li&gt;
&lt;li&gt;Return types and the &lt;code&gt;return&lt;/code&gt; keyword&lt;/li&gt;
&lt;li&gt;Parameters and arguments&lt;/li&gt;
&lt;li&gt;Common compile-time errors&lt;/li&gt;
&lt;li&gt;Method Overloading&lt;/li&gt;
&lt;li&gt;Compile-Time Polymorphism&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of this article, you will understand not only how methods work but also why Method Overloading is called Compile-Time Polymorphism.&lt;/p&gt;

&lt;p&gt;Let's begin from the very beginning.&lt;/p&gt;




&lt;h1&gt;
  
  
  Objects Access Non-Static Variables
&lt;/h1&gt;

&lt;p&gt;Before understanding methods, we must understand how objects interact with variables.&lt;/p&gt;

&lt;p&gt;Consider the following class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is called an &lt;strong&gt;instance variable&lt;/strong&gt; or &lt;strong&gt;non-static variable&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;According to Oracle Java Documentation, instance variables belong to an object instance. Every object created from a class gets its own copy of instance variables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner-Friendly Explanation
&lt;/h3&gt;

&lt;p&gt;Think of a class as a blueprint and an object as the real thing created from that blueprint.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class → Student&lt;/li&gt;
&lt;li&gt;Object → Rahul, Priya, Arjun&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every student object can have its own name.&lt;/p&gt;

&lt;p&gt;To access an instance variable, we need an object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Main&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rahul
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This follows the pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;variable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The object &lt;code&gt;s&lt;/code&gt; is being used to access the variable &lt;code&gt;name&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Beginner Error
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cannot find symbol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because &lt;code&gt;name&lt;/code&gt; belongs to the object, not directly to the main method.&lt;/p&gt;

&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key takeaway:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Non-static variables are accessed using &lt;code&gt;object.variable&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Objects Can Also Access Methods
&lt;/h1&gt;

&lt;p&gt;Objects do not only access variables.&lt;/p&gt;

&lt;p&gt;They can also access methods.&lt;/p&gt;

&lt;p&gt;Let's create a simple method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;study&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Student is studying"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create an object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call the method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;study&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student is studying
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This follows the pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Real-World Analogy
&lt;/h3&gt;

&lt;p&gt;Imagine a TV remote.&lt;/p&gt;

&lt;p&gt;When you press a button, an action happens.&lt;/p&gt;

&lt;p&gt;Similarly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;study&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;asks the object to perform the behavior called &lt;code&gt;study()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Methods are often called the &lt;strong&gt;behavior&lt;/strong&gt; of an object.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens If the Method Does Not Exist?
&lt;/h1&gt;

&lt;p&gt;Suppose we write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;play&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But inside Student:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;study&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no &lt;code&gt;play()&lt;/code&gt; method.&lt;/p&gt;

&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cannot find symbol
symbol: method play()
location: variable s of type Student
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Does This Error Occur?
&lt;/h3&gt;

&lt;p&gt;Java checks everything before running the program.&lt;/p&gt;

&lt;p&gt;The compiler asks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the class exist?&lt;/li&gt;
&lt;li&gt;Does the object exist?&lt;/li&gt;
&lt;li&gt;Does the method exist?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since &lt;code&gt;play()&lt;/code&gt; cannot be found, compilation fails.&lt;/p&gt;

&lt;p&gt;Important Rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A method must be declared before it can be called.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  What Exactly Is a Method?
&lt;/h1&gt;

&lt;p&gt;Oracle Documentation defines a method as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A collection of statements grouped together to perform an operation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Beginner-Friendly Definition
&lt;/h3&gt;

&lt;p&gt;A method is a reusable block of code that performs a specific task.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculating salary&lt;/li&gt;
&lt;li&gt;Printing information&lt;/li&gt;
&lt;li&gt;Finding the largest number&lt;/li&gt;
&lt;li&gt;Sending an email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without methods:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With methods:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Methods help achieve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusability&lt;/li&gt;
&lt;li&gt;Readability&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;li&gt;Modularity&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Creating Your First Method
&lt;/h1&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;printActivity&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Learning Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method prints a message.&lt;/p&gt;

&lt;p&gt;But what does each keyword mean?&lt;/p&gt;

&lt;p&gt;Let's break it down.&lt;/p&gt;




&lt;h1&gt;
  
  
  Understanding Every Keyword in a Method
&lt;/h1&gt;

&lt;h2&gt;
  
  
  public
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Official Meaning
&lt;/h3&gt;

&lt;p&gt;An access modifier that makes a member accessible from anywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner-Friendly Meaning
&lt;/h3&gt;

&lt;p&gt;Anyone can use this method.&lt;/p&gt;

&lt;p&gt;Think of it as an open door.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;printActivity&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;p&gt;"This method can be accessed by other classes."&lt;/p&gt;




&lt;h2&gt;
  
  
  void
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Official Meaning
&lt;/h3&gt;

&lt;p&gt;The method returns no value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Beginner-Friendly Meaning
&lt;/h3&gt;

&lt;p&gt;The method performs work but gives nothing back.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It prints something but does not return any value.&lt;/p&gt;




&lt;h2&gt;
  
  
  printActivity
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;printActivity&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the method name.&lt;/p&gt;

&lt;p&gt;Java uses the method name to identify which method to execute.&lt;/p&gt;

&lt;p&gt;Good method names should describe the action being performed.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;calculateSalary&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;sendEmail&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;printActivity&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bad examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;abc&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;xyz&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;doit&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Parentheses ()
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used to hold parameters.&lt;/p&gt;

&lt;p&gt;Currently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means no parameters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Curly Braces {}
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The method body.&lt;/p&gt;

&lt;p&gt;The actual statements execute inside these braces.&lt;/p&gt;




&lt;h1&gt;
  
  
  Return Types in Java
&lt;/h1&gt;

&lt;p&gt;Every method must specify what type of value it returns.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means the method returns an integer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Does Java Need a Return Type?
&lt;/h3&gt;

&lt;p&gt;Before compilation, Java must know:&lt;/p&gt;

&lt;p&gt;"What kind of value will this method send back?"&lt;/p&gt;

&lt;p&gt;That's why return types are mandatory.&lt;/p&gt;




&lt;h1&gt;
  
  
  Error: Missing Return Type
&lt;/h1&gt;

&lt;p&gt;Wrong:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;invalid method declaration; return type required
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;Java does not know what type of value will be returned.&lt;/p&gt;

&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding the return Keyword
&lt;/h1&gt;

&lt;p&gt;The keyword:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sends a value back to the caller.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Method Call
    ↓
Method Executes
    ↓
return 25
    ↓
Caller Receives 25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Do We Use void?
&lt;/h1&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The method simply performs an action.&lt;/p&gt;

&lt;p&gt;Nothing needs to be returned.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is used.&lt;/p&gt;

&lt;p&gt;Rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Do work only → void

Return value → int, String, double, boolean, etc.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Parameters and Arguments
&lt;/h1&gt;

&lt;p&gt;This is one of the most commonly confused topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Parameter
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;name&lt;/code&gt; is a parameter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Argument
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Rahul" is an argument.&lt;/p&gt;

&lt;p&gt;Simple rule:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Method Definition → Parameters

Method Call → Arguments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think of parameters as placeholders and arguments as actual values.&lt;/p&gt;




&lt;h1&gt;
  
  
  No-Argument Method
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Error: Passing an Argument to a No-Argument Method
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method greet cannot be applied to given types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  One-Parameter Method
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello Rahul
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Error: Missing Required Argument
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method greet cannot be applied to given types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;The method expects one argument but receives none.&lt;/p&gt;

&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;greet&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Two-Parameter Method
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Error: Passing One Argument Instead of Two
&lt;/h1&gt;

&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;method add cannot be applied to given types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  String Parameters
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;display&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Correct:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Error: Passing Wrong Data Type
&lt;/h1&gt;

&lt;p&gt;Method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;incompatible types
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reason:&lt;/p&gt;

&lt;p&gt;Method expects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;but receives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;display&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"100"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Method Overloading Exists
&lt;/h1&gt;

&lt;p&gt;Imagine a printing system.&lt;/p&gt;

&lt;p&gt;Without overloading:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;printInt&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;printString&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;printDouble&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;printTwoNumbers&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Too many method names.&lt;/p&gt;

&lt;p&gt;Difficult to remember.&lt;/p&gt;

&lt;p&gt;Java provides a cleaner solution.&lt;/p&gt;




&lt;h1&gt;
  
  
  Method Overloading
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;Method Overloading is the ability to define multiple methods with the same name but different parameter lists.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Printer&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"No Data"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No Data
10
Java
30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;Same method name.&lt;/p&gt;

&lt;p&gt;Different parameter lists.&lt;/p&gt;

&lt;p&gt;That is Method Overloading.&lt;/p&gt;




&lt;h1&gt;
  
  
  Rules of Method Overloading
&lt;/h1&gt;

&lt;p&gt;Valid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Invalid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;

&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changing only the return type is not overloading.&lt;/p&gt;

&lt;p&gt;The parameter list must be different.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is Compile-Time Polymorphism?
&lt;/h1&gt;

&lt;p&gt;The word polymorphism comes from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Poly = Many

Morph = Forms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One Name
Many Forms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All methods share the same name.&lt;/p&gt;

&lt;p&gt;But each has a different form.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Is Method Overloading Called Compile-Time Polymorphism?
&lt;/h1&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During compilation, Java checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The decision happens before the program runs.&lt;/p&gt;

&lt;p&gt;That means the compiler determines which method should execute.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Method Overloading
        ↓
Method Selected During Compilation
        ↓
Compile-Time Polymorphism
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is also called:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Static Polymorphism
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because the method resolution happens during compile time rather than runtime.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Summary
&lt;/h1&gt;

&lt;p&gt;In this article, we started with the fundamentals of objects and non-static variables. We learned how objects access data using the dot operator and how methods represent the behavior of an object.&lt;/p&gt;

&lt;p&gt;We explored what methods are, why they exist, and how they help us write reusable and maintainable code. We broke down every component of a method, including &lt;code&gt;public&lt;/code&gt;, &lt;code&gt;void&lt;/code&gt;, method names, parentheses, and method bodies.&lt;/p&gt;

&lt;p&gt;We then moved into return types and the &lt;code&gt;return&lt;/code&gt; keyword, understanding how methods can send values back to the caller. After that, we learned the difference between parameters and arguments and examined common compile-time errors that beginners frequently encounter.&lt;/p&gt;

&lt;p&gt;Finally, we reached Method Overloading. Instead of creating many methods with different names, Java allows us to use the same method name for multiple operations by changing the parameter list.&lt;/p&gt;

&lt;p&gt;This feature is called Method Overloading, and because Java determines the correct method during compilation, it is known as Compile-Time Polymorphism.&lt;/p&gt;

&lt;p&gt;The most important takeaway from this entire journey is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Method Overloading allows one method name to have multiple forms, and Java selects the correct form during compilation. This ability is what makes Method Overloading an example of Compile-Time Polymorphism.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Understanding methods thoroughly is one of the strongest foundations you can build as a Java developer. Almost every Java application—from simple console programs to enterprise-level systems—relies heavily on methods. Mastering them today will make advanced topics such as inheritance, runtime polymorphism, interfaces, and design patterns much easier to understand in the future.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Oracle Java Tutorials – Methods&lt;br&gt;
&lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Oracle Java Tutorials – Objects&lt;br&gt;
&lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/tutorial/java/javaOO/objects.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Java Language Specification – Methods&lt;br&gt;
&lt;a href="https://docs.oracle.com/javase/specs/" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/specs/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Oracle Java Tutorials – Passing Information to a Method or Constructor&lt;br&gt;
&lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to Find a Prime Number in Python — A Thinking Journey</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Mon, 01 Jun 2026 03:20:38 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/how-to-find-a-prime-number-in-python-a-thinking-journey-29d</link>
      <guid>https://dev.to/kathirvel-s/how-to-find-a-prime-number-in-python-a-thinking-journey-29d</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Understanding how to find prime numbers is one of the best ways to develop logical thinking in programming. It looks simple on the surface, but it teaches you how to break a problem into smaller steps, build a solution gradually, and then improve it into a clean and reusable structure.&lt;/p&gt;

&lt;p&gt;In this blog, we will not jump directly into code. Instead, we will start from basic thinking, slowly convert that thinking into logic, and finally refine it into a proper Python program using functions and loops. The goal is not just to find prime numbers, but to understand how programming logic is actually built in real development.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Understanding the Problem First
&lt;/h2&gt;

&lt;p&gt;Before writing anything in Python, we need to understand what a prime number actually means.&lt;/p&gt;

&lt;p&gt;A prime number is a number that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is greater than 1&lt;/li&gt;
&lt;li&gt;has exactly two divisors: 1 and itself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the real question becomes:&lt;/p&gt;

&lt;p&gt;How do we check whether a number has any divisors other than 1 and itself?&lt;/p&gt;

&lt;p&gt;That is the core problem we are trying to solve.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Thinking Like a Human Before Coding
&lt;/h2&gt;

&lt;p&gt;Let’s take a number, for example 13.&lt;/p&gt;

&lt;p&gt;To check if 13 is prime, we naturally try dividing it by smaller numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 → does not divide 13&lt;/li&gt;
&lt;li&gt;3 → does not divide 13&lt;/li&gt;
&lt;li&gt;4 → does not divide 13&lt;/li&gt;
&lt;li&gt;5 → does not divide 13&lt;/li&gt;
&lt;li&gt;and so on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If none of these numbers divide 13 completely, then 13 is prime.&lt;/p&gt;

&lt;p&gt;So the logic is simple:&lt;/p&gt;

&lt;p&gt;Try dividing the number by possible candidates and see if any divide it perfectly.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Turning Thinking into a Basic Algorithm
&lt;/h2&gt;

&lt;p&gt;From the above idea, we can form a basic structure:&lt;/p&gt;

&lt;p&gt;We need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a number to test&lt;/li&gt;
&lt;li&gt;a variable that moves through possible divisors&lt;/li&gt;
&lt;li&gt;a way to detect whether a divisor exists&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We start checking from 2 because every number is divisible by 1 anyway.&lt;/p&gt;

&lt;p&gt;We also do not need to check beyond half of the number, because a number cannot have a divisor greater than half (except itself).&lt;/p&gt;

&lt;p&gt;So the idea becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start divisor from 2&lt;/li&gt;
&lt;li&gt;Go up to number // 2&lt;/li&gt;
&lt;li&gt;If any number divides it evenly, it is not prime&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. First Working Logic (Direct Implementation)
&lt;/h2&gt;

&lt;p&gt;Now we translate the idea into Python.&lt;/p&gt;

&lt;p&gt;We introduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;number: the value we are testing&lt;/li&gt;
&lt;li&gt;divisor: the number we try dividing with&lt;/li&gt;
&lt;li&gt;divisor_count: how many divisors we find&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If divisor_count stays zero, the number is prime.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;13&lt;/span&gt;
&lt;span class="n"&gt;divisor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;divisor_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;divisor&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;divisor&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;divisor found:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;divisor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;divisor_count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="n"&gt;divisor&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;divisor_count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Prime&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Not Prime&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  ↓
Initialize number, divisor = 2, divisor_count = 0
  ↓
Check divisor &amp;lt;= number//2
  ↓
Is number divisible by divisor?
      ↓ Yes → increment divisor_count
      ↓ No  → continue
  ↓
Increase divisor
  ↓
Repeat loop
  ↓
If divisor_count == 0 → Prime
Else → Not Prime
  ↓
End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Understanding What Happens Here
&lt;/h2&gt;

&lt;p&gt;This logic works like a manual test:&lt;/p&gt;

&lt;p&gt;We are checking every possible divisor one by one.&lt;/p&gt;

&lt;p&gt;If even one divisor divides the number completely, we mark it as non-prime.&lt;/p&gt;

&lt;p&gt;Otherwise, it is prime.&lt;/p&gt;

&lt;p&gt;So effectively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No divisors found → Prime&lt;/li&gt;
&lt;li&gt;At least one divisor found → Not Prime&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. The Problem With This Approach
&lt;/h2&gt;

&lt;p&gt;Although this works, it has a major issue.&lt;/p&gt;

&lt;p&gt;If we want to check multiple numbers, we would need to repeat the same logic again and again.&lt;/p&gt;

&lt;p&gt;This leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repeated code&lt;/li&gt;
&lt;li&gt;harder maintenance&lt;/li&gt;
&lt;li&gt;low reusability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we need a better structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Introducing Functions in Python
&lt;/h2&gt;

&lt;p&gt;A function is a reusable block of code that performs a specific task.&lt;/p&gt;

&lt;p&gt;Instead of rewriting logic every time, we can define it once and reuse it whenever needed.&lt;/p&gt;

&lt;p&gt;From the official Python documentation:&lt;/p&gt;

&lt;p&gt;A function is a group of statements that performs a specific task.&lt;/p&gt;

&lt;p&gt;Reference:&lt;br&gt;
&lt;a href="https://docs.python.org/3/tutorial/controlflow.html#defining-functions" rel="noopener noreferrer"&gt;https://docs.python.org/3/tutorial/controlflow.html#defining-functions&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  8. Simple Example to Understand Functions
&lt;/h2&gt;

&lt;p&gt;Before applying it to primes, let’s understand a simple function idea.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;buy_nonveg&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;chicken&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;bag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;buy_nonveg&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bag&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Call function buy_nonveg()
  ↓
Execute function body
  ↓
return "chicken"
  ↓
Store result in bag
  ↓
Print bag
  ↓
End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  9. Understanding the return Keyword
&lt;/h2&gt;

&lt;p&gt;The return statement is used to send a result back from a function.&lt;/p&gt;

&lt;p&gt;From Python documentation:&lt;/p&gt;

&lt;p&gt;The return statement exits a function and optionally passes back an expression.&lt;/p&gt;

&lt;p&gt;Reference:&lt;br&gt;
&lt;a href="https://docs.python.org/3/reference/simple_stmts.html#the-return-statement" rel="noopener noreferrer"&gt;https://docs.python.org/3/reference/simple_stmts.html#the-return-statement&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A function processes something&lt;/li&gt;
&lt;li&gt;return sends the result back&lt;/li&gt;
&lt;li&gt;after return, the function stops executing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can think of it as:&lt;/p&gt;

&lt;p&gt;Input → Processing → Output&lt;/p&gt;

&lt;p&gt;return is the output step.&lt;/p&gt;


&lt;h2&gt;
  
  
  10. Converting Prime Logic into a Function
&lt;/h2&gt;

&lt;p&gt;Now we take our earlier logic and wrap it inside a function so it becomes reusable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start function find_prime(no)
  ↓
Initialize div = 2, divisors_count = 0
  ↓
Check div &amp;lt;= no//2
  ↓
Is no divisible by div?
      ↓ Yes → increment divisors_count
      ↓ No  → continue
  ↓
Increase div
  ↓
Repeat loop
  ↓
If divisors_count == 0
      ↓ Yes → return True
      ↓ No  → return False
  ↓
End function
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  11. Understanding This Function
&lt;/h2&gt;

&lt;p&gt;This function does the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;takes a number as input&lt;/li&gt;
&lt;li&gt;checks all possible divisors&lt;/li&gt;
&lt;li&gt;counts how many divisors exist&lt;/li&gt;
&lt;li&gt;returns True if no divisors are found&lt;/li&gt;
&lt;li&gt;returns False otherwise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now instead of writing full logic every time, we simply call this function.&lt;/p&gt;




&lt;h2&gt;
  
  
  12. Using the Function (But Still Not Efficient)
&lt;/h2&gt;

&lt;p&gt;Now we try to use this function to check multiple numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  ↓
Set no = 2
  ↓
Call find_prime(no)
  ↓
If result == True → print no
  ↓
Increase no
  ↓
Repeat manually
  ↓
End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  13. The Problem Again
&lt;/h2&gt;

&lt;p&gt;Even though logic is now reusable, usage is still repetitive.&lt;/p&gt;

&lt;p&gt;We are still manually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;increasing numbers&lt;/li&gt;
&lt;li&gt;calling function again and again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not scalable.&lt;/p&gt;

&lt;p&gt;So we need another improvement.&lt;/p&gt;




&lt;h2&gt;
  
  
  14. Using a Loop to Remove Repetition
&lt;/h2&gt;

&lt;p&gt;Instead of repeating the same steps, we can automate the process using a loop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;divisors_count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;


&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;find_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  ↓
Set no = 2
  ↓
Check no &amp;lt;= 10
  ↓
Call find_prime(no)
  ↓
If True → print no
  ↓
Increment no
  ↓
Repeat loop
  ↓
End when no &amp;gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  15. What Changed Here
&lt;/h2&gt;

&lt;p&gt;Now the structure is much cleaner:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loop handles number progression&lt;/li&gt;
&lt;li&gt;Function handles prime checking&lt;/li&gt;
&lt;li&gt;Output is handled separately&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This separation is important in programming design.&lt;/p&gt;




&lt;h2&gt;
  
  
  16. Final Improved Version (Cleaner Logic)
&lt;/h2&gt;

&lt;p&gt;We can further improve the function by removing unnecessary counting.&lt;/p&gt;

&lt;p&gt;We only need to know whether a divisor exists or not.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;

    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
        &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start function is_prime(n)
  ↓
If n &amp;lt; 2 → return False
  ↓
Set div = 2
  ↓
Check div &amp;lt;= n//2
  ↓
If n % div == 0 → return False
  ↓
Increment div
  ↓
Repeat loop
  ↓
If no divisor found → return True
  ↓
End function
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And usage becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;is_prime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flow Chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  ↓
Loop num from 2 to 10
  ↓
Call is_prime(num)
  ↓
If True → print num
  ↓
Repeat loop
  ↓
End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  17. Final Understanding
&lt;/h2&gt;

&lt;p&gt;At a high level, prime checking is simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try dividing the number&lt;/li&gt;
&lt;li&gt;If anything divides it evenly → not prime&lt;/li&gt;
&lt;li&gt;If nothing divides it → prime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else in code is just structuring this idea properly.&lt;/p&gt;




&lt;h2&gt;
  
  
  18. Key Learning Path
&lt;/h2&gt;

&lt;p&gt;What we built step by step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manual reasoning&lt;/li&gt;
&lt;li&gt;Basic loop logic&lt;/li&gt;
&lt;li&gt;First implementation&lt;/li&gt;
&lt;li&gt;Identifying repetition problem&lt;/li&gt;
&lt;li&gt;Introducing functions&lt;/li&gt;
&lt;li&gt;Understanding return&lt;/li&gt;
&lt;li&gt;Refactoring into reusable design&lt;/li&gt;
&lt;li&gt;Removing redundancy with loops&lt;/li&gt;
&lt;li&gt;Final clean implementation&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;What looks like a simple “prime number program” is actually a complete demonstration of how programming logic evolves in real software development.&lt;/p&gt;

&lt;p&gt;We started with raw human thinking, converted it into a working algorithm, noticed its limitations, introduced functions for reusability, and finally optimized it into a clean and scalable solution.&lt;/p&gt;

&lt;p&gt;This is exactly how real developers think: not by writing perfect code at once, but by building, observing problems, and improving step by step.&lt;/p&gt;

&lt;p&gt;If you understand this flow, you are not just learning prime numbers — you are learning how to think like a programmer.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Static vs Non-Static in Java: Understanding Class and Object Through a Shop Story</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Sun, 31 May 2026 14:04:36 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/static-vs-non-static-in-java-understanding-class-and-object-through-a-shop-story-5416</link>
      <guid>https://dev.to/kathirvel-s/static-vs-non-static-in-java-understanding-class-and-object-through-a-shop-story-5416</guid>
      <description>&lt;p&gt;Imagine You're Standing Outside a Shop...&lt;/p&gt;

&lt;p&gt;Have you ever noticed something interesting when you walk past a shop?&lt;/p&gt;

&lt;p&gt;Even before entering, you can see the shop's name board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Fresh Mart"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You don't need to enter the shop to know its name. It's visible to everyone from outside.&lt;/p&gt;

&lt;p&gt;But what about the products?&lt;/p&gt;

&lt;p&gt;Can you see all the products from outside?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;To access products, you must enter the shop.&lt;/p&gt;

&lt;p&gt;Now let's connect this simple real-world example to Java.&lt;/p&gt;




&lt;h1&gt;
  
  
  Meet Our Java Shop
&lt;/h1&gt;

&lt;p&gt;Imagine this Java class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think of it this way:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shop Story&lt;/th&gt;
&lt;th&gt;Java Concept&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shop building&lt;/td&gt;
&lt;td&gt;Class&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shop name board&lt;/td&gt;
&lt;td&gt;Static variable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product inside shop&lt;/td&gt;
&lt;td&gt;Non-static variable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entering the shop&lt;/td&gt;
&lt;td&gt;Creating an object&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  What Is a Class?
&lt;/h1&gt;

&lt;p&gt;According to the Java documentation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A class is a blueprint or template from which objects are created.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In simple words:&lt;/p&gt;

&lt;p&gt;A class describes what something should look like.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This does not create an actual shop.&lt;/p&gt;

&lt;p&gt;It only describes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A shop has a name.&lt;/li&gt;
&lt;li&gt;A shop can contain products.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it like an architect's building plan.&lt;/p&gt;

&lt;p&gt;A plan is not the actual building.&lt;/p&gt;

&lt;p&gt;Similarly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A class is not an object.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is only the blueprint.&lt;/p&gt;

&lt;p&gt;Think of a class as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recipe
Template
Blueprint
Design
Instruction Sheet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Do We Need Classes?
&lt;/h1&gt;

&lt;p&gt;Imagine a city with 10,000 shops.&lt;/p&gt;

&lt;p&gt;Would you write separate code for every shop?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;shop1&lt;/span&gt;
&lt;span class="n"&gt;shop2&lt;/span&gt;
&lt;span class="n"&gt;shop3&lt;/span&gt;
&lt;span class="n"&gt;shop4&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That would be a nightmare.&lt;/p&gt;

&lt;p&gt;Instead, we create one blueprint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then create many shop objects from it.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;p&gt;✅ Reusability&lt;/p&gt;

&lt;p&gt;✅ Better organization&lt;/p&gt;

&lt;p&gt;✅ Less code duplication&lt;/p&gt;

&lt;p&gt;✅ Easier maintenance&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is an Object?
&lt;/h1&gt;

&lt;p&gt;If a class is the blueprint...&lt;/p&gt;

&lt;p&gt;An object is the real thing created from that blueprint.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Blueprint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;House Design
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Actual house:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;House #1
House #2
House #3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly:&lt;/p&gt;

&lt;p&gt;Class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Objects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we have two real shop objects.&lt;/p&gt;

&lt;p&gt;Each object gets its own storage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Do We Need Objects?
&lt;/h1&gt;

&lt;p&gt;Imagine there are 10,000 shops.&lt;/p&gt;

&lt;p&gt;Would we create 10,000 classes?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop1&lt;/span&gt;
&lt;span class="nc"&gt;Shop2&lt;/span&gt;
&lt;span class="nc"&gt;Shop3&lt;/span&gt;
&lt;span class="nc"&gt;Shop4&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ Impossible to maintain.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One class.&lt;/p&gt;

&lt;p&gt;Many objects.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Advantages:&lt;/p&gt;

&lt;p&gt;✅ Reusable&lt;/p&gt;

&lt;p&gt;✅ Organized&lt;/p&gt;

&lt;p&gt;✅ Saves code&lt;/p&gt;

&lt;p&gt;✅ Models real-world entities&lt;/p&gt;




&lt;h1&gt;
  
  
  The Most Important Line in Java
&lt;/h1&gt;

&lt;p&gt;Look carefully:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most beginners see one line.&lt;/p&gt;

&lt;p&gt;Java sees several steps.&lt;/p&gt;

&lt;p&gt;Let's break it apart.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 1: &lt;code&gt;Shop&lt;/code&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the class type.&lt;/p&gt;

&lt;p&gt;It tells Java:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The variable I'm about to create will store a Shop object."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1 can store a Shop reference.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 2: &lt;code&gt;s1&lt;/code&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;s1&lt;/code&gt; is a reference variable.&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Address Holder
Pointer
Reference
Remote Control
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
 |
 v
null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No object exists yet.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 3: &lt;code&gt;new&lt;/code&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the magic happens.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;new&lt;/code&gt; tells Java:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Allocate memory and create a brand new object."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without &lt;code&gt;new&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No shop is created.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;new&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java creates a fresh object in memory.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4: &lt;code&gt;Shop()&lt;/code&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This calls the constructor.&lt;/p&gt;

&lt;p&gt;Think of it as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Opening a new shop
Initializing the shop
Preparing the shop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java creates memory and prepares all variables.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens Internally?
&lt;/h1&gt;

&lt;p&gt;When Java sees:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java roughly performs:&lt;/p&gt;

&lt;h3&gt;
  
  
  Create memory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Memory

+----------------+
| prod_name=null |
+----------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;/p&gt;

&lt;h3&gt;
  
  
  Store address in s1
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
 |
 |-------&amp;gt; Object
           +----------------+
           | prod_name=null |
           +----------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Creating Another Object
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Java allocates another memory block.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
 |
 v
+----------------+
| prod_name=null |
+----------------+

s2
 |
 v
+----------------+
| prod_name=null |
+----------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;These are two separate objects.&lt;/p&gt;

&lt;p&gt;Separate memory.&lt;/p&gt;

&lt;p&gt;Separate data.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens After Assignments?
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Rice"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Milk"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
 |
 v
+----------------+
| prod_name=Rice |
+----------------+

s2
 |
 v
+----------------+
| prod_name=Milk |
+----------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each object stores its own value.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Does Static Memory Live?
&lt;/h1&gt;

&lt;p&gt;Consider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Many beginners think:&lt;/p&gt;

&lt;p&gt;Every object stores &lt;code&gt;name&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Static variables are stored once per class.&lt;/p&gt;




&lt;h1&gt;
  
  
  Visual Memory Layout
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLASS AREA (Method Area)

Shop Class
+-----------------------+
| name = Fresh Mart     |
+-----------------------+



HEAP MEMORY

Object s1
+-----------------------+
| prod_name = Rice      |
+-----------------------+

Object s2
+-----------------------+
| prod_name = Milk      |
+-----------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only one copy of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;exists.&lt;/p&gt;

&lt;p&gt;No matter how many objects you create.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Static Saves Memory
&lt;/h1&gt;

&lt;p&gt;Imagine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt;
&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt;
&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s3&lt;/span&gt;
&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If &lt;code&gt;name&lt;/code&gt; were non-static:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fresh Mart
Fresh Mart
Fresh Mart
Fresh Mart
...
1000 times
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Huge waste.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One copy.&lt;/p&gt;

&lt;p&gt;All objects share it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             Fresh Mart
                 ^
                 |
      -------------------------
      |           |           |
     s1          s2          s3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Static vs Non-Static Memory Diagram
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLASS AREA

+--------------------------------+
| Shop.name = Fresh Mart         |
| Shop.age  = 20                 |
+--------------------------------+



HEAP

s1
 |
 v
+--------------------------------+
| prod_name = Rice               |
+--------------------------------+


s2
 |
 v
+--------------------------------+
| prod_name = Milk               |
+--------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What Is Static?
&lt;/h1&gt;

&lt;p&gt;Remember the shop name board?&lt;/p&gt;

&lt;p&gt;Everyone can see it without entering the shop.&lt;/p&gt;

&lt;p&gt;That's exactly how static members work.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can access it directly through the class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No object required.&lt;/p&gt;

&lt;p&gt;Because static belongs to the class itself.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Static Exists
&lt;/h1&gt;

&lt;p&gt;Imagine there are 1,000 shop objects.&lt;/p&gt;

&lt;p&gt;Should every object store the same shop name?&lt;/p&gt;

&lt;p&gt;That wastes memory.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only one copy exists.&lt;/p&gt;

&lt;p&gt;All objects share it.&lt;/p&gt;

&lt;p&gt;Benefits:&lt;/p&gt;

&lt;p&gt;✅ Memory efficient&lt;/p&gt;

&lt;p&gt;✅ Faster access&lt;/p&gt;

&lt;p&gt;✅ Shared information&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is Non-Static?
&lt;/h1&gt;

&lt;p&gt;Products inside the shop are different.&lt;/p&gt;

&lt;p&gt;One shelf contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another shelf contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Milk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each shop object stores its own products.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is non-static.&lt;/p&gt;

&lt;p&gt;Every object gets its own copy.&lt;/p&gt;

&lt;p&gt;Access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the product belongs to a specific shop object.&lt;/p&gt;




&lt;h1&gt;
  
  
  Static vs Non-Static
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Static&lt;/th&gt;
&lt;th&gt;Non-Static&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Belongs to class&lt;/td&gt;
&lt;td&gt;Belongs to object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One copy exists&lt;/td&gt;
&lt;td&gt;Separate copy per object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access using class name&lt;/td&gt;
&lt;td&gt;Access using object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory efficient&lt;/td&gt;
&lt;td&gt;Stores object-specific data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Created when class loads&lt;/td&gt;
&lt;td&gt;Created when object is created&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Code to the Story
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="c1"&gt;// Visible from outside&lt;/span&gt;
    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Inside the shop&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"First Product"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;product2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;product2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Second Product"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"=== Looking from outside ==="&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Shop Age: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Shop Name: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;



        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"=== Entering Shop ==="&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=== Looking from outside ===
Shop Age: 20
Shop Name: Fresh Mart

=== Entering Shop ===
First Product
Second Product
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See the difference?&lt;/p&gt;

&lt;p&gt;Outside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt;
&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;
&lt;span class="n"&gt;product2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  How to Print Static Variables
&lt;/h1&gt;

&lt;p&gt;Static variables belong to the class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;20
Fresh Mart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  How to Print Non-Static Variables
&lt;/h1&gt;

&lt;p&gt;Create an object first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Laptop"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;prod_name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laptop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  When Should You Use Static?
&lt;/h1&gt;

&lt;p&gt;Use static when data is shared by all objects.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Company Name
Tax Rate
Application Version
Counter
Constants
Utility Methods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;company&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"ABC Ltd"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every employee object uses the same company name.&lt;/p&gt;




&lt;h1&gt;
  
  
  When Should You Use Non-Static?
&lt;/h1&gt;

&lt;p&gt;Use non-static when every object needs its own value.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student Name
Employee Salary
Car Number
Product Name
Account Balance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;studentName&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every student has a different name.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Are These Memories Stored in JVM?
&lt;/h1&gt;

&lt;p&gt;Think of the JVM as having three important areas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack Memory
&lt;/h3&gt;

&lt;p&gt;Stores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
s2
product
product2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference variables live here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STACK

s1 ------+
s2 ------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Heap Memory
&lt;/h3&gt;

&lt;p&gt;Stores actual objects.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HEAP

Object 1
Object 2
Object 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever you write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory is allocated in the Heap.&lt;/p&gt;




&lt;h3&gt;
  
  
  Method Area (Class Area)
&lt;/h3&gt;

&lt;p&gt;Stores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Class metadata
Static variables
Static methods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are stored once in the Method Area.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;METHOD AREA

Shop.name
Shop.age
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Complete JVM Memory Picture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;METHOD AREA
+-------------------------+
| Shop.name = Fresh Mart  |
| Shop.age  = 20          |
+-------------------------+


STACK
+-------------------------+
| s1 -&amp;gt; Object1           |
| s2 -&amp;gt; Object2           |
+-------------------------+


HEAP
+-------------------------+
| Object1                 |
| prod_name = Rice        |
+-------------------------+

+-------------------------+
| Object2                 |
| prod_name = Milk        |
+-------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can actually visualize what happens when Java executes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Quick Challenge For You
&lt;/h1&gt;

&lt;p&gt;Before reading the answer, guess the output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Fresh Mart"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
        &lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Rice"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;product&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Milk"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;product&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;product&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Think...&lt;/p&gt;

&lt;p&gt;Think...&lt;/p&gt;

&lt;p&gt;Ready?&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fresh Mart
Rice
Milk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt; is shared by the class.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;product&lt;/code&gt; belongs to each object separately.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Final Takeaway
&lt;/h1&gt;

&lt;p&gt;Whenever you're confused between static and non-static, remember the shop story.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shop Name Board = Static&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everyone can access it without entering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Products Inside the Shop = Non-Static&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You must enter a specific shop object to access them.&lt;/p&gt;

&lt;p&gt;And remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class = Blueprint&lt;/li&gt;
&lt;li&gt;Object = Real thing created from the blueprint&lt;/li&gt;
&lt;li&gt;Static = Shared by everyone&lt;/li&gt;
&lt;li&gt;Non-Static = Unique to each object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whenever you see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Shop&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Shop&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Shop      -&amp;gt; Type of object

s1        -&amp;gt; Reference variable

new       -&amp;gt; Allocate new memory

Shop()    -&amp;gt; Create and initialize object
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visualize:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s1
 |
 v
+------------------+
| Shop Object      |
+------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you understand this memory picture, static vs non-static stops being something to memorize and becomes something you can actually see happening inside the JVM.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;p&gt;Official Java Documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Java Classes and Objects: &lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/classes.html" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/tutorial/java/javaOO/classes.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understanding Class Members (Static and Instance): &lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Java Language Specification: &lt;a href="https://docs.oracle.com/javase/specs/" rel="noopener noreferrer"&gt;https://docs.oracle.com/javase/specs/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why Data Types Exist in Python: and Building Logic Through Finding Perfect number</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Sun, 31 May 2026 11:02:07 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/why-data-types-exist-in-python-and-building-logic-through-finding-perfect-number-3abb</link>
      <guid>https://dev.to/kathirvel-s/why-data-types-exist-in-python-and-building-logic-through-finding-perfect-number-3abb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When we start learning Python, one of the first concepts we hear about is &lt;strong&gt;data types&lt;/strong&gt;. Many beginners ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Why do data types even exist?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To understand this, let's begin with a simple story.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Story Behind Data Types
&lt;/h2&gt;

&lt;p&gt;Computers don't understand letters, numbers, images, or sounds directly. Everything inside a computer is stored as &lt;strong&gt;binary digits (0s and 1s)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Consider the letter &lt;strong&gt;'A'&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The ASCII value of &lt;strong&gt;A&lt;/strong&gt; is &lt;strong&gt;65&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the computer, 65 is stored in binary form:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;100001&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now imagine another situation where:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100001&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The binary representation of the number 65 and the number &lt;code&gt;100001&lt;/code&gt; may look similar to the computer at the storage level.&lt;/p&gt;

&lt;p&gt;So how does the computer know whether it should treat the value as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A character (&lt;code&gt;'A'&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A number (&lt;code&gt;65&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A string (&lt;code&gt;"65"&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where &lt;strong&gt;data types&lt;/strong&gt; become important.&lt;/p&gt;

&lt;p&gt;Data types tell the computer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How should this piece of data be interpreted and processed?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Without data types, the computer would struggle to distinguish between characters, numbers, text, and other kinds of information.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;char&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;A&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;65&lt;/span&gt;
&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;65&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though they may be related, Python treats them differently because each has a different data type.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Data Types in Python
&lt;/h2&gt;

&lt;p&gt;According to the official Python documentation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The following sections describe the standard types that are built into the interpreter." (&lt;a href="https://docs.python.org/3/library/stdtypes.html?highlight=collections&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Python documentation&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Python provides several built-in data types that help the interpreter understand how data should be stored and manipulated.&lt;/p&gt;

&lt;p&gt;Official Documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.python.org/3/library/stdtypes.html?highlight=collections&amp;amp;utm_source=chatgpt.com" rel="noopener noreferrer"&gt;Python Built-in Types Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Integer (int)
&lt;/h3&gt;

&lt;p&gt;Used for whole numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Float (float)
&lt;/h3&gt;

&lt;p&gt;Used for decimal numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;99.99&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  String (str)
&lt;/h3&gt;

&lt;p&gt;Used for text.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Boolean (bool)
&lt;/h3&gt;

&lt;p&gt;Used for True or False values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;is_active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Problem 1: Sum of Odd and Even Numbers
&lt;/h1&gt;

&lt;p&gt;Before writing code, let's think like a programmer.&lt;/p&gt;

&lt;p&gt;Suppose I ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens when we add an odd number and an even number?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's try manually.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 + 4 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7 is Odd.&lt;/p&gt;

&lt;p&gt;Another example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 + 8 = 13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;13 is Odd.&lt;/p&gt;

&lt;p&gt;Again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;9 + 2 = 11
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;11 is Odd.&lt;/p&gt;

&lt;p&gt;After observing multiple examples, we can identify a pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Odd + Even = Odd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's create the logic ourselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building the Logic
&lt;/h3&gt;

&lt;p&gt;Step 1:&lt;/p&gt;

&lt;p&gt;Take two numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 and 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2:&lt;/p&gt;

&lt;p&gt;Add them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 + 4 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3:&lt;/p&gt;

&lt;p&gt;Check whether the result is divisible by 2.&lt;/p&gt;

&lt;p&gt;If a number leaves remainder 1 after division by 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Number is Odd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Number is Even
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Flowchart
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  |
Take Two Numbers
  |
Add Numbers
  |
Check sum % 2
  |
  +---- remainder != 0 ----&amp;gt; ODD
  |
  +---- remainder == 0 ----&amp;gt; EVEN
  |
 End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Python Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="n"&gt;no2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;

&lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;no1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;no2&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ODD&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EVEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Code Explanation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;span class="n"&gt;no2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stores two numbers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;no1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;no2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adds both numbers and stores the result.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checks the remainder after dividing by 2.&lt;/p&gt;

&lt;p&gt;If the remainder is not zero:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The number is Odd.&lt;/p&gt;

&lt;p&gt;Otherwise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The number is Even.&lt;/p&gt;

&lt;h3&gt;
  
  
  Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;ODD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Problem 2: Perfect Number
&lt;/h1&gt;

&lt;p&gt;Let's build the logic slowly before coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Perfect Number?
&lt;/h2&gt;

&lt;p&gt;A perfect number is a number whose factors (excluding itself) add up exactly to the number.&lt;/p&gt;

&lt;p&gt;Let's take:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find all factors except 6 itself.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now add them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 + 2 + 3 = 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The sum becomes equal to the original number.&lt;/p&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6 is a Perfect Number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's try another number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Factors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 + 2 + 4 = 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7 is not equal to 8.&lt;/p&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8 is NOT a Perfect Number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Building the Logic
&lt;/h2&gt;

&lt;p&gt;Step 1:&lt;/p&gt;

&lt;p&gt;Take a number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2:&lt;/p&gt;

&lt;p&gt;Check all numbers from 1 up to the number before it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 2 3 4 5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3:&lt;/p&gt;

&lt;p&gt;Find which numbers divide 6 completely.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 ✓
2 ✓
3 ✓
4 ✗
5 ✗
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4:&lt;/p&gt;

&lt;p&gt;Add all valid factors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 + 2 + 3 = 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5:&lt;/p&gt;

&lt;p&gt;Compare the total with the original number.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6 == 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect Number.&lt;/p&gt;




&lt;h2&gt;
  
  
  Flowchart
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start
  |
Take Number
  |
Find Factors
  |
Add Factors
  |
Compare Sum and Number
  |
  +---- Equal ------&amp;gt; Perfect Number
  |
  +---- Not Equal --&amp;gt; Not Perfect Number
  |
 End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Python Program
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt;
    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Perfect Number&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Not Perfect Number&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Code Explanation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stores the number we want to check.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used to store the sum of factors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Starting divisor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs from 1 up to 5.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checks whether the divisor is a factor.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6 % 2 = 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So 2 is a factor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adds the factor to the total.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Moves to the next divisor.&lt;/p&gt;

&lt;p&gt;After the loop completes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compares the factor sum with the original number.&lt;/p&gt;

&lt;p&gt;If both are equal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Perfect&lt;/span&gt; &lt;span class="n"&gt;Number&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Not&lt;/span&gt; &lt;span class="n"&gt;Perfect&lt;/span&gt; &lt;span class="n"&gt;Number&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Perfect&lt;/span&gt; &lt;span class="n"&gt;Number&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Data types are one of the most important concepts in Python because they help the computer understand what kind of data it is working with. Without data types, the computer would not know whether a value should be treated as a character, number, text, or logical value.&lt;/p&gt;

&lt;p&gt;However, learning Python is not only about understanding data types and syntax. It is also about learning &lt;strong&gt;how to think logically&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, we started by understanding why data types exist and how computers interpret information internally. We then explored some fundamental Python data types and saw how they help the interpreter process different kinds of data correctly.&lt;/p&gt;

&lt;p&gt;After building that foundation, we worked through two logical problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Determining whether the sum of two numbers is Odd or Even.&lt;/li&gt;
&lt;li&gt;Checking whether a number is a Perfect Number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of jumping directly into code, we first analyzed the problem, observed patterns, built the logic step by step, designed simple flowcharts, and then translated that logic into Python code. This is the same approach followed by experienced programmers when solving real-world problems.&lt;/p&gt;

&lt;p&gt;A good programmer does not start with code.&lt;/p&gt;

&lt;p&gt;A good programmer starts with:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding the problem.&lt;/li&gt;
&lt;li&gt;Breaking it into smaller steps.&lt;/li&gt;
&lt;li&gt;Building a logical solution.&lt;/li&gt;
&lt;li&gt;Creating a flow of execution.&lt;/li&gt;
&lt;li&gt;Converting that logic into code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The more logical problems you solve, the stronger your problem-solving skills become. Python provides the tools, but logic is what transforms those tools into solutions.&lt;/p&gt;

&lt;p&gt;Keep practicing, keep questioning, and most importantly, keep building logic before writing code.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>The Ultimate Python Logic Journey: Chocolates -&gt; Divisors -&gt; Primes</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Fri, 29 May 2026 14:24:42 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/the-ultimate-python-logic-journey-chocolates-divisors-primes-19h5</link>
      <guid>https://dev.to/kathirvel-s/the-ultimate-python-logic-journey-chocolates-divisors-primes-19h5</guid>
      <description>&lt;p&gt;Imagine this...&lt;/p&gt;

&lt;p&gt;You walk into a shop and buy &lt;strong&gt;30 chocolates&lt;/strong&gt;. 🍫&lt;/p&gt;

&lt;p&gt;Your friend looks at the chocolates and asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can we divide these chocolates equally among people without breaking any chocolate?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Interesting question, right?&lt;/p&gt;

&lt;p&gt;So now we start thinking...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can 1 person take all 30 chocolates?&lt;/li&gt;
&lt;li&gt;Can 2 people share equally?&lt;/li&gt;
&lt;li&gt;What about 3?&lt;/li&gt;
&lt;li&gt;4?&lt;/li&gt;
&lt;li&gt;5?&lt;/li&gt;
&lt;li&gt;6?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suddenly... mathematics enters the story.&lt;/p&gt;

&lt;p&gt;And that is where the beautiful idea of &lt;strong&gt;Divisors&lt;/strong&gt; begins.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 1: Understanding Divisors Using Chocolates
&lt;/h1&gt;

&lt;p&gt;We have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="n"&gt;chocolates&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let’s check who can divide them equally.&lt;/p&gt;

&lt;p&gt;If a number divides 30 completely with &lt;strong&gt;no remainder&lt;/strong&gt;, then it is called a &lt;strong&gt;divisor&lt;/strong&gt; (or factor) of 30.&lt;/p&gt;

&lt;p&gt;These are the divisors of 30:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 2 3 5 6 10 15 30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;30 ÷ 1 = 30&lt;/li&gt;
&lt;li&gt;30 ÷ 2 = 15&lt;/li&gt;
&lt;li&gt;30 ÷ 3 = 10&lt;/li&gt;
&lt;li&gt;30 ÷ 5 = 6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No remainder anywhere.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Secret Weapon: &lt;code&gt;%&lt;/code&gt; Modulus Operator
&lt;/h1&gt;

&lt;p&gt;In Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What remainder is left when 30 is divided by 2?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then division happened perfectly.&lt;/p&gt;

&lt;p&gt;That means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;divisor&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 2: Checking Divisors Manually
&lt;/h1&gt;

&lt;p&gt;At first, beginners usually think like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Let’s Understand This Deeply
&lt;/h1&gt;

&lt;p&gt;Take this line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s what happens internally:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step-by-step Thinking
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Divide 30 by 2&lt;/li&gt;
&lt;li&gt;Check the remainder&lt;/li&gt;
&lt;li&gt;If remainder is 0&lt;/li&gt;
&lt;li&gt;Then print 2&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because 30 divides perfectly by 2.&lt;/p&gt;




&lt;h1&gt;
  
  
  Flowchart
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        Start
           |
           v
     Check 30 % 2
           |
     Is remainder 0?
        /       \
      Yes       No
      /           \
Print 2        Ignore
      \
       v
       End
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  But Wait... This Feels Repetitive
&lt;/h1&gt;

&lt;p&gt;Imagine checking till 1000 manually.&lt;/p&gt;

&lt;p&gt;Impossible!&lt;/p&gt;

&lt;p&gt;So programmers start asking smarter questions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can the computer repeat the work for us?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that leads us to loops.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 3: Reducing Repetition
&lt;/h1&gt;

&lt;p&gt;Instead of writing many &lt;code&gt;if&lt;/code&gt; statements:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we introduced a variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Current divisor we are checking.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  What is Happening Here?
&lt;/h1&gt;

&lt;p&gt;Initially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;checks whether current divisor divides 30 perfectly.&lt;/p&gt;

&lt;p&gt;After checking:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;moves to the next divisor.&lt;/p&gt;

&lt;p&gt;This is already smarter than writing everything manually.&lt;/p&gt;

&lt;p&gt;But still repetitive.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4: The Power of While Loop
&lt;/h1&gt;

&lt;p&gt;Now comes the real programming mindset.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Let’s Build the Logic Slowly
&lt;/h1&gt;

&lt;p&gt;We are saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Start divisor from 1 and keep checking till 30.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Detailed Breakdown
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Line 1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The number whose divisors we want.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 2
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We begin checking from divisor 1.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 3
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Keep running until divisor becomes greater than 30.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Inside the Loop
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check whether divisor divides the number perfectly.&lt;/p&gt;




&lt;h2&gt;
  
  
  If True
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Print the divisor.&lt;/p&gt;




&lt;h2&gt;
  
  
  Move Forward
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to next divisor.&lt;/p&gt;




&lt;h1&gt;
  
  
  Flowchart
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           Start
              |
              v
          no = 30
          div = 1
              |
              v
       Is div &amp;lt;= no ?
          /       \
        Yes        No
         |          |
         v          v
   Check no % div   End
         |
   Is remainder 0?
      /       \
    Yes        No
     |          |
Print div       |
      \         /
       v       v
       div += 1
           |
           v
      Repeat Loop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
3
5
6
10
15
30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Beautiful.&lt;/p&gt;

&lt;p&gt;The computer found all divisors automatically.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 5: Can We Make It Faster?
&lt;/h1&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do we really need to check till 10000?&lt;/p&gt;

&lt;p&gt;Actually no.&lt;/p&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;p&gt;A number cannot have divisors greater than half of itself (except the number itself).&lt;/p&gt;

&lt;p&gt;So we optimize.&lt;/p&gt;




&lt;h1&gt;
  
  
  Optimized Version
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;
&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Start From 2?
&lt;/h1&gt;

&lt;p&gt;Because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 is always a divisor&lt;/li&gt;
&lt;li&gt;number itself is always a divisor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are searching for divisors in between.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why &lt;code&gt;no//2&lt;/code&gt;?
&lt;/h1&gt;

&lt;p&gt;Because no number larger than half can divide the number evenly.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Can 20 divide 30?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;So checking after 15 is useless.&lt;/p&gt;

&lt;p&gt;This saves time.&lt;/p&gt;

&lt;p&gt;This is called:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Optimization&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A very important programming skill.&lt;/p&gt;




&lt;h1&gt;
  
  
  Flowchart
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      Start
         |
         v
    no = 10000
    div = 2
         |
         v
 Is div &amp;lt;= no//2 ?
      /         \
    Yes          No
     |            |
     v            v
Check no % div    End
     |
Is remainder 0?
   /      \
 Yes      No
  |        |
Print div  |
    \      /
     v    v
    div += 1
        |
        v
    Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 6: Counting Divisors Instead of Printing
&lt;/h1&gt;

&lt;p&gt;Now a new idea comes.&lt;/p&gt;

&lt;p&gt;Instead of printing divisors...&lt;/p&gt;

&lt;p&gt;What if we count them?&lt;/p&gt;




&lt;h1&gt;
  
  
  Code
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Count of Divisors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Deep Understanding
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Variable &lt;code&gt;count&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This stores:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How many divisors we found.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Initially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whenever divisor is found:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Let’s Trace It
&lt;/h1&gt;

&lt;p&gt;For 30:&lt;/p&gt;

&lt;p&gt;Divisors between 2 and 15 are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 3 5 6 10 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Total:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So output becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Count of Divisors 6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Flowchart
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        Start
           |
           v
      count = 0
           |
           v
   Check divisors
           |
    Divisor found?
        /      \
      Yes       No
       |
 count += 1
       |
       v
 Continue Loop
       |
       v
 Print count
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 7: The Birth of Prime Numbers
&lt;/h1&gt;

&lt;p&gt;Now comes the magical idea.&lt;/p&gt;

&lt;p&gt;A prime number is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A number that has NO divisors except 1 and itself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 3 5 7 11 13 17
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Let’s Test 31
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;31&lt;/span&gt;
&lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

    &lt;span class="n"&gt;div&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;no&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;is a prime number&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  The Core Idea
&lt;/h1&gt;

&lt;p&gt;We search for divisors between:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 to no//2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If we find none...&lt;/p&gt;

&lt;p&gt;Then the number is prime.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Does This Work?
&lt;/h1&gt;

&lt;p&gt;For 31:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;31 % 2 → not 0&lt;/li&gt;
&lt;li&gt;31 % 3 → not 0&lt;/li&gt;
&lt;li&gt;31 % 4 → not 0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;No divisor found.&lt;/p&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;31 is a prime number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Flowchart
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          Start
             |
             v
        count = 0
             |
             v
      Check divisors
             |
      Any divisor found?
          /        \
        Yes         No
        |            |
   count += 1        |
         \           /
          v         v
       Loop Ends
             |
             v
      Is count == 0 ?
          /       \
        Yes        No
         |          |
 Print Prime      Not Prime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Special Fact
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The One and Only Even Prime Number is 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because every other even number is divisible by 2.&lt;/p&gt;

&lt;p&gt;But 2 itself has only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 and 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;as divisors.&lt;/p&gt;

&lt;p&gt;So it is prime.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Big Idea
&lt;/h1&gt;

&lt;p&gt;Everything started with chocolates.&lt;/p&gt;

&lt;p&gt;Then we learned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Chocolate Sharing
        ↓
Divisors
        ↓
Finding Divisors
        ↓
Counting Divisors
        ↓
Prime Numbers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how programming should be learned.&lt;/p&gt;

&lt;p&gt;Not by memorizing code.&lt;/p&gt;

&lt;p&gt;But by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asking questions&lt;/li&gt;
&lt;li&gt;Building logic slowly&lt;/li&gt;
&lt;li&gt;Thinking like a problem solver&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;Whenever you see a prime number problem now...&lt;/p&gt;

&lt;p&gt;Don’t think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh no, math!”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can this number share chocolates equally with anyone?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And suddenly...&lt;/p&gt;

&lt;p&gt;Prime numbers become simple.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Java Data Types: The Deep Dive Nobody Actually Gives You</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Fri, 29 May 2026 11:00:20 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/java-data-types-the-deep-dive-nobody-actually-gives-you-403o</link>
      <guid>https://dev.to/kathirvel-s/java-data-types-the-deep-dive-nobody-actually-gives-you-403o</guid>
      <description>&lt;p&gt;You've probably seen a tutorial that goes: &lt;em&gt;"int stores numbers, String stores text, boolean is true or false — moving on!"&lt;/em&gt; And then you're left writing code, wondering &lt;strong&gt;why&lt;/strong&gt; Java has 8 integer-ish things, why your &lt;code&gt;float&lt;/code&gt; math is slightly wrong, or the difference between a field and a local variable actually is.&lt;/p&gt;

&lt;p&gt;This isn't that tutorial.&lt;/p&gt;

&lt;p&gt;We're going deep — memory sizes, JVM storage, when to pick what, and the stuff even experienced devs sometimes get fuzzy on. Buckle up.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Even Is a "Data Type"?
&lt;/h2&gt;

&lt;p&gt;Before we split into primitive vs non-primitive, let's just get this straight.&lt;/p&gt;

&lt;p&gt;Java is a &lt;strong&gt;statically-typed language&lt;/strong&gt;. That means every single variable you declare has to have a type, and the compiler knows that type at compile time — before your program ever runs. Compare that to something like Python, where you just write &lt;code&gt;x = 42&lt;/code&gt; and Python figures out the type at runtime.&lt;/p&gt;

&lt;p&gt;So in Java, when you write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You're not just storing a number. You're telling the compiler: "this slot of memory holds a 32-bit signed integer, nothing else, ever." That contract is locked in.&lt;/p&gt;

&lt;p&gt;This is why data types matter so much in Java — they define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much memory to allocate&lt;/li&gt;
&lt;li&gt;What values are valid&lt;/li&gt;
&lt;li&gt;What operations you can perform&lt;/li&gt;
&lt;li&gt;How the JVM handles the variable in memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alright, now let's get into the actual categories.&lt;/p&gt;




&lt;h2&gt;
  
  
  Primitive vs Non-Primitive — What's the Real Difference?
&lt;/h2&gt;

&lt;p&gt;Here's the actual distinction, not the watered-down version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primitive types&lt;/strong&gt; are built directly into the Java language specification. They aren't objects. They don't have methods. They're not created with &lt;code&gt;new&lt;/code&gt;. They just hold a raw value — directly. When you write &lt;code&gt;int x = 5&lt;/code&gt;, that &lt;code&gt;5&lt;/code&gt; is stored as a plain binary value in memory. No wrapper, no metadata, nothing else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-primitive types&lt;/strong&gt; (also called reference types) are objects. When you create one, the JVM allocates space on the heap, and your variable holds a &lt;em&gt;reference&lt;/em&gt; (think: a memory address) pointing to that object. The variable itself doesn't contain the data — it contains a pointer to where the data lives.&lt;/p&gt;

&lt;p&gt;Let's make this concrete:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;         &lt;span class="c1"&gt;// 'a' IS the value 10 — stored directly&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 's' is a reference — points to an object on the heap&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's the key difference that matters in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// b gets a COPY of 10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// still 10 — a is unaffected&lt;/span&gt;

&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;str1&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// str2 holds the same REFERENCE as str1&lt;/span&gt;
&lt;span class="c1"&gt;// both point to the same object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With primitives, you copy the value. With references, you copy the address. That distinction trips up a lot of people when they start passing objects into methods.&lt;/p&gt;

&lt;p&gt;One more thing: &lt;strong&gt;primitives can never be null&lt;/strong&gt;. A non-primitive can. That's actually a significant design point — if you declare &lt;code&gt;int x;&lt;/code&gt; inside a method without assigning it, the compiler won't even let you use it. But &lt;code&gt;String s;&lt;/code&gt; can hold &lt;code&gt;null&lt;/code&gt; (when it's a field — more on that later).&lt;/p&gt;




&lt;h2&gt;
  
  
  The 8 Primitive Types — Actually Explained
&lt;/h2&gt;

&lt;p&gt;According to the &lt;a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html" rel="noopener noreferrer"&gt;Oracle Java documentation&lt;/a&gt;, Java has exactly 8 primitive data types. Let's go through all of them properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;byte&lt;/code&gt; — 8 bits, -128 to 127
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;byte&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;36&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;byte&lt;/span&gt; &lt;span class="n"&gt;smallCounter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;byte&lt;/code&gt; is an 8-bit signed two's complement integer. That gives you a range of -128 to 127.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to actually use it:&lt;/strong&gt; Primarily in large arrays where memory genuinely matters — like reading raw file data, network streams, or image pixel processing. If you have an array of 10 million small numbers that fit in -128 to 127, using &lt;code&gt;byte[]&lt;/code&gt; instead of &lt;code&gt;int[]&lt;/code&gt; saves you 30MB right there.&lt;/p&gt;

&lt;p&gt;Don't reach for &lt;code&gt;byte&lt;/code&gt; in everyday code just to "save memory" on individual variables. The JVM often internally promotes bytes to &lt;code&gt;int&lt;/code&gt; for arithmetic anyway, so the benefit only shows at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;short&lt;/code&gt; — 16 bits, -32,768 to 32,767
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;short&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2024&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;short&lt;/span&gt; &lt;span class="n"&gt;population&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;32000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;short&lt;/code&gt; is 16 bits. Same story as &lt;code&gt;byte&lt;/code&gt; — you'd use it in large arrays where the data genuinely fits within the range and memory is a concern. In modern development, you'll rarely see &lt;code&gt;short&lt;/code&gt; in the wild. But it exists and it's valid.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;int&lt;/code&gt; — 32 bits, the workhorse
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;150000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;negativeValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2147483648&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Integer.MIN_VALUE&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;maxValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2147483647&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;       &lt;span class="c1"&gt;// Integer.MAX_VALUE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is your default integer type. 32 bits, stores values from roughly -2.1 billion to +2.1 billion. Whenever you write a whole number literal like &lt;code&gt;42&lt;/code&gt;, Java treats it as an &lt;code&gt;int&lt;/code&gt; by default.&lt;/p&gt;

&lt;p&gt;From Java 8 onward, you can also treat &lt;code&gt;int&lt;/code&gt; as an unsigned 32-bit integer using methods like &lt;code&gt;Integer.compareUnsigned()&lt;/code&gt; — but that's an edge case for lower-level work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;int&lt;/code&gt; unless you have a specific reason not to.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;long&lt;/code&gt; — 64 bits, when &lt;code&gt;int&lt;/code&gt; isn't enough
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;long&lt;/span&gt; &lt;span class="n"&gt;worldPopulation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8_000_000_000L&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;// notice the L suffix&lt;/span&gt;
&lt;span class="kt"&gt;long&lt;/span&gt; &lt;span class="n"&gt;nanoseconds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;nanoTime&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When your number outgrows &lt;code&gt;int&lt;/code&gt;'s ~2 billion limit, you step up to &lt;code&gt;long&lt;/code&gt;. It's 64 bits, which gets you up to about 9.2 &lt;em&gt;quintillion&lt;/em&gt;. Timestamps in milliseconds (like &lt;code&gt;System.currentTimeMillis()&lt;/code&gt;), large ID values, or file sizes in bytes are common use cases.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;L&lt;/code&gt; suffix is required when assigning a long literal that exceeds int's range. By convention, use uppercase &lt;code&gt;L&lt;/code&gt; — lowercase &lt;code&gt;l&lt;/code&gt; looks too much like the number &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;float&lt;/code&gt; — 32-bit decimal, single precision
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;9.99f&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;    &lt;span class="c1"&gt;// f suffix required&lt;/span&gt;
&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;pi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14f&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;float&lt;/code&gt; is a 32-bit IEEE 754 floating-point number. Notice the &lt;code&gt;f&lt;/code&gt; suffix — without it, Java assumes &lt;code&gt;double&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's the critical thing everyone should know: &lt;strong&gt;never use &lt;code&gt;float&lt;/code&gt; or &lt;code&gt;double&lt;/code&gt; for money.&lt;/strong&gt; Floating-point arithmetic isn't exact. This is a fundamental truth of how computers represent decimals in binary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.1f&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.2f&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 0.3 right? Nope — prints 0.3000000119&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For currency, use &lt;code&gt;java.math.BigDecimal&lt;/code&gt;. For scientific computations where a small rounding error is acceptable, &lt;code&gt;float&lt;/code&gt; or &lt;code&gt;double&lt;/code&gt; is fine.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;float&lt;/code&gt; over &lt;code&gt;double&lt;/code&gt; when you're working with large arrays of floating-point numbers and memory is tight.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;double&lt;/code&gt; — 64-bit decimal, double precision
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;gravity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;9.81&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;pi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.141592653589793&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is your default decimal type. Any decimal literal you write (like &lt;code&gt;3.14&lt;/code&gt;) is a &lt;code&gt;double&lt;/code&gt; by default. It's more precise than &lt;code&gt;float&lt;/code&gt; but still not exact — the same "don't use for money" rule applies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;double&lt;/code&gt; as your go-to for decimals. Use &lt;code&gt;float&lt;/code&gt; only when you need to save memory in large arrays.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;char&lt;/code&gt; — 16-bit Unicode character
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'A'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;symbol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;'\&lt;/span&gt;&lt;span class="n"&gt;u00A9&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// © copyright symbol&lt;/span&gt;
&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;newline&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'\n'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;char&lt;/code&gt; is 16 bits and holds a single Unicode character (UTF-16). The minimum value is &lt;code&gt;'\u0000'&lt;/code&gt; (0) and the maximum is &lt;code&gt;'\uffff'&lt;/code&gt; (65,535). This is why Java can handle characters from virtually any human language — the 16-bit Unicode space is large enough for the basic multilingual plane.&lt;/p&gt;

&lt;p&gt;One thing that surprises people: &lt;code&gt;char&lt;/code&gt; can also participate in arithmetic, since it's technically an unsigned integer under the hood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sc"&gt;'A'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// prints 66 (int arithmetic!)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;boolean&lt;/code&gt; — true or false, nothing else
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;isLoggedIn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;hasPermission&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two values. That's it. &lt;code&gt;boolean&lt;/code&gt; represents one bit of logical information.&lt;/p&gt;

&lt;p&gt;Interesting technical note: the Java specification says &lt;code&gt;boolean&lt;/code&gt;'s "size isn't something that's precisely defined." In practice, the JVM typically represents a &lt;code&gt;boolean&lt;/code&gt; field using a full byte (8 bits) for alignment purposes — but this is a JVM implementation detail, not a spec guarantee. In boolean arrays (&lt;code&gt;boolean[]&lt;/code&gt;), each element typically takes 1 byte. So don't assume &lt;code&gt;boolean&lt;/code&gt; magically saves memory compared to &lt;code&gt;byte&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Default Values — A Gotcha You Need to Know
&lt;/h2&gt;

&lt;p&gt;When you declare a field (a variable attached to a class) without initializing it, the JVM assigns a sensible default. Here's the full table from the &lt;a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html" rel="noopener noreferrer"&gt;official Oracle docs&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Default Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;byte&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;short&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0L&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;double&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.0d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;char&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;'\u0000'&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Any object&lt;/td&gt;
&lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;But here's the catch:&lt;/strong&gt; this only applies to &lt;em&gt;fields&lt;/em&gt; (class-level variables). Local variables — variables declared inside a method — get NO default value. Try to use one before assigning it and you'll get a compile error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;example&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Compile error: variable x might not have been initialized&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The compiler protects you here. Don't rely on defaults even for fields — it's considered bad practice. Initialize explicitly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Non-Primitive Types — Where Objects Live
&lt;/h2&gt;

&lt;p&gt;Non-primitive types are everything else: classes, arrays, interfaces, enums. They're all reference types. Let's hit the most important ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  String
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Ada Lovelace"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;empty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// valid — reference types can be null&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;String&lt;/code&gt; gets special treatment in Java. It's not technically primitive, but you can create one without &lt;code&gt;new&lt;/code&gt; by using a string literal. When you do that, Java places the string in a special area called the &lt;strong&gt;string pool&lt;/strong&gt; (inside the heap) and reuses it if the same literal is used again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;// true — same object from the pool&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;  &lt;span class="c1"&gt;// true — same content&lt;/span&gt;

&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;// false — different object!&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;  &lt;span class="c1"&gt;// true — content is same&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is why you should &lt;strong&gt;always use &lt;code&gt;.equals()&lt;/code&gt; to compare strings&lt;/strong&gt;, never &lt;code&gt;==&lt;/code&gt;. The &lt;code&gt;==&lt;/code&gt; operator compares references (are they the same object?), not content (do they contain the same text?).&lt;/p&gt;

&lt;p&gt;Also: &lt;code&gt;String&lt;/code&gt; is &lt;strong&gt;immutable&lt;/strong&gt;. Once created, its value cannot change. When you do &lt;code&gt;str = str + " world"&lt;/code&gt;, you're not modifying the original string — you're creating a brand new one. For heavy string manipulation in loops, use &lt;code&gt;StringBuilder&lt;/code&gt; instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Arrays
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"Alice"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Bob"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Charlie"&lt;/span&gt;&lt;span class="o"&gt;};&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[][]&lt;/span&gt; &lt;span class="n"&gt;matrix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;];&lt;/span&gt; &lt;span class="c1"&gt;// 2D array&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrays are objects in Java. Even &lt;code&gt;int[]&lt;/code&gt; is a reference type — it lives on the heap. Arrays have a fixed size once created (you can't resize them). If you need a growable list, use &lt;code&gt;ArrayList&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Classes and Objects
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Custom class — a non-primitive type you define&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;Person&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Person&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// p is a reference to a Person object on the heap&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you create an object with &lt;code&gt;new&lt;/code&gt;, the JVM allocates memory on the heap and returns a reference. Your variable holds that reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interfaces
&lt;/h3&gt;

&lt;p&gt;Interfaces are reference types used to define contracts. A variable of an interface type holds a reference to an object that implements that interface:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt; &lt;span class="c1"&gt;// List is an interface&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Where Does Everything Actually Live in Memory?
&lt;/h2&gt;

&lt;p&gt;This is the part most tutorials skip. Let's fix that.&lt;/p&gt;

&lt;p&gt;The JVM has two main memory areas you need to understand:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack memory&lt;/strong&gt; is where method execution happens. Every time you call a method, a new "stack frame" is pushed onto the stack. That frame holds the method's local variables and its return address. When the method returns, the frame is popped — the memory is instantly freed. Stack memory is fast, automatically managed, and thread-specific.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heap memory&lt;/strong&gt; is shared across the entire application. This is where objects live — anything created with &lt;code&gt;new&lt;/code&gt;. The garbage collector manages heap memory, cleaning up objects that are no longer referenced.&lt;/p&gt;

&lt;p&gt;Now here's how this maps to data types:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;myMethod&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;          &lt;span class="c1"&gt;// x lives on the stack — directly&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// s (the reference) lives on the stack,&lt;/span&gt;
                         &lt;span class="c1"&gt;// the String object lives on the heap&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reference variable &lt;code&gt;s&lt;/code&gt; is on the stack. The actual &lt;code&gt;String&lt;/code&gt; object it points to is on the heap. When &lt;code&gt;myMethod()&lt;/code&gt; finishes, &lt;code&gt;s&lt;/code&gt; disappears from the stack. If nothing else references that &lt;code&gt;String&lt;/code&gt;, it becomes eligible for garbage collection.&lt;/p&gt;




&lt;h2&gt;
  
  
  Static Fields vs Instance Fields — The Memory That Sticks Around
&lt;/h2&gt;

&lt;p&gt;Here's where things get interesting, and this connects directly to the static vs non-static question you had.&lt;/p&gt;

&lt;h3&gt;
  
  
  Instance Fields (Non-Static)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// instance field&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;speed&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;     &lt;span class="c1"&gt;// instance field&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;car1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="n"&gt;car2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;car1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"red"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;car2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"blue"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// completely independent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instance fields are declared without &lt;code&gt;static&lt;/code&gt;. Each object gets its own copy. &lt;code&gt;car1.color&lt;/code&gt; and &lt;code&gt;car2.color&lt;/code&gt; are completely separate values in memory — both on the heap, inside their respective &lt;code&gt;Car&lt;/code&gt; objects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Static Fields (Class Variables)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// static field — belongs to the CLASS&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++;&lt;/span&gt; &lt;span class="c1"&gt;// every new Counter instance shares this&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;Counter&lt;/span&gt; &lt;span class="n"&gt;c1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;Counter&lt;/span&gt; &lt;span class="n"&gt;c2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Counter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 2 — shared across all instances&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Static fields belong to the &lt;strong&gt;class itself&lt;/strong&gt;, not to any individual object. There is exactly one copy, regardless of how many instances you create. The JVM stores static fields in a special area associated with the class's metadata — historically called the PermGen, now called &lt;strong&gt;Metaspace&lt;/strong&gt; (since Java 8).&lt;/p&gt;

&lt;p&gt;As the &lt;a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variablesummary.html" rel="noopener noreferrer"&gt;Oracle docs&lt;/a&gt; state clearly: &lt;em&gt;"there is exactly one copy of a class variable, regardless of how many times the class has been instantiated."&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Variables
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;calculate&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;          &lt;span class="c1"&gt;// local variable — lives on the stack&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"done"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// local variable — reference on stack, object on heap&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Local variables live inside methods. They're created on the stack when the method starts and destroyed when it ends. The compiler &lt;strong&gt;never&lt;/strong&gt; assigns default values to local variables — you must initialize them yourself before use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary: Where Does Each Variable Type Live?
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable Kind&lt;/th&gt;
&lt;th&gt;Where It Lives&lt;/th&gt;
&lt;th&gt;Lifecycle&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local primitive&lt;/td&gt;
&lt;td&gt;Stack&lt;/td&gt;
&lt;td&gt;Method execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local reference&lt;/td&gt;
&lt;td&gt;Stack (reference) + Heap (object)&lt;/td&gt;
&lt;td&gt;Method execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instance primitive&lt;/td&gt;
&lt;td&gt;Heap (inside the object)&lt;/td&gt;
&lt;td&gt;Object's lifetime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Instance reference&lt;/td&gt;
&lt;td&gt;Heap (reference + object)&lt;/td&gt;
&lt;td&gt;Object's lifetime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static primitive&lt;/td&gt;
&lt;td&gt;Metaspace/class area&lt;/td&gt;
&lt;td&gt;Class is loaded → app ends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static reference&lt;/td&gt;
&lt;td&gt;Metaspace (reference) + Heap (object)&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  When to Use What — A Practical Decision Guide
&lt;/h2&gt;

&lt;p&gt;Let's make this actionable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;int&lt;/code&gt;&lt;/strong&gt; for any whole number unless you have a reason to do otherwise. It's the default, the most optimized, and the most readable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;long&lt;/code&gt;&lt;/strong&gt; when your number can exceed ~2.1 billion — timestamps, large IDs, file sizes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;double&lt;/code&gt;&lt;/strong&gt; for decimals. It's the default. Don't overthink it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;byte&lt;/code&gt; or &lt;code&gt;short&lt;/code&gt;&lt;/strong&gt; only in large arrays (thousands to millions of elements) where memory actually matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;float&lt;/code&gt;&lt;/strong&gt; over &lt;code&gt;double&lt;/code&gt; only when you're in a massive array context and need to halve the memory footprint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Never use &lt;code&gt;float&lt;/code&gt; or &lt;code&gt;double&lt;/code&gt; for money.&lt;/strong&gt; Use &lt;code&gt;BigDecimal&lt;/code&gt;. Seriously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;boolean&lt;/code&gt;&lt;/strong&gt; for flags and conditions. Resist the temptation to use &lt;code&gt;int&lt;/code&gt; with 0/1 — that's C thinking, not Java thinking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;char&lt;/code&gt;&lt;/strong&gt; when you genuinely need to work with individual characters. For text, use &lt;code&gt;String&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;String&lt;/code&gt; with &lt;code&gt;.equals()&lt;/code&gt;&lt;/strong&gt;, never &lt;code&gt;==&lt;/code&gt; for comparison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use &lt;code&gt;static&lt;/code&gt; for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Constants (&lt;code&gt;static final int MAX_SIZE = 100&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Utility/helper methods that don't need object state&lt;/li&gt;
&lt;li&gt;Counters or shared state across all instances (carefully)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Avoid &lt;code&gt;static&lt;/code&gt; for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anything that should be different per object&lt;/li&gt;
&lt;li&gt;Mutable shared state (thread-safety nightmare)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Memory Size Cheat Sheet
&lt;/h2&gt;

&lt;p&gt;Here's everything in one place:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Range / Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;byte&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8 bits (1 byte)&lt;/td&gt;
&lt;td&gt;-128 to 127&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;short&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;16 bits (2 bytes)&lt;/td&gt;
&lt;td&gt;-32,768 to 32,767&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32 bits (4 bytes)&lt;/td&gt;
&lt;td&gt;~-2.1B to ~2.1B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;long&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64 bits (8 bytes)&lt;/td&gt;
&lt;td&gt;~-9.2 quintillion to ~9.2 quintillion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;float&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32 bits (4 bytes)&lt;/td&gt;
&lt;td&gt;~±3.4×10³⁸, ~7 significant decimal digits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;double&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;64 bits (8 bytes)&lt;/td&gt;
&lt;td&gt;~±1.7×10³⁰⁸, ~15-16 significant decimal digits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;char&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;16 bits (2 bytes)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;'\u0000'&lt;/code&gt; to &lt;code&gt;'\uffff'&lt;/code&gt; (0 to 65,535)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~1 byte (JVM-dependent)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;Data types in Java aren't just syntax trivia. They're decisions that affect how much memory your program uses, how fast it runs, and how correctly it behaves. The difference between a &lt;code&gt;float&lt;/code&gt; and a &lt;code&gt;BigDecimal&lt;/code&gt; in a banking app isn't academic — it's the difference between correct output and off-by-a-penny errors.&lt;/p&gt;

&lt;p&gt;If you take away just a few things from this, let it be these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primitive types store values directly; reference types store addresses pointing to heap objects&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;int&lt;/code&gt; and &lt;code&gt;double&lt;/code&gt; as your defaults; only go smaller for memory-sensitive bulk data&lt;/li&gt;
&lt;li&gt;Never use floating-point for exact decimal arithmetic&lt;/li&gt;
&lt;li&gt;Static fields are shared across all instances — one copy per class, not per object&lt;/li&gt;
&lt;li&gt;Local variables need to be explicitly initialized; fields get defaults (but relying on defaults is bad practice)&lt;/li&gt;
&lt;li&gt;Always compare &lt;code&gt;String&lt;/code&gt; content with &lt;code&gt;.equals()&lt;/code&gt;, not &lt;code&gt;==&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Java type system feels rigid at first, but that rigidity is what lets the compiler catch entire classes of bugs before your code ever runs. Lean into it.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html" rel="noopener noreferrer"&gt;Oracle Java Tutorials — Primitive Data Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variablesummary.html" rel="noopener noreferrer"&gt;Oracle Java Tutorials — Summary of Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3" rel="noopener noreferrer"&gt;Java Language Specification — Floating-Point Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.baeldung.com/java-stack-heap" rel="noopener noreferrer"&gt;Baeldung — Stack Memory and Heap Space in Java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/java/java-stack-vs-heap-memory-allocation/" rel="noopener noreferrer"&gt;GeeksforGeeks — Java Stack vs Heap Memory Allocation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-2.html" rel="noopener noreferrer"&gt;JVM Specification — Chapter 2: Structure of the Java Virtual Machine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Understanding Loops, Conditions, and Real-World Logic Through a Train Journey</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Thu, 28 May 2026 13:33:21 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/understanding-loops-conditions-and-real-world-logic-through-a-train-journey-43h8</link>
      <guid>https://dev.to/kathirvel-s/understanding-loops-conditions-and-real-world-logic-through-a-train-journey-43h8</guid>
      <description>&lt;h1&gt;
  
  
  Train Story Logic with Python
&lt;/h1&gt;

&lt;p&gt;Programming becomes easier when we connect code with real-life stories.&lt;br&gt;
Instead of memorizing syntax, imagine a situation happening in the real world.&lt;/p&gt;

&lt;p&gt;In this blog, we are going to learn Python loops and conditions using a &lt;strong&gt;train station story&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We will build the logic slowly.&lt;/p&gt;

&lt;p&gt;Not directly with code.&lt;/p&gt;

&lt;p&gt;First, we will think like humans.&lt;/p&gt;

&lt;p&gt;Then we will teach that thinking to Python.&lt;/p&gt;

&lt;p&gt;Finally, we will combine everything into a complete working program.&lt;/p&gt;


&lt;h1&gt;
  
  
  The Story Begins
&lt;/h1&gt;

&lt;p&gt;Imagine there are &lt;strong&gt;300 railway stations&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two trains are traveling on the same railway route.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Train 1&lt;/strong&gt; stops at every station divisible by &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Train 2&lt;/strong&gt; stops at every station divisible by &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine a railway officer asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“At which station will both trains stop together?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is where logic begins.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 1 — Think Before Coding
&lt;/h1&gt;

&lt;p&gt;Before touching Python, let us think carefully.&lt;/p&gt;

&lt;p&gt;If Train 1 stops at stations divisible by 3:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3&lt;/li&gt;
&lt;li&gt;6&lt;/li&gt;
&lt;li&gt;9&lt;/li&gt;
&lt;li&gt;12&lt;/li&gt;
&lt;li&gt;15&lt;/li&gt;
&lt;li&gt;18&lt;/li&gt;
&lt;li&gt;21&lt;/li&gt;
&lt;li&gt;24&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And Train 2 stops at stations divisible by 8:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8&lt;/li&gt;
&lt;li&gt;16&lt;/li&gt;
&lt;li&gt;24&lt;/li&gt;
&lt;li&gt;32&lt;/li&gt;
&lt;li&gt;40&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now look carefully.&lt;/p&gt;

&lt;p&gt;Which station appears in both lists?&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;24&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24 is divisible by 3&lt;/li&gt;
&lt;li&gt;24 is divisible by 8&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So both trains stop there together.&lt;/p&gt;

&lt;p&gt;Now another question appears:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How do we teach Python to discover this automatically?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is where loops and conditions help us.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 2 — Understanding the Search Process
&lt;/h1&gt;

&lt;p&gt;Imagine a railway officer checking every station one by one.&lt;/p&gt;

&lt;p&gt;The officer starts from station 1.&lt;/p&gt;

&lt;p&gt;Then checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;station 2&lt;/li&gt;
&lt;li&gt;station 3&lt;/li&gt;
&lt;li&gt;station 4&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until station 300.&lt;/p&gt;

&lt;p&gt;At every station, the officer asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Is&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="n"&gt;divisible&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;divisible&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If YES:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Both&lt;/span&gt; &lt;span class="n"&gt;trains&lt;/span&gt; &lt;span class="n"&gt;meet&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is exactly what our first Python program does.&lt;/p&gt;




&lt;h1&gt;
  
  
  First Program — Finding the First Meeting Station
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Line 1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We start checking from station 1.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 3
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This loop means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Keep checking stations until station 300.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Python now behaves like a railway officer checking every station.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 5
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the heart of the logic.&lt;/p&gt;

&lt;p&gt;Let us decode it slowly.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does &lt;code&gt;%&lt;/code&gt; mean?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;%&lt;/code&gt; is called the &lt;strong&gt;modulus operator&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It gives the remainder.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because 24 divides perfectly by 3.&lt;/p&gt;

&lt;p&gt;Similarly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So when remainder becomes 0, it means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;number&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;divisible&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Understanding AND Condition
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means BOTH conditions must be true.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;divisible by 3 ✅&lt;/li&gt;
&lt;li&gt;divisible by 8 ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only then Python prints the station.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 6
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python prints the station where both trains meet.&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;24&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Line 7
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;break&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This stops the loop immediately.&lt;/p&gt;

&lt;p&gt;Because we only wanted the &lt;strong&gt;first meeting station&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Without &lt;code&gt;break&lt;/code&gt;, Python would continue checking all 300 stations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Line 9
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Move to the next station.&lt;/p&gt;

&lt;p&gt;Same as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 3 — Now Let Us Watch Both Trains
&lt;/h1&gt;

&lt;p&gt;Now we want something more interesting.&lt;/p&gt;

&lt;p&gt;Instead of finding only the meeting station, let us watch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;where Train 1 stops&lt;/li&gt;
&lt;li&gt;where Train 2 stops&lt;/li&gt;
&lt;li&gt;where both stop together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a beautiful railway simulation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Second Program — Tracking Both Trains
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 1 stopped at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 2 stopped at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 1 and train 2 stopped at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding the Logic Deeply
&lt;/h1&gt;

&lt;p&gt;Now Python checks every station from 1 to 30.&lt;/p&gt;

&lt;p&gt;At each station:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check Train 1&lt;/li&gt;
&lt;li&gt;Check Train 2&lt;/li&gt;
&lt;li&gt;Check whether both trains meet&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Example Walkthrough
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Station 3
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TRUE ✅&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Station 8
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TRUE&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Station 24
&lt;/h2&gt;

&lt;p&gt;Now something special happens.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both TRUE&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;stopped&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the meeting station.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4 — Railway Analytics System
&lt;/h1&gt;

&lt;p&gt;Now let us make the program smarter.&lt;/p&gt;

&lt;p&gt;Suppose railway management asks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many times did the trains meet?&lt;/li&gt;
&lt;li&gt;Which was the first meeting station?&lt;/li&gt;
&lt;li&gt;Which was the last meeting station?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we move from basic coding to data tracking.&lt;/p&gt;

&lt;p&gt;This is where variables become powerful.&lt;/p&gt;




&lt;h1&gt;
  
  
  Third Program — Counting Train Meetings
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train meets station at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;

        &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total station meet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first meet:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;last meet:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Breaking the Logic Slowly
&lt;/h1&gt;




&lt;h1&gt;
  
  
  Variable 1 — Count
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This counts how many times trains meet.&lt;/p&gt;

&lt;p&gt;Every time trains meet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Count increases.&lt;/p&gt;




&lt;h1&gt;
  
  
  Variable 2 — First Meeting Station
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initially unknown.&lt;/p&gt;

&lt;p&gt;Now observe this logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If this is the first meeting, store the station number.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Only the first meeting gets stored.&lt;/p&gt;




&lt;h1&gt;
  
  
  Variable 3 — Last Meeting Station
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every time trains meet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The value keeps updating.&lt;/p&gt;

&lt;p&gt;So finally it stores the latest meeting station.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens Internally?
&lt;/h1&gt;

&lt;p&gt;Meeting stations between 1 and 300 are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24&lt;/li&gt;
&lt;li&gt;48&lt;/li&gt;
&lt;li&gt;72&lt;/li&gt;
&lt;li&gt;96&lt;/li&gt;
&lt;li&gt;120&lt;/li&gt;
&lt;li&gt;144&lt;/li&gt;
&lt;li&gt;168&lt;/li&gt;
&lt;li&gt;192&lt;/li&gt;
&lt;li&gt;216&lt;/li&gt;
&lt;li&gt;240&lt;/li&gt;
&lt;li&gt;264&lt;/li&gt;
&lt;li&gt;288&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Total = 12 meetings.&lt;/p&gt;

&lt;p&gt;So output becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="n"&gt;meet&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="n"&gt;meet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="n"&gt;last&lt;/span&gt; &lt;span class="n"&gt;meet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;288&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Hidden Mathematics Behind the Story
&lt;/h1&gt;

&lt;p&gt;There is actually a mathematical secret here.&lt;/p&gt;

&lt;p&gt;The trains meet at numbers divisible by BOTH 3 and 8.&lt;/p&gt;

&lt;p&gt;That means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;LCM&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;LCM = 24&lt;/p&gt;

&lt;p&gt;So trains meet every 24 stations.&lt;/p&gt;

&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24&lt;/li&gt;
&lt;li&gt;48&lt;/li&gt;
&lt;li&gt;72&lt;/li&gt;
&lt;li&gt;96&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is how programming and mathematics work together beautifully.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Most beginners try to memorize Python syntax.&lt;/p&gt;

&lt;p&gt;But great programmers think differently.&lt;/p&gt;

&lt;p&gt;They first ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What is the real-world logic?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once logic becomes clear, code becomes easy.&lt;/p&gt;

&lt;p&gt;Programming is not about typing fast.&lt;/p&gt;

&lt;p&gt;Programming is about teaching the computer how to think step by step.&lt;/p&gt;

&lt;p&gt;And that is exactly what we did with our train story.&lt;/p&gt;




&lt;h1&gt;
  
  
  Complete Final Code 🚆
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Finding first meeting station
&lt;/span&gt;
&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;


&lt;span class="c1"&gt;# Watching both train stops
&lt;/span&gt;
&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 1 stopped at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 2 stopped at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train 1 and train 2 stopped at&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;


&lt;span class="c1"&gt;# Counting all meetings
&lt;/span&gt;
&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train meets station at :&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;

        &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;

    &lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;station_no&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total station meet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first meet:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;last meet:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Object-Oriented Programming (OOPs) in Java</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Wed, 27 May 2026 14:12:25 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/object-oriented-programming-oops-in-java-1noa</link>
      <guid>https://dev.to/kathirvel-s/object-oriented-programming-oops-in-java-1noa</guid>
      <description>&lt;p&gt;Java is one of the most popular programming languages in the world, and one major reason behind its popularity is &lt;strong&gt;Object-Oriented Programming&lt;/strong&gt;, commonly called &lt;strong&gt;OOPs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;OOPs is not just a programming style. It is a way of thinking and designing software so that programs become easier to build, understand, maintain, and reuse.&lt;/p&gt;

&lt;p&gt;In this blog, we will understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why OOPs was introduced&lt;/li&gt;
&lt;li&gt;Problems faced before OOPs&lt;/li&gt;
&lt;li&gt;What OOPs actually means&lt;/li&gt;
&lt;li&gt;Core concepts of OOPs in Java&lt;/li&gt;
&lt;li&gt;Real-world examples&lt;/li&gt;
&lt;li&gt;Advantages of OOPs&lt;/li&gt;
&lt;li&gt;Why modern software development depends on OOPs&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why Was OOPs Needed?
&lt;/h1&gt;

&lt;p&gt;Before OOPs became popular, most programs were written using &lt;strong&gt;procedural programming&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In procedural programming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code is divided into functions&lt;/li&gt;
&lt;li&gt;Data is shared globally&lt;/li&gt;
&lt;li&gt;Programs grow as a collection of procedures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach works fine for small programs, but as applications become large, several problems appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problems in Procedural Programming
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Code Becomes Difficult to Manage
&lt;/h3&gt;

&lt;p&gt;Imagine building a banking application with thousands of lines of code.&lt;/p&gt;

&lt;p&gt;If everything is written as functions and global variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One change may affect many parts&lt;/li&gt;
&lt;li&gt;Debugging becomes difficult&lt;/li&gt;
&lt;li&gt;Understanding the system takes more time&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Data Is Not Secure
&lt;/h3&gt;

&lt;p&gt;In procedural programming, data is often globally accessible.&lt;/p&gt;

&lt;p&gt;That means any function can modify important data accidentally.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any part of the program can directly change the balance.&lt;/p&gt;

&lt;p&gt;This creates security and reliability problems.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Reusability Is Poor
&lt;/h3&gt;

&lt;p&gt;Suppose you create a function for one project.&lt;/p&gt;

&lt;p&gt;Using it in another project may require major modifications because code is tightly connected.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Real-World Modeling Is Difficult
&lt;/h3&gt;

&lt;p&gt;Procedural programming focuses on functions.&lt;/p&gt;

&lt;p&gt;But the real world contains objects like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cars&lt;/li&gt;
&lt;li&gt;Students&lt;/li&gt;
&lt;li&gt;Employees&lt;/li&gt;
&lt;li&gt;Bank accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Representing these entities naturally becomes difficult.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Large Applications Become Complex
&lt;/h3&gt;

&lt;p&gt;Modern applications contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Millions of lines of code&lt;/li&gt;
&lt;li&gt;Multiple developers&lt;/li&gt;
&lt;li&gt;Different modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Managing such systems without proper structure becomes nearly impossible.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Problem Does OOPs Solve?
&lt;/h1&gt;

&lt;p&gt;OOPs solves these issues by organizing software around &lt;strong&gt;objects&lt;/strong&gt; instead of just functions.&lt;/p&gt;

&lt;p&gt;It provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better structure&lt;/li&gt;
&lt;li&gt;Data security&lt;/li&gt;
&lt;li&gt;Code reusability&lt;/li&gt;
&lt;li&gt;Easy maintenance&lt;/li&gt;
&lt;li&gt;Real-world modeling&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OOPs allows developers to build software like assembling components of a machine.&lt;/p&gt;

&lt;p&gt;Each object handles its own responsibilities.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is OOPs?
&lt;/h1&gt;

&lt;p&gt;Object-Oriented Programming is a programming paradigm based on the concept of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Objects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Classes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An object contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data (variables)&lt;/li&gt;
&lt;li&gt;Behavior (methods)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simple Definition
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;OOPs is a way of designing programs using objects that contain both data and functions together.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Understanding with a Real-World Example
&lt;/h1&gt;

&lt;p&gt;Think about a &lt;strong&gt;Car&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A car has:&lt;/p&gt;

&lt;h2&gt;
  
  
  Properties (Data)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Color&lt;/li&gt;
&lt;li&gt;Brand&lt;/li&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Behaviors (Functions)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start()&lt;/li&gt;
&lt;li&gt;Stop()&lt;/li&gt;
&lt;li&gt;Accelerate()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Java, we can represent this as an object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;color&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;brand&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;speed&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Car started"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;stop&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Car stopped"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Car&lt;/code&gt; is a class&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;color&lt;/code&gt;, &lt;code&gt;brand&lt;/code&gt;, &lt;code&gt;speed&lt;/code&gt; are data members&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;start()&lt;/code&gt; and &lt;code&gt;stop()&lt;/code&gt; are methods&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What Is a Class in Java?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;class&lt;/strong&gt; is a blueprint or template used to create objects.&lt;/p&gt;

&lt;p&gt;It defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Methods&lt;/li&gt;
&lt;li&gt;Structure&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;study&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" is studying"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This class describes what a student object should contain.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Is an Object?
&lt;/h1&gt;

&lt;p&gt;An object is a real instance created from a class.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Student&lt;/span&gt; &lt;span class="n"&gt;s1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Student&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Rahul"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;s1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;study&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;s1&lt;/code&gt; is an object&lt;/li&gt;
&lt;li&gt;It contains real values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Rahul&lt;/span&gt; &lt;span class="n"&gt;is&lt;/span&gt; &lt;span class="n"&gt;studying&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Core Concepts of OOPs in Java
&lt;/h1&gt;

&lt;p&gt;The foundation of OOPs is built on four major principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Abstraction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are called the &lt;strong&gt;four pillars of OOPs&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Encapsulation
&lt;/h1&gt;

&lt;p&gt;Encapsulation means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Wrapping data and methods together into a single unit.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It also means restricting direct access to data.&lt;/p&gt;

&lt;p&gt;This is achieved using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classes&lt;/li&gt;
&lt;li&gt;Access modifiers&lt;/li&gt;
&lt;li&gt;Getters and setters&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Encapsulation Is Important
&lt;/h2&gt;

&lt;p&gt;Without encapsulation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone can change data directly&lt;/li&gt;
&lt;li&gt;Data becomes unsafe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With encapsulation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data is controlled&lt;/li&gt;
&lt;li&gt;Validation becomes possible&lt;/li&gt;
&lt;li&gt;Security improves&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Example of Encapsulation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BankAccount&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;deposit&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="nf"&gt;getBalance&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;balance&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;balance&lt;/code&gt; is private&lt;/li&gt;
&lt;li&gt;Direct access is restricted&lt;/li&gt;
&lt;li&gt;Data can only be changed through methods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This protects important information.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Inheritance
&lt;/h1&gt;

&lt;p&gt;Inheritance allows one class to acquire properties and methods of another class.&lt;/p&gt;

&lt;p&gt;It promotes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code reuse&lt;/li&gt;
&lt;li&gt;Better organization&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Real-World Example
&lt;/h2&gt;

&lt;p&gt;A &lt;code&gt;Dog&lt;/code&gt; is an &lt;code&gt;Animal&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So the dog can inherit common animal properties.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Eating..."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;bark&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Barking..."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Usage:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;eat&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;bark&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Eating&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="nc"&gt;Barking&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;Dog&lt;/code&gt; class reused functionality from &lt;code&gt;Animal&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Polymorphism
&lt;/h1&gt;

&lt;p&gt;Polymorphism means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One thing behaving in multiple forms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In Java, polymorphism mainly occurs in two ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Method Overloading&lt;/li&gt;
&lt;li&gt;Method Overriding&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method Overloading
&lt;/h2&gt;

&lt;p&gt;Same method name with different parameters.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MathOperation&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;add()&lt;/code&gt; method behaves differently based on parameters.&lt;/p&gt;




&lt;h2&gt;
  
  
  Method Overriding
&lt;/h2&gt;

&lt;p&gt;A child class changes the behavior of a parent method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sound&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Animal makes sound"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Animal&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sound&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Dog barks"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Dog&lt;/span&gt; &lt;span class="n"&gt;barks&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  4. Abstraction
&lt;/h1&gt;

&lt;p&gt;Abstraction means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Showing only essential details and hiding implementation complexity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;When driving a car:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You use steering, brakes, accelerator&lt;/li&gt;
&lt;li&gt;You do not need to know engine internals&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Abstraction Matters
&lt;/h2&gt;

&lt;p&gt;It reduces complexity.&lt;/p&gt;

&lt;p&gt;Users focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What an object does&lt;/li&gt;
&lt;li&gt;Not how it works internally&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Abstraction Using Abstract Class
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Vehicle&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Car&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Vehicle&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Car starts with key"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Relationship Between Class and Object
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;Object&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Blueprint&lt;/td&gt;
&lt;td&gt;Real instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logical entity&lt;/td&gt;
&lt;td&gt;Physical entity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Defines structure&lt;/td&gt;
&lt;td&gt;Holds actual data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class = Car design&lt;/li&gt;
&lt;li&gt;Object = Actual car&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Features of OOPs in Java
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Modularity
&lt;/h2&gt;

&lt;p&gt;Programs are divided into smaller parts.&lt;/p&gt;

&lt;p&gt;Each class handles specific tasks.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Reusability
&lt;/h2&gt;

&lt;p&gt;Existing classes can be reused through inheritance.&lt;/p&gt;

&lt;p&gt;This reduces duplicate code.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Scalability
&lt;/h2&gt;

&lt;p&gt;Large applications become easier to expand.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Maintainability
&lt;/h2&gt;

&lt;p&gt;Errors can be fixed more easily because code is organized.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Security
&lt;/h2&gt;

&lt;p&gt;Encapsulation protects sensitive data.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real-Life Examples of OOPs
&lt;/h1&gt;

&lt;p&gt;OOPs exists everywhere in software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Banking System
&lt;/h2&gt;

&lt;p&gt;Objects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer&lt;/li&gt;
&lt;li&gt;Account&lt;/li&gt;
&lt;li&gt;Transaction&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  E-Commerce Website
&lt;/h2&gt;

&lt;p&gt;Objects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product&lt;/li&gt;
&lt;li&gt;Cart&lt;/li&gt;
&lt;li&gt;Order&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Why Java Is Called an Object-Oriented Language
&lt;/h1&gt;

&lt;p&gt;Java follows OOP principles strongly.&lt;/p&gt;

&lt;p&gt;In Java:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everything is organized into classes&lt;/li&gt;
&lt;li&gt;Objects are heavily used&lt;/li&gt;
&lt;li&gt;OOP concepts are built into the language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Java was designed to encourage structured software development.&lt;/p&gt;




&lt;h1&gt;
  
  
  Advantages of OOPs in Java
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Advantage&lt;/th&gt;
&lt;th&gt;Explanation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reusability&lt;/td&gt;
&lt;td&gt;Code can be reused&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;Data hiding protects information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flexibility&lt;/td&gt;
&lt;td&gt;Polymorphism improves adaptability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Easy Maintenance&lt;/td&gt;
&lt;td&gt;Organized code is easier to manage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalability&lt;/td&gt;
&lt;td&gt;Large systems become manageable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-World Modeling&lt;/td&gt;
&lt;td&gt;Programs represent real entities naturally&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  OOPs vs Procedural Programming
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Procedural Programming&lt;/th&gt;
&lt;th&gt;OOPs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Focuses on functions&lt;/td&gt;
&lt;td&gt;Focuses on objects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data is less secure&lt;/td&gt;
&lt;td&gt;Data hiding improves security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Difficult to manage large systems&lt;/td&gt;
&lt;td&gt;Better structure for large systems&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Less reusable&lt;/td&gt;
&lt;td&gt;Highly reusable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex maintenance&lt;/td&gt;
&lt;td&gt;Easier maintenance&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Object-Oriented Programming changed the way software is developed.&lt;/p&gt;

&lt;p&gt;Instead of writing large collections of functions, OOPs organizes programs into meaningful objects that represent real-world entities.&lt;/p&gt;

&lt;p&gt;OOPs helps solve major software development problems such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code complexity&lt;/li&gt;
&lt;li&gt;Poor maintainability&lt;/li&gt;
&lt;li&gt;Lack of security&lt;/li&gt;
&lt;li&gt;Low reusability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The four pillars of OOPs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Abstraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;make Java powerful for building scalable and maintainable applications.&lt;/p&gt;

&lt;p&gt;Today, most enterprise applications, mobile apps, banking systems, games, and web platforms rely heavily on OOP principles because they make software easier to understand, build, and grow.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Introduction to Java – The Language That Changed Programming</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Wed, 27 May 2026 05:07:51 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/introduction-to-java-the-language-that-changed-programming-3fml</link>
      <guid>https://dev.to/kathirvel-s/introduction-to-java-the-language-that-changed-programming-3fml</guid>
      <description>&lt;p&gt;Programming languages did not appear suddenly. Every new language was created to solve the problems of older languages. As technology grew, developers needed languages that were easier, safer, faster, and more portable.&lt;/p&gt;

&lt;p&gt;In the early days, programmers used low-level languages like Assembly Language. These languages were very hard to write and understand. Then came languages like C, which made programming easier and faster. But C also had some limitations such as memory management issues, security problems, and platform dependency.&lt;/p&gt;

&lt;p&gt;To solve some of these issues, C++ was introduced. It added Object-Oriented Programming concepts, which helped developers organize code better. However, C++ became complex because of features like pointers, multiple inheritance, and manual memory management.&lt;/p&gt;

&lt;p&gt;At that time, software companies wanted a language that was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple to learn&lt;/li&gt;
&lt;li&gt;Secure&lt;/li&gt;
&lt;li&gt;Platform independent&lt;/li&gt;
&lt;li&gt;Reliable&lt;/li&gt;
&lt;li&gt;Easy to maintain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Java entered the world.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Was Java Created?
&lt;/h1&gt;

&lt;p&gt;Java was created by &lt;strong&gt;James Gosling&lt;/strong&gt; and his team at Sun Microsystems in 1995.&lt;/p&gt;

&lt;p&gt;Initially, Java was designed for electronic devices like televisions, set-top boxes, and home appliances. The goal was to create a language that could run on different devices without changing the code.&lt;/p&gt;

&lt;p&gt;Later, with the rapid growth of the internet, Java became extremely popular for web applications and enterprise software.&lt;/p&gt;

&lt;p&gt;The main problems Java tried to solve were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platform dependency in C and C++&lt;/li&gt;
&lt;li&gt;Complex memory management&lt;/li&gt;
&lt;li&gt;Security vulnerabilities&lt;/li&gt;
&lt;li&gt;Difficult code maintenance&lt;/li&gt;
&lt;li&gt;Lack of portability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Java introduced the concept:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Write Once, Run Anywhere.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This means a Java program can run on any operating system if Java is installed.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is Java?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Official Definition of Java
&lt;/h2&gt;

&lt;p&gt;Java is a &lt;strong&gt;high-level, object-oriented, platform-independent programming language&lt;/strong&gt; used to develop desktop, web, mobile, and enterprise applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Simple and Understandable Definition
&lt;/h2&gt;

&lt;p&gt;Java is a programming language that helps developers create applications that can run on different devices and operating systems without changing the code.&lt;/p&gt;

&lt;p&gt;In simple words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Java is a language that allows us to write code once and run it anywhere.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  How Java Runs
&lt;/h1&gt;

&lt;p&gt;Java has a special execution process that makes it platform independent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Writing Java Code
&lt;/h2&gt;

&lt;p&gt;The programmer writes code in a file with &lt;code&gt;.java&lt;/code&gt; extension.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Hello&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello Java"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2: Compilation by JDK
&lt;/h2&gt;

&lt;p&gt;The Java compiler inside the JDK converts the source code into &lt;strong&gt;Bytecode&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Source Code → Bytecode&lt;/p&gt;

&lt;p&gt;The generated file has a &lt;code&gt;.class&lt;/code&gt; extension.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is JDK?
&lt;/h3&gt;

&lt;p&gt;JDK stands for &lt;strong&gt;Java Development Kit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compiler (&lt;code&gt;javac&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Development tools&lt;/li&gt;
&lt;li&gt;JRE&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;JDK is mainly used by developers to create Java programs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Bytecode
&lt;/h1&gt;

&lt;p&gt;Bytecode is an intermediate code generated by the Java compiler.&lt;/p&gt;

&lt;p&gt;It is not machine code.&lt;/p&gt;

&lt;p&gt;It is a special code understood by the Java Virtual Machine (JVM).&lt;/p&gt;

&lt;p&gt;Because of bytecode, Java becomes platform independent.&lt;/p&gt;




&lt;h1&gt;
  
  
  Role of JRE
&lt;/h1&gt;

&lt;p&gt;JRE stands for &lt;strong&gt;Java Runtime Environment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It provides the environment needed to run Java programs.&lt;/p&gt;

&lt;p&gt;JRE contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JVM&lt;/li&gt;
&lt;li&gt;Libraries&lt;/li&gt;
&lt;li&gt;Supporting files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without JRE, Java programs cannot run.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is JVM?
&lt;/h1&gt;

&lt;p&gt;JVM stands for &lt;strong&gt;Java Virtual Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is responsible for executing Java bytecode.&lt;/p&gt;

&lt;p&gt;The JVM converts bytecode into machine code that the computer understands.&lt;/p&gt;

&lt;p&gt;JVM is the main reason Java is platform independent.&lt;/p&gt;




&lt;h1&gt;
  
  
  Interpreter in Java
&lt;/h1&gt;

&lt;p&gt;Initially, the JVM uses an &lt;strong&gt;Interpreter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The interpreter reads bytecode line by line and converts it into machine code.&lt;/p&gt;

&lt;p&gt;This process is simple but slower because every line is translated during execution.&lt;/p&gt;




&lt;h1&gt;
  
  
  JIT Compiler
&lt;/h1&gt;

&lt;p&gt;To improve performance, Java uses a &lt;strong&gt;JIT (Just-In-Time) Compiler&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The JIT compiler identifies frequently used code and converts it into native machine code.&lt;/p&gt;

&lt;p&gt;This makes Java programs run much faster.&lt;/p&gt;




&lt;h1&gt;
  
  
  Java Execution Flow
&lt;/h1&gt;

&lt;p&gt;The complete flow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Java Source Code (.java)
        ↓
Compiler (JDK)
        ↓
Bytecode (.class)
        ↓
JVM inside JRE
        ↓
Interpreter + JIT Compiler
        ↓
Machine Code
        ↓
Program Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Where is Java Used?
&lt;/h1&gt;

&lt;p&gt;Java is used in many areas because of its stability and portability.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Web Applications
&lt;/h2&gt;

&lt;p&gt;Java is widely used for backend development.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Banking systems&lt;/li&gt;
&lt;li&gt;E-commerce websites&lt;/li&gt;
&lt;li&gt;Enterprise applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Boot&lt;/li&gt;
&lt;li&gt;Hibernate&lt;/li&gt;
&lt;li&gt;JSP&lt;/li&gt;
&lt;li&gt;Servlets&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Android App Development
&lt;/h2&gt;

&lt;p&gt;Android applications were mainly built using Java for many years.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mobile apps&lt;/li&gt;
&lt;li&gt;Games&lt;/li&gt;
&lt;li&gt;Utility applications&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Enterprise Applications
&lt;/h2&gt;

&lt;p&gt;Large companies use Java for secure and scalable systems.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Banking software&lt;/li&gt;
&lt;li&gt;Insurance systems&lt;/li&gt;
&lt;li&gt;ERP software&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Desktop Applications
&lt;/h2&gt;

&lt;p&gt;Java can create desktop software using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaFX&lt;/li&gt;
&lt;li&gt;Swing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Media players&lt;/li&gt;
&lt;li&gt;Management systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Cloud and Big Data
&lt;/h2&gt;

&lt;p&gt;Java is used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hadoop&lt;/li&gt;
&lt;li&gt;Apache Kafka&lt;/li&gt;
&lt;li&gt;Cloud platforms&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Embedded Systems
&lt;/h2&gt;

&lt;p&gt;Java is also used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart cards&lt;/li&gt;
&lt;li&gt;IoT devices&lt;/li&gt;
&lt;li&gt;Electronic systems&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Features of Java
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Platform Independent
&lt;/h2&gt;

&lt;p&gt;Java programs can run on any operating system.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Object-Oriented
&lt;/h2&gt;

&lt;p&gt;Java follows Object-Oriented Programming concepts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Class&lt;/li&gt;
&lt;li&gt;Object&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Simple
&lt;/h2&gt;

&lt;p&gt;Java removed complex features like pointers and manual memory management.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Secure
&lt;/h2&gt;

&lt;p&gt;Java provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bytecode verification&lt;/li&gt;
&lt;li&gt;Secure runtime environment&lt;/li&gt;
&lt;li&gt;No direct memory access&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Robust
&lt;/h2&gt;

&lt;p&gt;Java handles errors properly and has automatic garbage collection.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Multithreading
&lt;/h2&gt;

&lt;p&gt;Java supports running multiple tasks at the same time.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. High Performance
&lt;/h2&gt;

&lt;p&gt;With the help of the JIT compiler, Java performance improved significantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Distributed
&lt;/h2&gt;

&lt;p&gt;Java supports network-based applications easily.&lt;/p&gt;




&lt;h1&gt;
  
  
  Advantages of Java
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Easy to Learn
&lt;/h2&gt;

&lt;p&gt;Java syntax is simple and readable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Platform Independent
&lt;/h2&gt;

&lt;p&gt;Code can run on multiple systems.&lt;/p&gt;




&lt;h2&gt;
  
  
  Secure
&lt;/h2&gt;

&lt;p&gt;Widely used in banking and enterprise applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Huge Community Support
&lt;/h2&gt;

&lt;p&gt;Millions of developers use Java worldwide.&lt;/p&gt;




&lt;h2&gt;
  
  
  Rich Libraries and Frameworks
&lt;/h2&gt;

&lt;p&gt;Java has powerful frameworks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring&lt;/li&gt;
&lt;li&gt;Hibernate&lt;/li&gt;
&lt;li&gt;Maven&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Automatic Memory Management
&lt;/h2&gt;

&lt;p&gt;Garbage Collection automatically removes unused memory.&lt;/p&gt;




&lt;h1&gt;
  
  
  Disadvantages of Java
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Slower Than Native Languages
&lt;/h2&gt;

&lt;p&gt;Java can be slower compared to C and C++ because it runs through JVM.&lt;/p&gt;




&lt;h2&gt;
  
  
  More Memory Usage
&lt;/h2&gt;

&lt;p&gt;Java applications consume more memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  Verbose Code
&lt;/h2&gt;

&lt;p&gt;Java often requires writing more lines of code.&lt;/p&gt;




&lt;h2&gt;
  
  
  GUI Development is Less Popular
&lt;/h2&gt;

&lt;p&gt;Modern UI development is less preferred in Java compared to newer technologies.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Java became popular because it solved many problems found in older programming languages. It introduced platform independence, security, simplicity, and better memory management.&lt;/p&gt;

&lt;p&gt;Today, Java is one of the most trusted programming languages in the world. From web applications to enterprise systems and Android apps, Java continues to play a major role in software development.&lt;/p&gt;

&lt;p&gt;Even after many years, Java remains relevant because of its stability, large ecosystem, and continuous improvements.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to learn a language that is powerful, reliable, and widely used in the industry, Java is still one of the best choices.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Learn Python Logic Through the Frog Escape Story</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Tue, 26 May 2026 13:23:39 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/learn-python-logic-through-the-frog-escape-story-1bdd</link>
      <guid>https://dev.to/kathirvel-s/learn-python-logic-through-the-frog-escape-story-1bdd</guid>
      <description>&lt;p&gt;When we start learning programming, many people jump directly into writing code. But good programmers first try to understand the &lt;strong&gt;logic&lt;/strong&gt; behind the problem.&lt;/p&gt;

&lt;p&gt;In this blog, we will solve two interesting problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sum of &lt;code&gt;n&lt;/code&gt; numbers&lt;/li&gt;
&lt;li&gt;A frog escaping from a 50-feet well&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of writing code immediately, we will first think like humans and build the logic step by step.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. Sum of N Numbers Using While Loop
&lt;/h1&gt;

&lt;p&gt;Suppose we want to find the sum from &lt;code&gt;1&lt;/code&gt; to &lt;code&gt;n&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 + 2 + 3 + 4 + 5 = 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Step 1: Understand the Logic
&lt;/h1&gt;

&lt;p&gt;Before coding, think carefully.&lt;/p&gt;

&lt;p&gt;We need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start from number &lt;code&gt;1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep adding numbers one by one&lt;/li&gt;
&lt;li&gt;Stop when we reach &lt;code&gt;n&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We will use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one variable for counting numbers&lt;/li&gt;
&lt;li&gt;one variable for storing the total sum&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 2: Dry Run
&lt;/h1&gt;

&lt;p&gt;Suppose &lt;code&gt;n = 5&lt;/code&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current Number&lt;/th&gt;
&lt;th&gt;Total Sum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now the logic becomes easy.&lt;/p&gt;




&lt;h1&gt;
  
  
  Python Code Using While Loop
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter a number: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;
    &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sum is:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Explanation of the Code
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;i = 1&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;We start counting from 1.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;total = 0&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This variable stores the final sum.&lt;/p&gt;

&lt;p&gt;Initially, sum is zero.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;while i &amp;lt;= n&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The loop runs until &lt;code&gt;i&lt;/code&gt; becomes greater than &lt;code&gt;n&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;total = total + i&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This line adds the current number into the total.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;total = 0 + 1
total = 1 + 2
total = 3 + 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and so on.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;code&gt;i = i + 1&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This increases the value of &lt;code&gt;i&lt;/code&gt; by 1 every time.&lt;/p&gt;

&lt;p&gt;Without this line, the loop would run forever.&lt;/p&gt;




&lt;h1&gt;
  
  
  Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter a number: 5
Sum is: 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. Frog Story – Escaping From the Well
&lt;/h1&gt;

&lt;p&gt;Now let’s solve a famous logic problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Story
&lt;/h1&gt;

&lt;p&gt;A frog falls into a well that is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 feet deep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frog climbs up &lt;code&gt;2 feet&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;At night, it slips down &lt;code&gt;1.25 feet&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In how many days will the frog escape?&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Step 1: Think About the Logic
&lt;/h1&gt;

&lt;p&gt;First understand what happens in one complete day.&lt;/p&gt;

&lt;p&gt;During the day:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+2 feet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At night:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-1.25 feet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So actual progress in one full day is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 - 1.25 = 0.75 feet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means the frog slowly moves upward.&lt;/p&gt;




&lt;h1&gt;
  
  
  Code
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;
&lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;down&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.25&lt;/span&gt;
&lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
    &lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;day&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Proper Explanation of This Code
&lt;/h1&gt;

&lt;p&gt;At first glance, this code may look confusing because:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feet starts from 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;feet&lt;/code&gt; does not represent how much the frog climbed.&lt;/p&gt;

&lt;p&gt;Instead, it represents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;how much distance is still left
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;feet = 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 feet are remaining to escape
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding the Main Logic
&lt;/h1&gt;

&lt;p&gt;Inside the loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;feet&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;down&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;subtract the upward climb&lt;/li&gt;
&lt;li&gt;add the downward slip&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So every day:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;remaining distance decreases by 0.75 feet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;because:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 - 1.25 = 0.75
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Day-by-Day Understanding
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Day 1
&lt;/h2&gt;

&lt;p&gt;Remaining distance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 - 2 + 1.25 = 49.25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Day 2
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;49.25 - 2 + 1.25 = 48.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;The remaining distance keeps decreasing slowly.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;code&gt;day = day + 1&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;This line counts the number of days.&lt;/p&gt;

&lt;p&gt;Each loop means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;one full day completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  &lt;code&gt;while feet &amp;gt; 0&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;The loop runs until the remaining distance becomes zero or negative.&lt;/p&gt;

&lt;p&gt;That means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frog has escaped
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Final Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;67
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Important Note About This Logic
&lt;/h1&gt;

&lt;p&gt;This code is mathematically correct according to the loop logic.&lt;/p&gt;

&lt;p&gt;But in real-life logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the frog escapes immediately when it reaches the top&lt;/li&gt;
&lt;li&gt;it should not slip back on the final day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the more realistic answer is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;65 days
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the given code treats every day as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;climb first and slip every single time
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is why the output becomes slightly different.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Programming is not only about syntax and coding.&lt;br&gt;
Real programming starts with thinking.&lt;/p&gt;

&lt;p&gt;Whether it is finding the sum of numbers or helping a frog escape a well, logic always comes first.&lt;/p&gt;

&lt;p&gt;So next time you solve a problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think first, code later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the mindset of a good programmer.&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>coding</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Conditional Statements and Control Flow in Python</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Mon, 25 May 2026 05:20:15 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/conditional-statements-and-control-flow-in-python-14h5</link>
      <guid>https://dev.to/kathirvel-s/conditional-statements-and-control-flow-in-python-14h5</guid>
      <description>&lt;p&gt;When we first start learning programming, most beginners immediately jump into writing code. But before writing even a single line, there is something more important:&lt;/p&gt;

&lt;h1&gt;
  
  
  Thinking.
&lt;/h1&gt;

&lt;p&gt;Programming is not only about typing code.&lt;br&gt;
Programming is about teaching the computer &lt;strong&gt;how to think step by step&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A computer is very fast, but it is not intelligent by itself.&lt;br&gt;
It only follows instructions that we give.&lt;/p&gt;

&lt;p&gt;So before learning Python syntax, ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does a program make decisions?&lt;/li&gt;
&lt;li&gt;How does a program repeat tasks?&lt;/li&gt;
&lt;li&gt;How does a computer choose between two options?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where &lt;strong&gt;Conditional Statements&lt;/strong&gt; and &lt;strong&gt;Control Flow&lt;/strong&gt; come into the picture.&lt;/p&gt;


&lt;h1&gt;
  
  
  What is Control Flow?
&lt;/h1&gt;

&lt;p&gt;Control flow means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The order in which a program executes instructions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of it like traffic on a road.&lt;/p&gt;

&lt;p&gt;A program does not run everything at once.&lt;br&gt;
It moves step by step.&lt;/p&gt;

&lt;p&gt;Sometimes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it goes forward,&lt;/li&gt;
&lt;li&gt;sometimes it takes a different path,&lt;/li&gt;
&lt;li&gt;sometimes it repeats the same path again and again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python controls this flow using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;if&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elif&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;loops like &lt;code&gt;while&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These statements help Python make decisions like a human.&lt;/p&gt;


&lt;h1&gt;
  
  
  Imagine This Real-Life Situation
&lt;/h1&gt;

&lt;p&gt;Suppose three students scored marks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arun → 15&lt;/li&gt;
&lt;li&gt;Bala → 20&lt;/li&gt;
&lt;li&gt;Charles → 45&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now someone asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Who scored the highest marks?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before answering, your brain automatically compares all three values.&lt;/p&gt;

&lt;p&gt;You think like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is Arun greater than Bala and Charles?&lt;/li&gt;
&lt;li&gt;No.&lt;/li&gt;
&lt;li&gt;Is Bala greater than Arun and Charles?&lt;/li&gt;
&lt;li&gt;No.&lt;/li&gt;
&lt;li&gt;Then Charles must be the highest.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This exact thinking process is what we teach Python.&lt;/p&gt;


&lt;h1&gt;
  
  
  Conditional Statements in Python
&lt;/h1&gt;

&lt;p&gt;Python uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to make decisions.&lt;/p&gt;




&lt;h1&gt;
  
  
  Finding the Largest Number
&lt;/h1&gt;

&lt;p&gt;Now let’s convert our thinking into code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding the Code Slowly
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1 — Creating Variables
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Variables are containers that store values.&lt;/p&gt;

&lt;p&gt;Here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;a&lt;/code&gt; stores 15&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;b&lt;/code&gt; stores 20&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;c&lt;/code&gt; stores 45&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 2 — The if Statement
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is &lt;code&gt;a&lt;/code&gt; greater than &lt;code&gt;b&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;AND&lt;/li&gt;
&lt;li&gt;Is &lt;code&gt;a&lt;/code&gt; greater than &lt;code&gt;c&lt;/code&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The keyword &lt;code&gt;and&lt;/code&gt; means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Both conditions must be True.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now Python checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;span class="mi"&gt;15&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the condition is False, Python skips this block.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 3 — elif Statement
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;elif&lt;/code&gt; means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Check another condition.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now Python checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;45&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again False.&lt;/p&gt;

&lt;p&gt;So Python skips this too.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4 — else Statement
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;else&lt;/code&gt; means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If nothing above is true, run this.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So Python prints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;45&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;45&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why This Program Matters
&lt;/h1&gt;

&lt;p&gt;This small program teaches powerful programming concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Decision making&lt;/li&gt;
&lt;li&gt;Comparison operators&lt;/li&gt;
&lt;li&gt;Logical thinking&lt;/li&gt;
&lt;li&gt;Problem solving&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the foundation of real programming.&lt;/p&gt;




&lt;h1&gt;
  
  
  Another Example — Comparing Two Numbers
&lt;/h1&gt;

&lt;p&gt;Before coding, think first.&lt;/p&gt;

&lt;p&gt;Suppose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a = 10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b = 5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which number is greater?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your brain instantly says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10 is greater.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now let’s teach Python the same thinking.&lt;/p&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding the Logic
&lt;/h1&gt;

&lt;p&gt;Python checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So Python executes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the condition is True, the &lt;code&gt;else&lt;/code&gt; block is ignored.&lt;/p&gt;




&lt;h1&gt;
  
  
  Truthy and Falsy Values
&lt;/h1&gt;

&lt;p&gt;Now let’s explore something interesting.&lt;/p&gt;

&lt;p&gt;Before coding, think carefully:&lt;/p&gt;

&lt;p&gt;If I write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What is Python checking?&lt;/p&gt;

&lt;p&gt;Most beginners get confused here.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Important Idea
&lt;/h1&gt;

&lt;p&gt;In Python:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some values behave like &lt;code&gt;True&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Some values behave like &lt;code&gt;False&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is called:&lt;/p&gt;

&lt;h1&gt;
  
  
  Truthy and Falsy Values
&lt;/h1&gt;




&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;b&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What Happens Here?
&lt;/h1&gt;

&lt;p&gt;Python checks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since &lt;code&gt;-0.1&lt;/code&gt; is not zero, Python treats it as &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So output becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Important Rule
&lt;/h1&gt;

&lt;p&gt;In Python:&lt;/p&gt;

&lt;p&gt;These are considered False:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="mf"&gt;0.0&lt;/span&gt;
&lt;span class="bp"&gt;False&lt;/span&gt;
&lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="sh"&gt;''&lt;/span&gt;
&lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything else is usually True.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why This Concept Is Powerful
&lt;/h1&gt;

&lt;p&gt;This helps programmers write cleaner and smarter code.&lt;/p&gt;

&lt;p&gt;You will see this concept everywhere in real-world Python applications.&lt;/p&gt;




&lt;h1&gt;
  
  
  Now Let’s Think About Repetition
&lt;/h1&gt;

&lt;p&gt;Imagine printing numbers manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is boring and repetitive.&lt;/p&gt;

&lt;p&gt;A programmer always asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can I automate this?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is why loops exist.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a while Loop?
&lt;/h1&gt;

&lt;p&gt;A &lt;code&gt;while&lt;/code&gt; loop repeats code while a condition remains True.&lt;/p&gt;

&lt;p&gt;Basic syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;code&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Printing the Same Number Multiple Times
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Think Before Understanding the Loop
&lt;/h1&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where does the loop start?&lt;/li&gt;
&lt;li&gt;When does it stop?&lt;/li&gt;
&lt;li&gt;What changes inside the loop?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These three questions help you understand any loop in programming.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step-by-Step Explanation
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1 — Initialize Variable
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This variable controls the loop.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 2 — Condition
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Repeat while count is less than or equal to 5.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Step 3 — Print Statement
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prints &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;end=' '&lt;/code&gt; keeps everything on the same line.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 4 — Increment
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This increases the count value.&lt;/p&gt;

&lt;p&gt;Without this line, the loop would never stop.&lt;/p&gt;




&lt;h1&gt;
  
  
  Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Printing Numbers from 1 to 5
&lt;/h1&gt;

&lt;p&gt;Now instead of printing the same number, let’s print the changing value of &lt;code&gt;count&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What Happens Internally?
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;count&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When &lt;code&gt;count&lt;/code&gt; becomes 6:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This becomes False.&lt;/p&gt;

&lt;p&gt;So the loop stops.&lt;/p&gt;




&lt;h1&gt;
  
  
  Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Printing with Addition Logic
&lt;/h1&gt;

&lt;p&gt;Now let’s make the loop smarter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Thinking Process
&lt;/h1&gt;

&lt;p&gt;Instead of printing &lt;code&gt;count&lt;/code&gt;, we print:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So Python calculates:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;count&lt;/th&gt;
&lt;th&gt;count + 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Output from Loop
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What Happens After the Loop?
&lt;/h1&gt;

&lt;p&gt;After the loop finishes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the loop stops only after count becomes greater than 5.&lt;/p&gt;




&lt;h1&gt;
  
  
  First Print
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Second Print
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python calculates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Final Output
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="mi"&gt;6&lt;/span&gt;
&lt;span class="mi"&gt;12&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Beginner Mistakes
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Forgetting Indentation
&lt;/h2&gt;

&lt;p&gt;Python uses spaces to understand blocks.&lt;/p&gt;

&lt;p&gt;Correct:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wrong:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. Infinite Loops
&lt;/h1&gt;

&lt;p&gt;If you forget:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the loop runs forever.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Confusing = and ==
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;=&lt;/span&gt;   &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;assignment&lt;/span&gt;
&lt;span class="o"&gt;==&lt;/span&gt;  &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;comparison&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This mistake is extremely common for beginners.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Programming is not about memorizing syntax.&lt;/p&gt;

&lt;p&gt;It is about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;observing problems,&lt;/li&gt;
&lt;li&gt;thinking logically,&lt;/li&gt;
&lt;li&gt;and breaking solutions into steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conditional statements teach computers how to make decisions.&lt;/p&gt;

&lt;p&gt;Loops teach computers how to repeat tasks efficiently.&lt;/p&gt;

&lt;p&gt;Once you truly understand these concepts, you start thinking like a programmer.&lt;/p&gt;

&lt;p&gt;And that is the real beginning of learning Python.&lt;/p&gt;

</description>
      <category>python</category>
      <category>learning</category>
      <category>beginners</category>
      <category>coding</category>
    </item>
    <item>
      <title>The Art of Reading Red JavaScript Errors Without Panicking</title>
      <dc:creator>Kathirvel S</dc:creator>
      <pubDate>Sun, 24 May 2026 09:59:07 +0000</pubDate>
      <link>https://dev.to/kathirvel-s/the-art-of-reading-red-javascript-errors-without-panicking-1fi8</link>
      <guid>https://dev.to/kathirvel-s/the-art-of-reading-red-javascript-errors-without-panicking-1fi8</guid>
      <description>&lt;p&gt;Welcome to Episode 4 of "Sunday Source".&lt;/p&gt;

&lt;p&gt;Today’s villain?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Errors in the JavaScript Console.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That scary red text developers pretend they understand instantly.&lt;/p&gt;

&lt;p&gt;And honestly, console errors are one of those things every developer eventually becomes friends with. Not because we want to… but because JavaScript forces us to.&lt;/p&gt;

&lt;p&gt;At first, console errors feel intimidating.&lt;br&gt;
You see giant red messages.&lt;br&gt;
Random line numbers.&lt;br&gt;
Weird terms like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Uncaught TypeError
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Unexpected token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And suddenly it feels like the browser is speaking another language.&lt;/p&gt;

&lt;p&gt;But after enough broken projects, failed experiments, and late-night debugging sessions, you start realizing something important:&lt;/p&gt;

&lt;p&gt;The console is actually trying to help you.&lt;/p&gt;

&lt;p&gt;It’s not attacking you.&lt;/p&gt;

&lt;p&gt;It’s reporting what went wrong.&lt;/p&gt;

&lt;p&gt;And once you learn how to read those messages properly, debugging becomes less scary and more like solving small puzzles.&lt;/p&gt;

&lt;p&gt;This episode is basically about turning those scary red errors into something understandable.&lt;/p&gt;

&lt;p&gt;Because every developer reaches a point where the console stops being terrifying…&lt;/p&gt;

&lt;p&gt;…and starts becoming useful.&lt;/p&gt;




&lt;h1&gt;
  
  
  The First Time the Console Destroyed My Confidence
&lt;/h1&gt;

&lt;p&gt;I still remember writing something super simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I refreshed the page expecting magic.&lt;/p&gt;

&lt;p&gt;Instead, the browser responded with this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Uncaught ReferenceError: userName is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that moment, I had two thoughts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“What is uncaught?”&lt;/li&gt;
&lt;li&gt;“Why is JavaScript angry at me?”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And the funniest part?&lt;/p&gt;

&lt;p&gt;I genuinely thought my browser was broken.&lt;/p&gt;

&lt;p&gt;I refreshed the page multiple times like that would somehow fix my typo.&lt;/p&gt;

&lt;p&gt;Spoiler:&lt;/p&gt;

&lt;p&gt;It did not.&lt;/p&gt;

&lt;p&gt;If you've ever opened DevTools and seen a wall of red messages, congratulations — you're officially coding.&lt;/p&gt;

&lt;p&gt;The console is not your enemy.&lt;/p&gt;

&lt;p&gt;It’s actually JavaScript trying very hard to tell you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hey… something broke. Here’s where. Please fix it before users see this.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And once you learn how to read console errors, debugging becomes way less terrifying.&lt;/p&gt;

&lt;p&gt;The problem is that most developers initially treat errors emotionally instead of logically.&lt;/p&gt;

&lt;p&gt;You see red text and immediately think:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Everything is ruined.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But most errors are actually small.&lt;/p&gt;

&lt;p&gt;A typo.&lt;br&gt;
A missing bracket.&lt;br&gt;
A wrong variable name.&lt;br&gt;
A file that didn’t load.&lt;/p&gt;

&lt;p&gt;Tiny mistakes causing dramatic reactions.&lt;/p&gt;

&lt;p&gt;Which honestly describes JavaScript perfectly.&lt;/p&gt;


&lt;h1&gt;
  
  
  What Even Is the JavaScript Console?
&lt;/h1&gt;

&lt;p&gt;The console is like a &lt;strong&gt;live communication channel&lt;/strong&gt; between your code and the browser.&lt;/p&gt;

&lt;p&gt;Your browser logs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;errors&lt;/li&gt;
&lt;li&gt;warnings&lt;/li&gt;
&lt;li&gt;failed network requests&lt;/li&gt;
&lt;li&gt;custom messages&lt;/li&gt;
&lt;li&gt;debugging information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can open it with:&lt;/p&gt;
&lt;h3&gt;
  
  
  Chrome / Edge
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;F12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Ctrl + Shift + I
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then go to the &lt;strong&gt;Console&lt;/strong&gt; tab.&lt;/p&gt;

&lt;p&gt;Now you can officially watch your bugs in real time.&lt;/p&gt;

&lt;p&gt;Fun.&lt;/p&gt;

&lt;p&gt;But the console is more powerful than most developers realize.&lt;/p&gt;

&lt;p&gt;It’s not just a place where errors appear.&lt;/p&gt;

&lt;p&gt;It’s also a testing environment.&lt;/p&gt;

&lt;p&gt;You can run JavaScript directly inside the console.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The browser immediately responds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can inspect variables, test functions, manipulate the DOM, and debug logic without constantly editing files.&lt;/p&gt;

&lt;p&gt;That’s why experienced developers spend a huge amount of time inside DevTools.&lt;/p&gt;

&lt;p&gt;The browser console becomes part of your workflow.&lt;/p&gt;

&lt;p&gt;And eventually, you stop fearing it.&lt;/p&gt;

&lt;p&gt;You actually start depending on it.&lt;/p&gt;

&lt;p&gt;Which sounds weird until your application breaks in production and the console becomes your only clue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;The JavaScript Console is a developer tool provided by web browsers that displays messages, warnings, errors, and debugging information generated by JavaScript code running on a webpage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Console Errors Matter
&lt;/h1&gt;

&lt;p&gt;Here’s the dangerous part:&lt;/p&gt;

&lt;p&gt;Sometimes your website &lt;em&gt;looks&lt;/em&gt; fine…&lt;/p&gt;

&lt;p&gt;…but JavaScript is silently failing in the background.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;button clicks stop working&lt;/li&gt;
&lt;li&gt;API data never loads&lt;/li&gt;
&lt;li&gt;forms refuse to submit&lt;/li&gt;
&lt;li&gt;animations freeze&lt;/li&gt;
&lt;li&gt;entire components disappear&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the only place revealing the truth?&lt;/p&gt;

&lt;p&gt;The console.&lt;/p&gt;

&lt;p&gt;That tiny tab developers ignore until production catches fire.&lt;/p&gt;

&lt;p&gt;One of the biggest misconceptions in web development is assuming:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If the UI loads, everything works.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Absolutely not.&lt;/p&gt;

&lt;p&gt;Modern websites depend heavily on JavaScript.&lt;/p&gt;

&lt;p&gt;A single failed script can break authentication, payments, search functionality, or user interactions while the page still visually appears normal.&lt;/p&gt;

&lt;p&gt;That’s what makes debugging tricky.&lt;/p&gt;

&lt;p&gt;Sometimes the failure is obvious.&lt;/p&gt;

&lt;p&gt;Sometimes users discover it before developers do.&lt;/p&gt;

&lt;p&gt;And those are the painful bugs.&lt;/p&gt;

&lt;p&gt;Especially when the issue only happens on specific browsers, devices, or internet conditions.&lt;/p&gt;

&lt;p&gt;The console helps expose those hidden problems before users start sending messages like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Hey… your website doesn’t work.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which is basically every developer’s least favorite notification.&lt;/p&gt;




&lt;h1&gt;
  
  
  The 5 Most Common JavaScript Console Errors
&lt;/h1&gt;

&lt;p&gt;Let’s go through the errors almost every developer hits.&lt;/p&gt;

&lt;p&gt;These are the “welcome to JavaScript” errors.&lt;/p&gt;

&lt;p&gt;And the funny thing is…&lt;/p&gt;

&lt;p&gt;You never completely escape them.&lt;/p&gt;

&lt;p&gt;Even experienced developers still accidentally trigger these errors constantly.&lt;/p&gt;

&lt;p&gt;The difference is they panic less now.&lt;/p&gt;

&lt;p&gt;Mostly.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. ReferenceError
&lt;/h1&gt;

&lt;p&gt;Probably the most common one.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the variable was actually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Console says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ReferenceError: username is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What this means
&lt;/h3&gt;

&lt;p&gt;JavaScript looked for &lt;code&gt;username&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It searched.&lt;/p&gt;

&lt;p&gt;It suffered.&lt;/p&gt;

&lt;p&gt;It found nothing.&lt;/p&gt;

&lt;p&gt;The browser basically checked memory and said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I have absolutely no idea what this variable is.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;ReferenceError&lt;/code&gt; occurs when JavaScript tries to access a variable or identifier that has not been declared or is not available in the current scope.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Happens
&lt;/h2&gt;

&lt;p&gt;Usually because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;spelling mistakes&lt;/li&gt;
&lt;li&gt;wrong variable names&lt;/li&gt;
&lt;li&gt;variables used before declaration&lt;/li&gt;
&lt;li&gt;scope issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This error becomes extremely common in larger applications because variables move across multiple files, functions, and components.&lt;/p&gt;

&lt;p&gt;One tiny naming mismatch can break everything.&lt;/p&gt;

&lt;p&gt;And because JavaScript is case-sensitive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;userName&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;username&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;are completely different things.&lt;/p&gt;

&lt;p&gt;Which feels rude sometimes.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Fix It
&lt;/h2&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;capitalization&lt;/li&gt;
&lt;li&gt;spelling&lt;/li&gt;
&lt;li&gt;whether the variable exists&lt;/li&gt;
&lt;li&gt;where it’s declared&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JavaScript is case-sensitive.&lt;/p&gt;

&lt;p&gt;And yes, it absolutely cares.&lt;/p&gt;

&lt;p&gt;One helpful habit is using editor autocomplete instead of manually typing variable names repeatedly.&lt;/p&gt;

&lt;p&gt;It reduces stupid mistakes dramatically.&lt;/p&gt;

&lt;p&gt;And trust me…&lt;/p&gt;

&lt;p&gt;Most debugging sessions begin with a stupid mistake.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. SyntaxError
&lt;/h1&gt;

&lt;p&gt;This one means your code structure is invalid.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Missing &lt;code&gt;)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Console:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;SyntaxError: Unexpected token &lt;span class="s1"&gt;'{'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;SyntaxError&lt;/code&gt; occurs when JavaScript encounters code that does not follow the correct language syntax rules, preventing the script from being parsed and executed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Happens
&lt;/h2&gt;

&lt;p&gt;Usually because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing brackets&lt;/li&gt;
&lt;li&gt;forgotten commas&lt;/li&gt;
&lt;li&gt;extra parentheses&lt;/li&gt;
&lt;li&gt;incorrect syntax&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This error happens before your code even runs.&lt;/p&gt;

&lt;p&gt;The browser tries reading your JavaScript file…&lt;/p&gt;

&lt;p&gt;…and immediately gives up.&lt;/p&gt;

&lt;p&gt;Think of it like broken grammar in a sentence.&lt;/p&gt;

&lt;p&gt;If the structure is invalid, JavaScript cannot understand your instructions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Painful Part
&lt;/h2&gt;

&lt;p&gt;One missing bracket can break an entire file.&lt;/p&gt;

&lt;p&gt;You’ll spend 20 minutes debugging…&lt;/p&gt;

&lt;p&gt;Only to discover this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;was missing.&lt;/p&gt;

&lt;p&gt;Character development.&lt;/p&gt;

&lt;p&gt;And somehow, the missing bracket is always hidden in the most invisible place possible.&lt;/p&gt;

&lt;p&gt;Especially inside nested conditions.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;loggedIn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isAdmin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Welcome&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks harmless.&lt;/p&gt;

&lt;p&gt;Completely broken.&lt;/p&gt;

&lt;p&gt;This is why proper indentation matters so much.&lt;/p&gt;

&lt;p&gt;Good formatting literally prevents debugging pain.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. TypeError
&lt;/h1&gt;

&lt;p&gt;This happens when you try to use something incorrectly.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Console:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;TypeError: Cannot &lt;span class="nb"&gt;read &lt;/span&gt;properties of null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Translation in Human Language
&lt;/h2&gt;

&lt;p&gt;JavaScript is saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You’re trying to access something that doesn’t exist.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This usually happens when developers assume data is available before it actually is.&lt;/p&gt;

&lt;p&gt;And modern web apps deal with async data constantly.&lt;/p&gt;

&lt;p&gt;So this error appears everywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;TypeError&lt;/code&gt; occurs when a value is used in an invalid way, such as trying to access properties or call methods on &lt;code&gt;undefined&lt;/code&gt; or &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where This Happens A LOT
&lt;/h2&gt;

&lt;p&gt;Especially when working with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;DOM elements&lt;/li&gt;
&lt;li&gt;async data&lt;/li&gt;
&lt;li&gt;arrays&lt;/li&gt;
&lt;li&gt;forms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;btn&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the button doesn’t exist yet.&lt;/p&gt;

&lt;p&gt;Boom.&lt;/p&gt;

&lt;p&gt;Error.&lt;/p&gt;

&lt;p&gt;Another common situation:&lt;/p&gt;

&lt;p&gt;The backend returns unexpected data.&lt;/p&gt;

&lt;p&gt;You expect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the API responds with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kc"&gt;null&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your frontend explodes.&lt;/p&gt;

&lt;p&gt;And suddenly debugging becomes detective work.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Fix It
&lt;/h2&gt;

&lt;p&gt;Check if the value exists first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use optional chaining:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tiny operator.&lt;/p&gt;

&lt;p&gt;Massive peace of mind.&lt;/p&gt;

&lt;p&gt;You can also use defensive coding habits where you assume external data might fail.&lt;/p&gt;

&lt;p&gt;Because eventually…&lt;/p&gt;

&lt;p&gt;It will.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Uncaught Promise Error
&lt;/h1&gt;

&lt;p&gt;This one appears when async code fails.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the request fails:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Uncaught &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;in &lt;/span&gt;promise&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;An &lt;code&gt;Uncaught Promise Error&lt;/code&gt; occurs when a Promise is rejected but the rejection is not properly handled using &lt;code&gt;.catch()&lt;/code&gt; or &lt;code&gt;try...catch&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Feels Confusing
&lt;/h2&gt;

&lt;p&gt;Because the error doesn’t happen immediately.&lt;/p&gt;

&lt;p&gt;It happens &lt;em&gt;later&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Which makes debugging feel like chasing a ghost.&lt;/p&gt;

&lt;p&gt;Async JavaScript changes how errors behave.&lt;/p&gt;

&lt;p&gt;Instead of failing instantly, operations happen in the background.&lt;/p&gt;

&lt;p&gt;And when something breaks there, the error can feel disconnected from the original code.&lt;/p&gt;

&lt;p&gt;That’s why async debugging initially feels confusing.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Handle It Properly
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;try...catch&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;loadData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now instead of crashing silently, you actually control the error.&lt;/p&gt;

&lt;p&gt;That’s a huge upgrade.&lt;/p&gt;

&lt;p&gt;Good error handling becomes extremely important in real applications.&lt;/p&gt;

&lt;p&gt;Because networks fail.&lt;/p&gt;

&lt;p&gt;Servers crash.&lt;/p&gt;

&lt;p&gt;Users lose internet connection.&lt;/p&gt;

&lt;p&gt;APIs timeout.&lt;/p&gt;

&lt;p&gt;And production apps must survive those failures gracefully.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Failed to Load Resource
&lt;/h1&gt;

&lt;p&gt;This error usually means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The browser tried loading something and failed.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;image&lt;/li&gt;
&lt;li&gt;API&lt;/li&gt;
&lt;li&gt;CSS file&lt;/li&gt;
&lt;li&gt;JS file&lt;/li&gt;
&lt;li&gt;font&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Failed to load resource: 404
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;Failed to Load Resource&lt;/code&gt; error occurs when the browser cannot successfully retrieve a requested file or resource from the server.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Real Meaning of 404
&lt;/h1&gt;

&lt;p&gt;Your browser went looking for a file…&lt;/p&gt;

&lt;p&gt;…and the server basically said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Never heard of it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A &lt;code&gt;404&lt;/code&gt; error means the requested resource does not exist at the specified location.&lt;/p&gt;

&lt;p&gt;That resource could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an image&lt;/li&gt;
&lt;li&gt;an API route&lt;/li&gt;
&lt;li&gt;a JavaScript file&lt;/li&gt;
&lt;li&gt;a CSS file&lt;/li&gt;
&lt;li&gt;or an entire webpage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One wrong character in a file path is enough to trigger this error.&lt;/p&gt;

&lt;p&gt;And sometimes the website still partially works, making the problem harder to notice immediately.&lt;/p&gt;

&lt;p&gt;This is why developers constantly inspect both the &lt;strong&gt;Console&lt;/strong&gt; and &lt;strong&gt;Network&lt;/strong&gt; tabs together while debugging.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Definition
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;404 Not Found&lt;/code&gt; status code means the server was reached successfully, but the requested resource could not be found at the specified URL.&lt;/p&gt;

&lt;p&gt;Also, I wrote a complete breakdown about HTTP status codes like &lt;code&gt;404&lt;/code&gt;, &lt;code&gt;403&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and other server mysteries here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/kathirvel-s/every-developers-nightmare-decoding-404-403-500-and-other-http-mysteries-3ock?utm_source=chatgpt.com"&gt;Every Developer’s Nightmare: Decoding 404, 403, 500, and Other HTTP Mysteries&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If those numbers have ever confused you during debugging, that article explains them in a much deeper way.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Causes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;wrong file path&lt;/li&gt;
&lt;li&gt;typo in URL&lt;/li&gt;
&lt;li&gt;deleted file&lt;/li&gt;
&lt;li&gt;backend server not running&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes developers rename files but forget updating import paths.&lt;/p&gt;

&lt;p&gt;Sometimes frontend code requests an API endpoint that doesn’t exist anymore.&lt;/p&gt;

&lt;p&gt;Sometimes the backend server simply isn’t running.&lt;/p&gt;

&lt;p&gt;And sometimes…&lt;/p&gt;

&lt;p&gt;You spend an hour debugging before realizing you typed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/api/user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/api/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pain.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Biggest Mistake Developers Make
&lt;/h1&gt;

&lt;p&gt;Seeing an error…&lt;/p&gt;

&lt;p&gt;…and instantly searching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;how to fix uncaught promise javascript stackoverflow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without actually reading the error.&lt;/p&gt;

&lt;p&gt;Here’s the truth:&lt;/p&gt;

&lt;h2&gt;
  
  
  Most console errors literally tell you the problem.
&lt;/h2&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Cannot &lt;span class="nb"&gt;read &lt;/span&gt;properties of undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s not cryptic.&lt;/p&gt;

&lt;p&gt;That’s JavaScript directly telling you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Something is undefined. Stop pretending it exists.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The real skill is learning to slow down and read carefully.&lt;/p&gt;

&lt;p&gt;A lot of debugging mistakes happen because developers rush.&lt;/p&gt;

&lt;p&gt;They assume.&lt;/p&gt;

&lt;p&gt;They panic.&lt;/p&gt;

&lt;p&gt;They randomly change code hoping something works.&lt;/p&gt;

&lt;p&gt;But debugging improves dramatically once you start treating errors like clues instead of enemies.&lt;/p&gt;

&lt;p&gt;The console usually gives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the error type&lt;/li&gt;
&lt;li&gt;the file name&lt;/li&gt;
&lt;li&gt;the line number&lt;/li&gt;
&lt;li&gt;and sometimes even the exact variable causing problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That information is incredibly valuable.&lt;/p&gt;




&lt;h1&gt;
  
  
  How I Actually Debug Console Errors
&lt;/h1&gt;

&lt;p&gt;Here’s my real process.&lt;/p&gt;

&lt;p&gt;Not the fancy YouTube version.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 — Read the First Line
&lt;/h2&gt;

&lt;p&gt;Not the entire stack trace.&lt;/p&gt;

&lt;p&gt;Just the first meaningful line.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ReferenceError: user is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That alone already tells you a lot.&lt;/p&gt;

&lt;p&gt;Most developers get overwhelmed because they read the entire error dump immediately.&lt;/p&gt;

&lt;p&gt;But usually the first line already identifies the core issue.&lt;/p&gt;

&lt;p&gt;Focus there first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 — Find the File and Line Number
&lt;/h2&gt;

&lt;p&gt;Console usually shows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app.js:42
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click it.&lt;/p&gt;

&lt;p&gt;The browser takes you directly to the problem area.&lt;/p&gt;

&lt;p&gt;This feature alone feels illegal sometimes.&lt;/p&gt;

&lt;p&gt;And once you start using source maps and proper debugging tools, finding issues becomes much faster.&lt;/p&gt;

&lt;p&gt;Modern browsers are honestly incredible debugging environments now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 — Use &lt;code&gt;console.log()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Still.&lt;/p&gt;

&lt;p&gt;Even experienced developers use it constantly.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’re basically interrogating your code.&lt;/p&gt;

&lt;p&gt;You ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“What are you actually storing right now?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And the console answers honestly.&lt;/p&gt;

&lt;p&gt;Sometimes debugging is literally just printing values until reality makes sense again.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 — Isolate the Problem
&lt;/h2&gt;

&lt;p&gt;Don’t debug the whole app.&lt;/p&gt;

&lt;p&gt;Debug one thing.&lt;/p&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the variable undefined?&lt;/li&gt;
&lt;li&gt;Is the API failing?&lt;/li&gt;
&lt;li&gt;Is the element missing?&lt;/li&gt;
&lt;li&gt;Is the function even running?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Debugging gets easier when you stop treating errors like mysteries.&lt;/p&gt;

&lt;p&gt;Most bugs become manageable once you isolate the exact failing part.&lt;/p&gt;

&lt;p&gt;Trying to debug everything at once only creates confusion.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Console Is Actually a Teacher
&lt;/h1&gt;

&lt;p&gt;This sounds dramatic, but it’s true.&lt;/p&gt;

&lt;p&gt;Every console error teaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how JavaScript works&lt;/li&gt;
&lt;li&gt;how browsers behave&lt;/li&gt;
&lt;li&gt;how async code flows&lt;/li&gt;
&lt;li&gt;how scope works&lt;/li&gt;
&lt;li&gt;how DOM rendering works&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The developers who improve fastest are usually the ones who debug the most.&lt;/p&gt;

&lt;p&gt;Not the ones who memorize tutorials.&lt;/p&gt;

&lt;p&gt;Because real learning usually happens after things break.&lt;/p&gt;

&lt;p&gt;Not before.&lt;/p&gt;

&lt;p&gt;Every bug forces you to understand something deeper about how the language actually behaves.&lt;/p&gt;

&lt;p&gt;And over time, you stop fearing errors.&lt;/p&gt;

&lt;p&gt;You start learning from them.&lt;/p&gt;




&lt;h1&gt;
  
  
  One Important Thing Nobody Tells You
&lt;/h1&gt;

&lt;p&gt;Good developers still get console errors.&lt;/p&gt;

&lt;p&gt;Daily.&lt;/p&gt;

&lt;p&gt;The difference is:&lt;/p&gt;

&lt;p&gt;Beginners panic.&lt;br&gt;
Experienced developers investigate.&lt;/p&gt;

&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;There’s no secret “I never get errors anymore” phase.&lt;/p&gt;

&lt;p&gt;There’s only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I know how to find the problem faster now.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even senior developers spend hours debugging weird problems.&lt;/p&gt;

&lt;p&gt;The difference is experience helps them narrow possibilities faster.&lt;/p&gt;

&lt;p&gt;But nobody completely escapes bugs.&lt;/p&gt;

&lt;p&gt;That’s just part of software development.&lt;/p&gt;

&lt;p&gt;Honestly, if your console is perfectly clean all the time…&lt;/p&gt;

&lt;p&gt;You’re probably not building enough things.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;If your console is full of red text right now…&lt;/p&gt;

&lt;p&gt;Good.&lt;/p&gt;

&lt;p&gt;Seriously.&lt;/p&gt;

&lt;p&gt;That means you’re building things.&lt;/p&gt;

&lt;p&gt;Breaking things.&lt;/p&gt;

&lt;p&gt;Learning things.&lt;/p&gt;

&lt;p&gt;And that’s exactly what this series is about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sunday Source – I Break It, Then Explain It&lt;/strong&gt; was never about perfect code.&lt;/p&gt;

&lt;p&gt;It’s about understanding the mess after things explode.&lt;/p&gt;

&lt;p&gt;And honestly?&lt;/p&gt;

&lt;p&gt;JavaScript errors are one of the best teachers you’ll ever have.&lt;/p&gt;

&lt;p&gt;The console can feel overwhelming initially.&lt;/p&gt;

&lt;p&gt;But eventually, you realize those red messages are actually helping you improve.&lt;/p&gt;

&lt;p&gt;Every confusing bug teaches patience.&lt;/p&gt;

&lt;p&gt;Every debugging session improves problem-solving.&lt;/p&gt;

&lt;p&gt;Every error slowly makes you better at understanding how software actually works behind the scenes.&lt;/p&gt;

&lt;p&gt;And weirdly enough…&lt;/p&gt;

&lt;p&gt;That’s one of the most satisfying parts of coding.&lt;/p&gt;




&lt;h1&gt;
  
  
  Before You Leave…
&lt;/h1&gt;

&lt;p&gt;Quick question:&lt;/p&gt;

&lt;h2&gt;
  
  
  Which console error annoys you the most?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;404&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Unexpected token&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Uncaught promise&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every developer has that &lt;em&gt;one&lt;/em&gt; error that ruins their mood instantly.&lt;/p&gt;

&lt;p&gt;Don't panic &lt;/p&gt;

&lt;p&gt;At a time solve without panic&lt;/p&gt;

&lt;p&gt;See you in Episode 5.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>sundaysource</category>
    </item>
  </channel>
</rss>
