<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>java on Shweta Kadam</title>
    <link>https://shwetakadam.com/tags/java/</link>
    <description>Recent content in java on Shweta Kadam</description>
    <image>
      <url>https://shwetakadam.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://shwetakadam.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Wed, 12 Jan 2022 23:49:00 +0530</lastBuildDate><atom:link href="https://shwetakadam.com/tags/java/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Which would you go for? Spring boot cron job,scheduled tasks vs Events in Mysql.</title>
      <link>https://shwetakadam.com/posts/which-would-you-go-for-spring-boot-cron-jobscheduled-tasks-vs-events-in-mysql/</link>
      <pubDate>Wed, 12 Jan 2022 23:49:00 +0530</pubDate>
      
      <guid>https://shwetakadam.com/posts/which-would-you-go-for-spring-boot-cron-jobscheduled-tasks-vs-events-in-mysql/</guid>
      <description>I was recently studying about using cron jobs in spring boot for a particular use case for my small side project. I ended up not using the cron job but rather went the SQL way(will explain this in detail below). However,in the process I learnt a lot about cron jobs and scheduling in spring boot so this is just a small article about my learnings.
But first I shall tell you a little about my use case and why I thought about cron jobs in the first place….</description>
      <content:encoded><![CDATA[<p>I was recently studying about using cron jobs in spring boot for a particular use case for my small side project. I ended up not using the cron job but rather went the SQL way(will explain this in detail below). However,in the process I learnt a lot about cron jobs and scheduling in spring boot so this is just a small article about my learnings.</p>
<p>But first I shall tell you a little about my use case and why I thought about cron jobs in the first place…..</p>
<h2 id="use-case">Use case</h2>
<p>My application was inserting data (let’s call it smash data for simplicity for now)in the database.Each smash data has a certain expiry period and after that expiry period, that data should no longer remain in the database.But the expiry period will be different for each smash data.</p>
<p>Example:</p>
<p>smash 1, expiryperiod :10mins</p>
<p>smash 2 ,expiryperiod :60mins</p>
<p>smash 3 ,expiryperiod :150mins . . . etc.</p>
<p>Now my first line of thinking ended up being cron jobs which led to me studying about cron jobs and scheduled in spring boot.To answer it simply I didn’t end up taking this route is because cron jobs or scheduled tasks are suited when we expect the task to execute at only a particular point of time or where we expect functionality to be executed at w particular time on an hourly/daily /weekly/monthly basis. I could get the cron job to delete the data but to delete WHICH data smash 1 or smash 2? That would mean I would have to check the DB. So the process would be something like:-</p>
<p>Fetch all rows from DB.
Check timestamp of each row data against current timestamp and delete accordingly.
I wanted to avoid writing the searching, comparing time logic (dates, in general, can be a pain sometimes).The logic which I did ended up going through was events in SQL since I’m using MySQL db for the use case</p>
<blockquote>
<p>Mysql events are tasks that run according to a particular schedule …hence they can be called as scheduled events</p>
</blockquote>
<p>When an event is created in MySQL, a named database object is created and this object consists of one or more SQL statements to be executed at some regular intervals.Using events,I didn’t have to retrieve and search the data (as I had to do in the spring boot controller ) . I could just write an event such as</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="k">Delete</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">table1</span><span class="w"> </span><span class="k">where</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="n">expiry</span><span class="w"> </span><span class="n">period</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">NOW</span><span class="p">();</span><span class="w">
</span></span></span></code></pre></div><p>And schedule this to execute <code>every minute</code>. Which was would check for that expiryPeriod column in each row and compare with time NOW() So any rows whose expiryperiod has passed will be deleted from db.</p>
<p>The only thing to note I see in this approach, for now, is that this is database dependent so when I host this side project (a hopeful dream) I need to make sure events is configured for the same. So this was the use case now back to cron jobs!</p>
<h2 id="cron-jobs-or-schedule-tasks-in-spring-boot-dot-permalink">Cron jobs or schedule tasks in spring boot.Permalink</h2>
<p>When a situation arises where we expect the task to execute at only a particular point of time or where we expect functionality to be executed at a particular time on an hourly/daily /weekly/monthly basis. Cron jobs are suitable for this use case. In spring this sort of scheduled task can be achieved through @Scheduled annotation.</p>
<p>There are a few rules while using the @Scheduled annotation:  1. The method should typically have a void return type else the returned value will be ignored.</p>
<p>the method should not expect any parameters. First, to enable scheduling in the spring boot project, use @EnableScheduling in the main class.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Application</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">SpringApplication</span><span class="o">.</span><span class="na">run</span><span class="o">(</span><span class="n">PasteBinApplication</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">args</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"> <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><h2 id="scheduling-using-cron-expressions">Scheduling using CRON expressions</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="nd">@Component</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SchedulerService</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="nd">@Scheduled</span><span class="o">(</span><span class="n">cron</span><span class="o">=</span><span class="s">&#34;*/15 * * * * ?&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">testScheduled</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">    <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;Method executed at every 15 seconds. Current time is :: &#34;</span><span class="o">+</span> <span class="k">new</span> <span class="n">Date</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>A guide for cron jobs: cron Image source :Java Techonline
<img loading="lazy" src="/img/cron.PNG" alt=""  />
</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">SEC  MIN   HOURS   DAY  MONTH  WEEKDAY
</span></span><span class="line"><span class="cl"> *    *      *      *     *      *
</span></span></code></pre></div><h2 id="scheduling-using-initial-delay-fixed-delay-or-fixed-rate">Scheduling using initial delay,Fixed Delay or Fixed Rate</h2>
<p>The main difference between Fixed Delay and Fixed Rate is : Fixed Delay : controls the next execution time when the last execution finishes. Fixed Rate : makes Spring run the task on periodic intervals even if the last invocation may be still running.</p>
<p>Fixed Delay</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="nd">@Component</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SchedulerService</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="nd">@Scheduled</span><span class="o">(</span><span class="n">fixedDelay</span> <span class="o">=</span> <span class="mi">1000</span><span class="o">,</span> <span class="n">initialDelay</span> <span class="o">=</span> <span class="mi">5000</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">testScheduled</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">    <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;Method executed with fixed delay and initial delay . Current time is :: &#34;</span><span class="o">+</span> <span class="k">new</span> <span class="n">Date</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>Also Fixed Delay can take input in String and Integer. @Scheduled(fixedDelayString = “7000”) @Scheduled(fixedDelayString = 7000)
Fixed Rate:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="nd">@Component</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SchedulerService</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="nd">@Scheduled</span><span class="o">(</span><span class="n">fixedRate</span> <span class="o">=</span> <span class="mi">1000</span><span class="o">)</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kt">void</span> <span class="nf">testScheduled</span><span class="o">()</span>
</span></span><span class="line"><span class="cl">    <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;Method executed with fixed rate . Current time is :: &#34;</span><span class="o">+</span> <span class="k">new</span> <span class="n">Date</span><span class="o">());</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span></code></pre></div><p>That’s all folks.Learning about events and cron jobs and where could be applied was interesting to learn when applied on some small practical application.</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>Polymorphism in Java</title>
      <link>https://shwetakadam.com/posts/polymorphism-in-java/</link>
      <pubDate>Wed, 14 Jul 2021 23:28:00 +0530</pubDate>
      
      <guid>https://shwetakadam.com/posts/polymorphism-in-java/</guid>
      <description>Just revisiting and explaining myself Polymorphism concept here through a blog post. The words Polymorphism means multiple forms.
In Java ,Polymorphism means multiple forms of an object. We shall divide this article into 3 sections.
1.Syntax
2.Calling a variable polymorphically.
3.Calling a method polymorphically.
1.SyntaxPermalink Now in polymorphism in Java, the thumb key rule to remember is
super = subPermalink Meaning the variable reference (LHS) must always be a super class reference and the object initialization(RHS) must a sub class.</description>
      <content:encoded><![CDATA[<p>Just revisiting and explaining myself Polymorphism concept here through a blog post. The words Polymorphism means multiple forms.</p>
<p>In Java ,Polymorphism means multiple forms of an object. We shall divide this article into 3 sections.</p>
<p>1.Syntax</p>
<p>2.Calling a variable polymorphically.</p>
<p>3.Calling a method polymorphically.</p>
<p>1.SyntaxPermalink
Now in polymorphism in Java, the thumb key rule to remember is</p>
<p>super = subPermalink
Meaning the variable reference (LHS) must always be a super class reference and the object initialization(RHS) must a sub class.</p>
<p>For Example: class A{</p>
<p>} class B extends A{ }
class C extends B{ }
class D extends A{ }</p>
<p>So valid and invalid syntax according to the thumb rule will be</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">A</span> <span class="n">a</span> <span class="o">=</span><span class="k">new</span> <span class="n">B</span><span class="o">();</span>           <span class="c1">//VALID
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">B</span> <span class="n">b</span><span class="o">=</span><span class="k">new</span> <span class="n">D</span><span class="o">();</span>            <span class="c1">//NOT VALID
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">C</span> <span class="n">c</span><span class="o">=</span><span class="k">new</span> <span class="n">A</span><span class="o">();</span>           <span class="c1">//VALID
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">A</span> <span class="n">a1</span><span class="o">=</span><span class="k">new</span> <span class="n">D</span><span class="o">();</span>           <span class="c1">//VALID
</span></span></span></code></pre></div><p>2.Calling a variable polymorphically.Permalink
If a variable is called from a polymorphic object,we follow the reference i.e. the super class. And if the variable is not present in the super class ,it results in a COMPILE ERROR. EG:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="o">=</span><span class="mi">5</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">B</span> <span class="kd">extends</span> <span class="n">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="o">=</span><span class="mi">10</span><span class="o">;</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">App</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span><span class="n">args</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span> <span class="n">a</span><span class="o">=</span><span class="k">new</span> <span class="n">B</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="n">a</span><span class="o">.</span><span class="na">x</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="c1">//What do u think is the output class A x value (5)or class B x value(10)?Follow the rule.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="nl">OUTPUT:</span>
</span></span><span class="line"><span class="cl"><span class="mi">5</span>
</span></span></code></pre></div><p>Calling a method polymorphically.Permalink
If a method is called from a polymorphic object ,we follow a 2 step procedure: 1.We got to the super class and check whther the method is present or not.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">if</span><span class="o">(</span>present<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Goto to step <span class="m">2</span>
</span></span><span class="line"><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="cl"> COMPILE ERROR
</span></span></code></pre></div><p>2.Come to the sub class and check wther the method is overrided or not.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">if</span><span class="o">(</span>overrided<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Call the sub-class version
</span></span><span class="line"><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="cl"> Call the super -class version.
</span></span></code></pre></div><p>Eg:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">m1</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;A&#34;</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">B</span> <span class="kd">extends</span> <span class="n">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">m1</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;B&#34;</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">App</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span><span class="n">args</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span> <span class="n">a</span><span class="o">=</span><span class="k">new</span> <span class="n">B</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span><span class="o">.</span><span class="na">m1</span><span class="o">();</span>          <span class="c1">//Follow the rule
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">B</span><span class="o">=</span><span class="k">new</span> <span class="n">B</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"><span class="n">b</span><span class="o">.</span><span class="na">m1</span><span class="o">();</span>          <span class="c1">//Normal sub class object method call
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}}</span>
</span></span><span class="line"><span class="cl"><span class="nl">OUTPUT:</span>
</span></span><span class="line"><span class="cl"><span class="n">B</span>
</span></span><span class="line"><span class="cl"><span class="n">B</span>
</span></span></code></pre></div><p>So that’s all for polymorphism in java.</p>
<p>Happy Learning :)</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>How constructors work in Java</title>
      <link>https://shwetakadam.com/posts/how-constructors-work-in-java/</link>
      <pubDate>Mon, 14 Jun 2021 21:41:00 +0530</pubDate>
      
      <guid>https://shwetakadam.com/posts/how-constructors-work-in-java/</guid>
      <description>Constructors are used every time to initialize instance variables. There are some additional rules associated with constructors that are often asked in interviews.Hence revising those here through a blog post.
A constructor is used to initialize instance variables When an object of an class is created,JVM goes to the class and searches for that matching constructor.If Constructor is NOT PRESENT it gives a compile error. By default every class has a constructor called default no argument constructor.</description>
      <content:encoded><![CDATA[<p>Constructors are used every time to initialize instance variables. There are some additional rules associated with constructors that are often asked in interviews.Hence revising those here through a blog post.</p>
<h2 id="a-constructor-is-used-to-initialize-instance-variables">A constructor is used to initialize instance variables</h2>
<h2 id="when-an-object-of-an-class-is-created-jvm-goes-to-the-class-and-searches-for-that-matching-constructor-dot-if-constructor-is-not-present-it-gives-a-compile-error-dot">When an object of an class is created,JVM goes to the class and searches for that matching constructor.If Constructor is NOT PRESENT it gives a compile error.</h2>
<h2 id="by-default-every-class-has-a-constructor-called-default-no-argument-constructor-dot">By default every class has a constructor called default no argument constructor.</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(){</span> <span class="c1">//default no arg constructor
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}}</span>
</span></span></code></pre></div><h2 id="a-programmer-can-have-multiple-constructors-in-a-class-provided-their-signatures-are-different-this-is-called-constructor-overloading-dot">A programmer can have multiple constructors in a class provided their signatures are different this is called constructor overloading.</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//some code
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//some code
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">float</span> <span class="n">x</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//some code
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">float</span> <span class="n">x</span><span class="o">,</span><span class="kt">int</span> <span class="n">y</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//some code
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">,</span><span class="kt">float</span> <span class="n">y</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">int</span> <span class="n">z</span><span class="o">){}</span><span class="c1">//THIS WILL GIVE COMPILE ERROR SInce its already defined on top.
</span></span></span><span class="line"><span class="cl"><span class="c1"></span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">A</span> <span class="n">a</span><span class="o">=</span><span class="k">new</span> <span class="n">A</span><span class="o">();</span>
</span></span><span class="line"><span class="cl"><span class="k">new</span> <span class="n">A</span><span class="o">();</span><span class="c1">//goes to first matching constructor
</span></span></span></code></pre></div><h2 id="jvm-always-calls-the-matching-constructor-from-the-class-dot-however-a-programmer-can-call-other-constructors-of-this-class-by-using-the-the-this-method-dot">JVM always calls the matching constructor from the class.HOWEVER,a programmer can call other constructors of this class by using the the this() method.</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;A&#34;</span><span class="o">);</span>    <span class="c1">//I
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">A</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="k">this</span><span class="o">();</span>                     <span class="c1">//this will go to constructor A();
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;AA&#34;</span><span class="o">);</span>   <span class="c1">//II
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">App</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span><span class="n">args</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="k">new</span> <span class="n">A</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}}</span>
</span></span><span class="line"><span class="cl"><span class="nl">
</span></span></span><span class="line"><span class="cl"><span class="nl">OUTPUT:</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span>
</span></span><span class="line"><span class="cl"><span class="n">AA</span>
</span></span></code></pre></div><h2 id="if-a-programmer-desires-it-can-call-the-constructor-of-the-super-class-as-well-from-its-own-constructor-using-the-super-method-dot">If a programmer desires it can call the constructor of the super class as well from its own constructor using the super() method.</h2>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;A&#34;</span><span class="o">);</span>    <span class="c1">//I
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">B</span> <span class="kd">extends</span> <span class="n">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">B</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="kd">super</span><span class="o">();</span>             <span class="c1">//this is called implicitly refer next point also
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;B&#34;</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">HelloWorld</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">new</span> <span class="n">B</span><span class="o">();</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="nl">OUTPUT:</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span>
</span></span><span class="line"><span class="cl"><span class="n">B</span>
</span></span></code></pre></div><h2 id="whenever-a-programmer-creates-a-constructor-jvm-writes-super-in-every-constructor-implicitly-as-its-first-line-dot">Whenever a programmer creates a constructor ,JVM writes super() in every constructor implicitly as its first line.</h2>
<p>Note:If a class does not extend any class it by default extends the Object class. Do Try this code in your ide to see it for yourself</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">A</span><span class="o">{</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//super will be called implicitly at the first line of this constructor and here since it does not extend any class it will extend the Object class
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;A&#34;</span><span class="o">);</span>    <span class="c1">//I
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">A</span><span class="o">(</span><span class="kt">int</span> <span class="n">x</span><span class="o">){</span>
</span></span><span class="line"><span class="cl"><span class="c1">//super will be called implicitly at the first line of this constructor
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">&#34;AA&#34;</span><span class="o">);</span>
</span></span><span class="line"><span class="cl"><span class="o">}}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">HelloWorld</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
</span></span><span class="line"><span class="cl">        <span class="k">new</span> <span class="n">A</span><span class="o">(</span><span class="mi">5</span><span class="o">);</span>
</span></span><span class="line"><span class="cl">    <span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="nl">OUTPUT:</span>
</span></span><span class="line"><span class="cl"><span class="n">A</span>
</span></span><span class="line"><span class="cl"><span class="n">AA</span>
</span></span></code></pre></div><p>That’s all for constructors in Java.</p>
<p>Happy Learning :)</p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
