From 3c2513c84edde67de00b6bb128e047272cb50528 Mon Sep 17 00:00:00 2001 From: Raja Jain Date: Fri, 11 Sep 2015 12:11:16 +0530 Subject: [PATCH 01/97] Update 2015-05-22-access-control.md --- _posts/2015-05-22-access-control.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_posts/2015-05-22-access-control.md b/_posts/2015-05-22-access-control.md index 0572ced..9f5cef0 100644 --- a/_posts/2015-05-22-access-control.md +++ b/_posts/2015-05-22-access-control.md @@ -16,8 +16,7 @@ Two __types of access__ are there: * Whether a subclass can inherit a member of its superclass A **default member** may be accessed only if the class accessing the member belongs to the same package, -whereas a **protected member** can be accessed by a subclass in the same package _(through dot operator and inheritance)_ and even if it is -is in a different package _(through inheritance only)_. +whereas a **protected member** can be accessed by a subclass in the same package _(through dot operator and inheritance)_ and even if it is in a different package _(through inheritance only)_. You cannot access a protected member using the dot (.) operator in the subclass **if the subclass is in a different package** from the parent class. @@ -28,6 +27,10 @@ The following code snippet makes it clear: package certification; public class Parent { protected int x = 9; // protected access + + protected void printMessage(String message){ + System.out.println(message); + } } package other; // different package @@ -40,6 +43,8 @@ class Child extends Parent { // p reference? System.out.println("X in parent is " + p.x); // Compiler // error + System.out.println(p.printMessage("Calling Protected method of Parent class, Compiler should throw error."));//Compiler + // error } } {% endhighlight %} From 80509e6ffe0c37a28b090636bfa95c47c6f6d2ee Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 11 Sep 2015 12:14:37 +0530 Subject: [PATCH 02/97] about/readme : updated --- README.md | 3 ++- about.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 40692ef..b2988b0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -In short, this blog is for those who have been coding in **Java** for a while and **not for greenhorns**. +In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who +can **contribute** too by simply sending a pull request. ### License GNU General Public License v2.0 diff --git a/about.md b/about.md index a2186a7..4493520 100644 --- a/about.md +++ b/about.md @@ -12,7 +12,8 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -In short, this blog is for those who have been coding in **Java** for a while and **not for greenhorns**. +In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who +can **contribute** too by simply sending a pull request. ### License GNU General Public License v2.0 From 360c958bcb4895002c186e0b611de0589e7a4319 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 11 Sep 2015 22:07:47 +0530 Subject: [PATCH 03/97] merge pull request + minor bug fix --- _posts/2015-05-22-access-control.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2015-05-22-access-control.md b/_posts/2015-05-22-access-control.md index 9f5cef0..610437a 100644 --- a/_posts/2015-05-22-access-control.md +++ b/_posts/2015-05-22-access-control.md @@ -28,8 +28,8 @@ package certification; public class Parent { protected int x = 9; // protected access - protected void printMessage(String message){ - System.out.println(message); + protected int getX() { + return x; } } @@ -43,8 +43,8 @@ class Child extends Parent { // p reference? System.out.println("X in parent is " + p.x); // Compiler // error - System.out.println(p.printMessage("Calling Protected method of Parent class, Compiler should throw error."));//Compiler - // error + System.out.println("X in parent is " + p.getX()); // Compiler + // error } } {% endhighlight %} From a8441bb75515ad2554aaa32c00ef0489388ad9f0 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 11 Sep 2015 22:11:07 +0530 Subject: [PATCH 04/97] minor typo fixed --- _posts/2015-08-24-threads.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/_posts/2015-08-24-threads.md b/_posts/2015-08-24-threads.md index 12b9463..b59f1cd 100644 --- a/_posts/2015-08-24-threads.md +++ b/_posts/2015-08-24-threads.md @@ -16,12 +16,25 @@ In Java, there is one thread per call stack or you can say, one call stack per t threads in your program, threads are back there running. The main() method, that starts the whole ball rolling, runs in one thread, called (surprisingly) the main thread. -### Two ways to create a Thread in Java +### Create a Thread in Java + +Either of the 2 ways: * Extend the `java.lang.Thread` class * Implement the `Runnable` interface +Though extending the `Thread` class is simple, in real life applications implementing the `Runnable` interface is +the preferred way of creating threads. It's usually not a good OO practice to extend `Thread` because sub-classing +should be reserved for specialized versions of more general superclasses. + +So the only time it really makes sense (from an OO perspective) to extend `Thread` is when you have a more specialized +version of a Thread class. In other words, because you have more specialized thread-specific behavior. And if you just +want a job to be done by a thread then you should design a class that implements the Runnable interface, which also +leaves your class free to extend some other class. + +### Define a Thread +* From 51d68e6c4a0250a532d7367b8892568fc0a1501b Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 11 Sep 2015 22:12:14 +0530 Subject: [PATCH 05/97] thread removed --- _posts/2015-08-24-threads.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_posts/2015-08-24-threads.md b/_posts/2015-08-24-threads.md index b59f1cd..7ec6226 100644 --- a/_posts/2015-08-24-threads.md +++ b/_posts/2015-08-24-threads.md @@ -1,6 +1,7 @@ --- layout: post title: Threads +published: false --- A __Thread__ in Java means two different things: From 26a952c13b1626417009c83ab9dd5756d34a432f Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 20 Sep 2015 19:52:33 +0530 Subject: [PATCH 06/97] unpublished variables --- _posts/2015-05-14-variables.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_posts/2015-05-14-variables.md b/_posts/2015-05-14-variables.md index 902ae31..126da81 100644 --- a/_posts/2015-05-14-variables.md +++ b/_posts/2015-05-14-variables.md @@ -1,6 +1,7 @@ --- layout: post title: Variables +published: false --- Variables can be broadly classified in to 2 types in Java: From 710bacb979a977df9c2196d7b0aab57bfbf7f9b1 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 20 Sep 2015 20:36:56 +0530 Subject: [PATCH 07/97] minor corrections --- _posts/2015-05-22-access-control.md | 2 +- _posts/2015-05-29-overriding.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/_posts/2015-05-22-access-control.md b/_posts/2015-05-22-access-control.md index 610437a..14f0e6b 100644 --- a/_posts/2015-05-22-access-control.md +++ b/_posts/2015-05-22-access-control.md @@ -39,7 +39,7 @@ class Child extends Parent { public void testIt() { System.out.println("x is " + x); // No problem; Child // inherits x - Parent p = new Parent(); // Can we access x using the + Parent p = new Parent(); // Can we access x using // p reference? System.out.println("X in parent is " + p.x); // Compiler // error diff --git a/_posts/2015-05-29-overriding.md b/_posts/2015-05-29-overriding.md index c5848fa..af4c47f 100644 --- a/_posts/2015-05-29-overriding.md +++ b/_posts/2015-05-29-overriding.md @@ -15,14 +15,14 @@ class Animal { System.out.println("Animal Drink"); } - protected void walk() { - System.out.println("Animal Walk"); - } - public void eat() { System.out.println("Animal Eat"); } + protected void walk() { + System.out.println("Animal Walk"); + } + public void run() { System.out.println("Animal Run"); } From 795d2f86f828ed3045c6914695149f6db9230cf2 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 20 Sep 2015 21:08:48 +0530 Subject: [PATCH 08/97] added another example --- _posts/2015-06-02-overloading.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/_posts/2015-06-02-overloading.md b/_posts/2015-06-02-overloading.md index 0623518..ee17358 100644 --- a/_posts/2015-06-02-overloading.md +++ b/_posts/2015-06-02-overloading.md @@ -49,7 +49,7 @@ are all optional. {% highlight java linenos %} -class Animal { +public class Animal { } class Horse extends Animal { @@ -108,7 +108,7 @@ __The 3 factors that can make overloading a little tricky _(written in order of {% highlight java linenos %} -class MethodOverloading { +public class MethodOverloading { static void go(float x) { System.out.print("float "); @@ -176,7 +176,7 @@ code: {% highlight java linenos %} -class Animal { +public class Animal { static void eat() { } } @@ -204,7 +204,7 @@ Let's see what happens when the compiler has to widen and then autobox the param {% highlight java linenos %} -class WidenAndBox { +public class WidenAndBox { static void go(Long x) { System.out.println("Long"); } @@ -231,7 +231,7 @@ Now let's see another program when the compiler has to autobox and then widen th {% highlight java linenos %} -class BoxAndWiden { +public class BoxAndWiden { static void go(Object obj) { Byte b2 = (Byte) obj; // ok - obj refers to a Byte object System.out.println(b2); @@ -256,7 +256,7 @@ __Combine both Widening and Boxing with Var-args__ {% highlight java linenos %} -class Vararg { +public class Vararg { static void wide_vararg(long... x) { System.out.println("long..."); @@ -266,10 +266,15 @@ class Vararg { System.out.println("Integer..."); } + static void box_widen_vararg(Object... x) { + System.out.println("Object..."); + } + public static void main(String[] args) { int i = 5; wide_vararg(i, i); // needs to widen and use var-args box_vararg(i, i); // needs to box and use var-args + box_widen_vararg(i, i); // needs to box and then widen and finally use var-args } } @@ -279,6 +284,7 @@ The above code compiles fine and produces the output: long... Integer... + Object... From the result, its clear that we can __successfully combine var-args with either widening or boxing__. From 3239374f133bc1b0ffe073539b6c1a123459b259 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 29 Sep 2015 23:07:27 +0530 Subject: [PATCH 09/97] minor corrections --- _posts/2015-06-02-overloading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-06-02-overloading.md b/_posts/2015-06-02-overloading.md index ee17358..ef2f6c5 100644 --- a/_posts/2015-06-02-overloading.md +++ b/_posts/2015-06-02-overloading.md @@ -302,7 +302,7 @@ public class Animal { } } -public class Horse extends Animal { +class Horse extends Animal { public void eat() { System.out.println("Horse eating hay "); } From 619902599d6ae79ce2438c875d996302cbe4e77e Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 30 Sep 2015 08:47:22 +0530 Subject: [PATCH 10/97] initial commit --- _posts/2015-08-20-inner-classes.md | 80 ++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 _posts/2015-08-20-inner-classes.md diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md new file mode 100644 index 0000000..7d236ef --- /dev/null +++ b/_posts/2015-08-20-inner-classes.md @@ -0,0 +1,80 @@ +--- +layout: post +title: Inner Classes +--- + +A class inside another class is called an __Inner Class__. In other words, as a class has member variables and member +methods it can also have member classes. You can say inner classes are of 4 types: + + * Inner classes + * Method-local inner classes + * Anonymous inner classes + * Static nested classes + +### When it is good to have an inner class? + +Let's say you have to design a chat client in java through which a user can send messages to the server. +chat-client–specific methods (accept input, read new messages from server, send user input back to server, and so on) to +be in the class + + +### Little Basics + +Suppose you have an inner class like this: + +{% highlight java linenos %} +public class MyOuter { + class MyInner { } +} +{% endhighlight %} + +When you compile it : + +{% highlight java %} +`javac MyOuter.java` +{% endhighlight %} + +you will end up with two class files: + +{% highlight java %} +MyOuter.class +MyOuter$MyInner.class +{% endhighlight %} + +The inner class is still, in the end, a separate class, so a separate class file is generated for it. But the inner +class file isn't accessible to you in the usual way. You can't say + +{% highlight java %} +java MyOuter$MyInner +{% endhighlight %} + +in hopes of running the `main()` method of the inner class, because a regular inner class cannot have static declarations +of any kind. The only way you can access the inner class is through a live instance of the outer class. In other words, +only at runtime, when there's already an instance of the outer class to tie the inner class instance to. + +Now with the basics done, let's see an inner class performing some actions: + +{% highlight java linenos %} +public class MyOuter { + private int x = 7; + + // inner class definition + class MyInner { + public void seeOuter() { + System.out.println("Outer x is " + x); + } + } // close inner class definition +} // close outer class +{% endhighlight %} + +The output of the above program would be `Outer x is 7`. This happens because an __inner class can access private members +of its outer class__. The inner class is also a member of the outer class. So just as any member of the outer class (say, +an instance method) can access any other member of the outer class, private or not, the inner class (also a member) can do +the same. + +### Instantiate the inner class + + + + + From 3719d85e286c4165b93f46fe54fab5e7d00305fa Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 1 Oct 2015 23:47:32 +0530 Subject: [PATCH 11/97] inner class instantiation added --- _posts/2015-08-20-inner-classes.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md index 7d236ef..d078e63 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-inner-classes.md @@ -31,7 +31,7 @@ public class MyOuter { When you compile it : {% highlight java %} -`javac MyOuter.java` +javac MyOuter.java {% endhighlight %} you will end up with two class files: @@ -74,6 +74,27 @@ the same. ### Instantiate the inner class +To create an instance of an inner class, you must have an instance of the outer class to tie to the inner class. There +are no exceptions to this rule: __An inner class instance can never stand alone without a direct relationship to an +instance of the outer class__. + +{% highlight java linenos %} +public class MyOuter { + private int x = 7; + + public void makeInner() { + MyInner in = new MyInner(); // make an inner instance + in.seeOuter(); + } + + class MyInner { + public void seeOuter() { + System.out.println("Outer x is " + x); + } + } +} +{% endhighlight %} + From 6375dac39b3ad3698bdf48a4171ffc316b20d627 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 1 Oct 2015 23:56:16 +0530 Subject: [PATCH 12/97] inner class instantiation examples added --- _posts/2015-08-20-inner-classes.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md index d078e63..c735fb9 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-inner-classes.md @@ -78,6 +78,8 @@ To create an instance of an inner class, you must have an instance of the outer are no exceptions to this rule: __An inner class instance can never stand alone without a direct relationship to an instance of the outer class__. +#### Instantiating an Inner Class from Within the Outer Class + {% highlight java linenos %} public class MyOuter { private int x = 7; @@ -95,6 +97,15 @@ public class MyOuter { } {% endhighlight %} +#### Instantiating an Inner Class from Outside the Outer Class Instance Code + +{% highlight java %} +public static void main(String[] args) { + MyOuter mo = new MyOuter(); // gotta get an instance! + MyOuter.MyInner inner = mo.new MyInner(); + inner.seeOuter(); +} +{% endhighlight %} From bbf17307d9f8ea1f52f913d2179fe9d20053c1d9 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 13 Oct 2015 23:40:14 +0530 Subject: [PATCH 13/97] added content --- _posts/2015-08-20-inner-classes.md | 33 ++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md index c735fb9..edd9c04 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-inner-classes.md @@ -11,12 +11,9 @@ methods it can also have member classes. You can say inner classes are of 4 type * Anonymous inner classes * Static nested classes -### When it is good to have an inner class? - -Let's say you have to design a chat client in java through which a user can send messages to the server. -chat-client–specific methods (accept input, read new messages from server, send user input back to server, and so on) to -be in the class +## Inner classes +These are just "regular" inner classes which are not method-local, anonymous or static. ### Little Basics @@ -28,7 +25,7 @@ public class MyOuter { } {% endhighlight %} -When you compile it : +When you compile it: {% highlight java %} javac MyOuter.java @@ -97,16 +94,36 @@ public class MyOuter { } {% endhighlight %} +The reason the above syntax works is because the outer class instance method code is doing the instantiating. In other +words, there's already an instance of the outer class—the instance running the makeInner() method. + #### Instantiating an Inner Class from Outside the Outer Class Instance Code {% highlight java %} public static void main(String[] args) { - MyOuter mo = new MyOuter(); // gotta get an instance! - MyOuter.MyInner inner = mo.new MyInner(); + MyOuter mo = new MyOuter(); // gotta get an instance of outer class + MyOuter.MyInner inner = mo.new MyInner(); // instantiate inner class from outer class instance inner.seeOuter(); } {% endhighlight %} +As we know that we must have an outer class instance to create an inner class instance, the above code would be the way +to go. _Instantiating an inner class is the only scenario in which you'll invoke new on an instance as opposed to invoking +new to construct an instance._ + +If you are a one liner then the below code is for you: + +{% highlight java %} +public static void main(String[] args) { + MyOuter.MyInner inner = new MyOuter().new MyInner(); // all in one line + inner.seeOuter(); +} +{% endhighlight %} + +#### Referencing the Inner or Outer Instance from Within the Inner Class + + + From 8539877e8a442b04ffe5e6bed7be0fbd25c292e2 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 14 Oct 2015 23:46:35 +0530 Subject: [PATCH 14/97] added content --- _posts/2015-08-20-inner-classes.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md index edd9c04..b78b5b6 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-inner-classes.md @@ -122,8 +122,33 @@ public static void main(String[] args) { #### Referencing the Inner or Outer Instance from Within the Inner Class +An object refers to itself normally by using the `this` reference. The `this` reference is the way an object can pass a +reference to itself to some other code as a method argument: +{% highlight java %} +public void myMethod() { + MyClass mc = new MyClass(); + mc.doStuff(this); // pass a ref to object running myMethod +} +{% endhighlight %} + +So within an inner class code, the `this` reference refers to the instance of the inner class, as you'd probably expect, +since `this` always refers to the currently executing object. But when the inner class code wants an explicit reference +to the outer class instance that the inner instance is tied to, it can access the outer class `this` like: + +{% highlight java %} +class MyInner { + public void seeOuter() { + System.out.println("Outer x is " + x); + System.out.println("Inner class ref is " + this); + System.out.println("Outer class ref is " + MyOuter.this); + } +} +{% endhighlight %} +NOTE: Normally the inner class code doesn't need a reference to the outer class, since it already has an implicit one +it's using to access the members of the outer class, it would need a reference to the outer class if it needed to pass +that reference to some other code as in the above example. From 055d430a86f16f2ee5cd33afd1cf4eaa13a87e5c Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 14 Oct 2015 23:55:55 +0530 Subject: [PATCH 15/97] code snippet changes --- _posts/2015-08-20-inner-classes.md | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-inner-classes.md index b78b5b6..ed0a6af 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-inner-classes.md @@ -136,13 +136,27 @@ So within an inner class code, the `this` reference refers to the instance of th since `this` always refers to the currently executing object. But when the inner class code wants an explicit reference to the outer class instance that the inner instance is tied to, it can access the outer class `this` like: -{% highlight java %} -class MyInner { - public void seeOuter() { - System.out.println("Outer x is " + x); - System.out.println("Inner class ref is " + this); - System.out.println("Outer class ref is " + MyOuter.this); - } +{% highlight java linenos %} +public class MyOuter { + private int x = 7; + + public void makeInner() { + MyInner in = new MyInner(); + in.seeOuter(); + } + + class MyInner { + public void seeOuter() { + System.out.println("Outer x is " + x); + System.out.println("Inner class ref is " + this); + System.out.println("Outer class ref is " + MyOuter.this); + } + } + + public static void main(String[] args) { + MyOuter.MyInner inner = new MyOuter().new MyInner(); + inner.seeOuter(); + } } {% endhighlight %} From f8d0076c64c03729d4ff00eb46c241590ba62e60 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 18 Oct 2015 16:39:17 +0530 Subject: [PATCH 16/97] added content --- ...lasses.md => 2015-08-20-nested-classes.md} | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) rename _posts/{2015-08-20-inner-classes.md => 2015-08-20-nested-classes.md} (81%) diff --git a/_posts/2015-08-20-inner-classes.md b/_posts/2015-08-20-nested-classes.md similarity index 81% rename from _posts/2015-08-20-inner-classes.md rename to _posts/2015-08-20-nested-classes.md index ed0a6af..7824da5 100644 --- a/_posts/2015-08-20-inner-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -1,15 +1,30 @@ --- layout: post -title: Inner Classes +title: Nested Classes --- -A class inside another class is called an __Inner Class__. In other words, as a class has member variables and member -methods it can also have member classes. You can say inner classes are of 4 types: +A class inside another class is called a __Nested Class__. In other words, as a class has member variables and member +methods it can also have member classes. - * Inner classes +Nested classes are divided into two categories: __static__ and __non-static__. Nested classes that are declared static +are called __static nested classes__. Non-static nested classes are called __inner classes__. + +You can say inner classes are of 3 types: + + * "Regular" Inner classes * Method-local inner classes * Anonymous inner classes - * Static nested classes + +## Why Use Nested Classes? + + * __It is a way of logically grouping classes that are only used in one place__: If a class is useful to only one other + class, then it is logical to embed it in that class and keep the two together. Nesting such "helper classes" makes + their package more streamlined. + * __It increases encapsulation__: Consider two top-level classes, A and B, where B needs access to members of A that + would otherwise be declared private. By hiding class B within class A, A's members can be declared private and B can + access them. In addition, B itself can be hidden from the outside world. + * __It can lead to more readable and maintainable code__: Nesting small classes within top-level classes places the + code closer to where it is used. ## Inner classes @@ -164,5 +179,9 @@ NOTE: Normally the inner class code doesn't need a reference to the outer class, it's using to access the members of the outer class, it would need a reference to the outer class if it needed to pass that reference to some other code as in the above example. +## Method-Local Inner Classes + + + From a315242e0a5ffeffdd377f02c63258cbbeb20d91 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 23 Oct 2015 08:49:24 +0530 Subject: [PATCH 17/97] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b2988b0..4d5e5d3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # [Java Notes](http://java.ramswaroop.me) -My Java notes jotted down from some of the best books in Java __(SCJP Java, Thinking in Java, -Effective Java, Java Puzzlers and of course JLS)__ and published as a blog with help of the awesome +My Java notes jotted down from some of the best books in Java __(OCJP Java, Thinking in Java, +Effective Java, Java Puzzlers and of course JLS)__ and published as a blog with the help of awesome __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound From 664593fc97857ff7945eb3dca4de4e125160f984 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 23 Oct 2015 08:55:03 +0530 Subject: [PATCH 18/97] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4d5e5d3..4d9d425 100644 --- a/README.md +++ b/README.md @@ -10,5 +10,7 @@ even many experienced java programmers. In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who can **contribute** too by simply sending a pull request. +After completing this if you want to get your hands dirty then do try to solve some problems involving various [algorithms and data structures, in Java](https://github.com/ramswaroop/Algorithms-and-Data-Structures-in-Java). + ### License GNU General Public License v2.0 From aa91ded2ab04fc27cb1279efe621918420cd6471 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 28 Oct 2015 23:46:30 +0530 Subject: [PATCH 19/97] added content --- _posts/2015-08-20-nested-classes.md | 57 +++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 7824da5..07547fa 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -181,6 +181,63 @@ that reference to some other code as in the above example. ## Method-Local Inner Classes +A regular inner class scoped inside another class's curly braces, but outside any method code (in other words, at the + same level that an instance variable is declared) is called a __method-local inner class__. + +{% highlight java linenos %} +class Outer { + + private String x = "Outer"; + + void doStuff() { + + class Inner { + + public void seeOuter() { + System.out.println("Outer x is " + x); + } // close inner class method + + } // close inner class definition + + } // close outer class method doStuff() + +} // close outer class +{% endhighlight %} + +In the above example, `class Inner` is the method-local inner class. But the inner class is useless because you are never +instantiating the inner class. Just because you declared the class doesn't mean you created an instance of it. So to +use the inner class, you must make an instance of it somewhere within the method but __below the inner class definition +(or the compiler won't be able to find the inner class)__. + +The following legal code shows how to instantiate and use a method-local inner class: + +{% highlight java linenos %} +class Outer { + + private String x = "Outer"; + + void doStuff() { + + class Inner { + + public void seeOuter() { + System.out.println("Outer x is " + x); + } // close inner class method + + MyInner mi = new MyInner(); // This line must come + // after the class + + mi.seeOuter(); + + } // close inner class definition + + } // close outer class method doStuff() + +} // close outer class +{% endhighlight %} + +### What a Method-Local Inner Object Can and Can't Do + From 7f65add7f6eb961c910608162cbcec8753d43130 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 28 Oct 2015 23:47:47 +0530 Subject: [PATCH 20/97] updated readme --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d9d425..e3b5505 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ even many experienced java programmers. In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who can **contribute** too by simply sending a pull request. -After completing this if you want to get your hands dirty then do try to solve some problems involving various [algorithms and data structures, in Java](https://github.com/ramswaroop/Algorithms-and-Data-Structures-in-Java). +After completing this if you want to get your hands dirty then do try to solve some problems involving various +[algorithms and data structures, in Java](https://github.com/ramswaroop/Algorithms-and-Data-Structures-in-Java). ### License GNU General Public License v2.0 From a87484418acbd3dc1e4813f4113e32568c45de60 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 29 Oct 2015 23:52:07 +0530 Subject: [PATCH 21/97] added content --- _posts/2015-08-20-nested-classes.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 07547fa..a8c70f1 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -238,7 +238,14 @@ class Outer { ### What a Method-Local Inner Object Can and Can't Do - - - +A method-local inner class can be instantiated only within the method where the inner class is defined. In other words, +no other code running in any other method inside or outside the outer class can ever instantiate the method-local +inner class. + +Can |Cannot +----------------|---------------- +Access private members of the outer/enclosing class. | Cannot use the local variables of the method the inner class is in. +The only modifiers you can apply to a method-local inner class are abstract and final, but, as always, never both at the same time. | You can't mark a method-local inner class public, private, protected, static, transient (just like a variable). + + From 04ad549aa5ca8f28b13e947dff5deed0dae1d4d8 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 31 Oct 2015 17:41:17 +0530 Subject: [PATCH 22/97] added content --- _posts/2015-08-20-nested-classes.md | 34 ++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index a8c70f1..dfacd39 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -245,7 +245,39 @@ inner class. Can |Cannot ----------------|---------------- Access private members of the outer/enclosing class. | Cannot use the local variables of the method the inner class is in. -The only modifiers you can apply to a method-local inner class are abstract and final, but, as always, never both at the same time. | You can't mark a method-local inner class public, private, protected, static, transient (just like a variable). +The only modifiers you can apply to a method-local inner class are `abstract` and `final`, but, as always, never both at the same time. | You can't mark a method-local inner class `public`, `private`, `protected`, `static` or `transient` (just like local variable declaration). + +#### Important Points + +* Method-local inner class __cannot access the local variables of the method inside which it is defined unless the +variables are marked `final`__. This is because the local variables of the method live on the stack and exist only +for the lifetime of the method. The scope of a local variable is limited to the method the variable is declared in. +When the method ends, the stack frame is blown away and the variable is history. But even after the method completes, the +inner class object created within it might still be alive on the heap if, for example, a reference to it was passed +into some other code and then stored in an instance variable. Because the local variables aren't guaranteed to be alive +as long as the method-local inner class object is, the inner class object can't use them. Unless the local variables +are marked final. + +{% highlight java linenos %} +class MyOuter { + private String x = "Outer"; + + void doStuff() { + String z = "local variable"; + + class MyInner { + public void seeOuter() { + System.out.println("Outer x is " + x); + System.out.println("Local var z is " + z); // won't compile, making 'z' final will solve the problem + } // close inner class method + } // close inner class definition + } // close outer class method doStuff() +} // close outer class +{% endhighlight %} + +* A local class declared in a `static` method has access to only `static` members of the enclosing class, since there is no +associated instance of the enclosing class. If you're in a `static` method, there is no `this`, so an inner class in a +`static` method is subject to the same restrictions as the `static` method. In other words, no access to instance variables. From 42743e891820ab0e2cbf2272d6276d24994d9e30 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 31 Oct 2015 17:49:38 +0530 Subject: [PATCH 23/97] content changes --- _posts/2015-08-20-nested-classes.md | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index dfacd39..b20c295 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -185,8 +185,7 @@ A regular inner class scoped inside another class's curly braces, but outside an same level that an instance variable is declared) is called a __method-local inner class__. {% highlight java linenos %} -class Outer { - +class Outer { private String x = "Outer"; void doStuff() { @@ -198,10 +197,8 @@ class Outer { } // close inner class method } // close inner class definition - - } // close outer class method doStuff() - -} // close outer class + } +} {% endhighlight %} In the above example, `class Inner` is the method-local inner class. But the inner class is useless because you are never @@ -212,8 +209,7 @@ use the inner class, you must make an instance of it somewhere within the method The following legal code shows how to instantiate and use a method-local inner class: {% highlight java linenos %} -class Outer { - +class Outer { private String x = "Outer"; void doStuff() { @@ -230,10 +226,8 @@ class Outer { mi.seeOuter(); } // close inner class definition - - } // close outer class method doStuff() - -} // close outer class + } +} {% endhighlight %} ### What a Method-Local Inner Object Can and Can't Do @@ -268,11 +262,12 @@ class MyOuter { class MyInner { public void seeOuter() { System.out.println("Outer x is " + x); - System.out.println("Local var z is " + z); // won't compile, making 'z' final will solve the problem - } // close inner class method - } // close inner class definition - } // close outer class method doStuff() -} // close outer class + System.out.println("Local var z is " + z); // won't compile, making 'z' final + // will solve the problem + } + } // close method-local inner class + } +} {% endhighlight %} * A local class declared in a `static` method has access to only `static` members of the enclosing class, since there is no From 4e2cfbe827babfb4af98521cc9d9abdaeb8dc37b Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 31 Oct 2015 17:53:57 +0530 Subject: [PATCH 24/97] content changes --- _posts/2015-08-20-nested-classes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index b20c295..ce8b857 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -35,7 +35,7 @@ These are just "regular" inner classes which are not method-local, anonymous or Suppose you have an inner class like this: {% highlight java linenos %} -public class MyOuter { +class MyOuter { class MyInner { } } {% endhighlight %} @@ -67,7 +67,7 @@ only at runtime, when there's already an instance of the outer class to tie the Now with the basics done, let's see an inner class performing some actions: {% highlight java linenos %} -public class MyOuter { +class MyOuter { private int x = 7; // inner class definition @@ -93,7 +93,7 @@ instance of the outer class__. #### Instantiating an Inner Class from Within the Outer Class {% highlight java linenos %} -public class MyOuter { +class MyOuter { private int x = 7; public void makeInner() { @@ -152,7 +152,7 @@ since `this` always refers to the currently executing object. But when the inner to the outer class instance that the inner instance is tied to, it can access the outer class `this` like: {% highlight java linenos %} -public class MyOuter { +class MyOuter { private int x = 7; public void makeInner() { From 674d5c32b7cda96ab65c3fdff079fb9b1a04de52 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 2 Nov 2015 23:36:36 +0530 Subject: [PATCH 25/97] added content --- _posts/2015-08-20-nested-classes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index ce8b857..9cb5d69 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -273,6 +273,16 @@ class MyOuter { * A local class declared in a `static` method has access to only `static` members of the enclosing class, since there is no associated instance of the enclosing class. If you're in a `static` method, there is no `this`, so an inner class in a `static` method is subject to the same restrictions as the `static` method. In other words, no access to instance variables. + +## Anonymous Inner Classes + +Inner class declared without any class name at all is known as __Anonymous Inner Class__. These can be seen as two types: +1. Plain/Normal Anonymous Inner Class +2. Argument defined Anonymous Inner Class + +1. Plain/Normal Anonymous Inner Class also comes in two flavors: + +i. Flavor 1: From b1a6d1f9d40f0925299be751cb83e3678de56b81 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 2 Nov 2015 23:49:39 +0530 Subject: [PATCH 26/97] added content --- _posts/2015-08-20-nested-classes.md | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 9cb5d69..c5230ae 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -277,12 +277,30 @@ associated instance of the enclosing class. If you're in a `static` method, ther ## Anonymous Inner Classes Inner class declared without any class name at all is known as __Anonymous Inner Class__. These can be seen as two types: -1. Plain/Normal Anonymous Inner Class -2. Argument defined Anonymous Inner Class + 1. Plain/Normal Anonymous Inner Class + 2. Argument defined Anonymous Inner Class 1. Plain/Normal Anonymous Inner Class also comes in two flavors: -i. Flavor 1: +a. Flavor 1: + +{% highlight java linenos %} +class Popcorn { + public void pop() { + System.out.println("popcorn"); + } +} +class Food { + Popcorn p = new Popcorn() { + public void pop() { + System.out.println("anonymous popcorn"); + } + }; +} +{% endhighlight %} + +In the above code, the Popcorn reference variable __DOES NOT__ refer to an instance of Popcorn, but to an instance of an +anonymous (unnamed) subclass of Popcorn. From 04802ea5017c848cbbe4f2bdeb022f552c8a3d30 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 2 Nov 2015 23:59:28 +0530 Subject: [PATCH 27/97] added content --- _posts/2015-08-20-nested-classes.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index c5230ae..c766b38 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -277,10 +277,11 @@ associated instance of the enclosing class. If you're in a `static` method, ther ## Anonymous Inner Classes Inner class declared without any class name at all is known as __Anonymous Inner Class__. These can be seen as two types: - 1. Plain/Normal Anonymous Inner Class - 2. Argument defined Anonymous Inner Class -1. Plain/Normal Anonymous Inner Class also comes in two flavors: +**I. Plain/Normal Anonymous Inner Class** +**II. Argument Defined Anonymous Inner Class** + +**I. Plain/Normal Anonymous Inner Class also comes in two flavors:** a. Flavor 1: @@ -299,8 +300,8 @@ class Food { } {% endhighlight %} -In the above code, the Popcorn reference variable __DOES NOT__ refer to an instance of Popcorn, but to an instance of an -anonymous (unnamed) subclass of Popcorn. +In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an instance of `Popcorn`, but to an instance of an +anonymous (unnamed) subclass of `Popcorn`. From 31e3966f400f7eff859b16d521b0308e2028b273 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 3 Nov 2015 00:05:02 +0530 Subject: [PATCH 28/97] added content --- _posts/2015-08-20-nested-classes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index c766b38..5bb3dd0 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -278,12 +278,12 @@ associated instance of the enclosing class. If you're in a `static` method, ther Inner class declared without any class name at all is known as __Anonymous Inner Class__. These can be seen as two types: -**I. Plain/Normal Anonymous Inner Class** -**II. Argument Defined Anonymous Inner Class** +* Plain/Normal Anonymous Inner Class +* Argument Defined Anonymous Inner Class -**I. Plain/Normal Anonymous Inner Class also comes in two flavors:** +**Plain/Normal Anonymous Inner Class also comes in two flavors:** -a. Flavor 1: +* Flavor 1: {% highlight java linenos %} class Popcorn { From d131ad512b008389b88ea39a9449859049e53d43 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 3 Nov 2015 23:43:32 +0530 Subject: [PATCH 29/97] added content --- _posts/2015-08-20-nested-classes.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 5bb3dd0..65fcceb 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -300,8 +300,13 @@ class Food { } {% endhighlight %} -In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an instance of `Popcorn`, but to an instance of an -anonymous (unnamed) subclass of `Popcorn`. +In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an instance of `Popcorn`, but to an instance +of an anonymous (unnamed) subclass of `Popcorn`. +__Polymorphism comes to play in Anonymous Inner Class__ as in the above example, we're using a superclass reference +variable type to refer to a subclass object. So, we need to keep in mind some points: + + + From a4c494fdaef173f47f57114f4499a9f39156c672 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 3 Nov 2015 23:48:55 +0530 Subject: [PATCH 30/97] added content --- _posts/2015-08-20-nested-classes.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 65fcceb..49c6a4e 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -294,7 +294,10 @@ class Popcorn { class Food { Popcorn p = new Popcorn() { public void pop() { - System.out.println("anonymous popcorn"); + System.out.println("this method overrides pop() in Popcorn class"); + } + public void push() { + System.out.println("new method in anonymous inner class"); } }; } @@ -306,7 +309,9 @@ of an anonymous (unnamed) subclass of `Popcorn`. __Polymorphism comes to play in Anonymous Inner Class__ as in the above example, we're using a superclass reference variable type to refer to a subclass object. So, we need to keep in mind some points: - +* You can only call methods on an anonymous inner class reference that are defined in the reference variable type. So, +in the above code, you cannot call `p.push()` as `p` is a reference variable of type `Popcorn` and `Popcorn` class does +not have any method named `push()`. From 39b26f6b3214fd43e73218623686ac2c66b743ac Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 3 Nov 2015 23:57:31 +0530 Subject: [PATCH 31/97] added content --- _posts/2015-08-20-nested-classes.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 49c6a4e..3548626 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -307,11 +307,12 @@ In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an ins of an anonymous (unnamed) subclass of `Popcorn`. __Polymorphism comes to play in Anonymous Inner Class__ as in the above example, we're using a superclass reference -variable type to refer to a subclass object. So, we need to keep in mind some points: - -* You can only call methods on an anonymous inner class reference that are defined in the reference variable type. So, -in the above code, you cannot call `p.push()` as `p` is a reference variable of type `Popcorn` and `Popcorn` class does -not have any method named `push()`. +variable type to refer to a subclass object. And when you call `p.pop()` then the `pop()` inside `Food` class will be +called instead of the one in `Popcorn` class. + +But we need to keep one thing in mind, i.e, you can only call methods on an anonymous inner class reference that are +defined in the reference variable type. So, in the above code, you cannot call `p.push()` as `p` is a reference variable +of type `Popcorn` and `Popcorn` class does not have any method named `push()`. From 21351e75ced04e7a4f8939a3c3b5f7b9f5a4d64c Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 4 Nov 2015 09:30:17 +0530 Subject: [PATCH 32/97] added content --- _posts/2015-08-20-nested-classes.md | 48 ++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 3548626..bbd94a5 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -204,7 +204,8 @@ class Outer { In the above example, `class Inner` is the method-local inner class. But the inner class is useless because you are never instantiating the inner class. Just because you declared the class doesn't mean you created an instance of it. So to use the inner class, you must make an instance of it somewhere within the method but __below the inner class definition -(or the compiler won't be able to find the inner class)__. +(or the compiler won't be able to find the inner class)__. You can even refer my +[Stackoverflow question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class). The following legal code shows how to instantiate and use a method-local inner class: @@ -281,7 +282,7 @@ Inner class declared without any class name at all is known as __Anonymous Inner * Plain/Normal Anonymous Inner Class * Argument Defined Anonymous Inner Class -**Plain/Normal Anonymous Inner Class also comes in two flavors:** +### Plain/Normal Anonymous Inner Class also comes in two flavors: * Flavor 1: @@ -303,8 +304,8 @@ class Food { } {% endhighlight %} -In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an instance of `Popcorn`, but to an instance -of an anonymous (unnamed) subclass of `Popcorn`. +In the above code, the `Popcorn` reference variable __DOES NOT__ refer to an instance of `Popcorn`, but to an __instance +of an anonymous (unnamed) subclass of `Popcorn`__. __Polymorphism comes to play in Anonymous Inner Class__ as in the above example, we're using a superclass reference variable type to refer to a subclass object. And when you call `p.pop()` then the `pop()` inside `Food` class will be @@ -314,5 +315,44 @@ But we need to keep one thing in mind, i.e, you can only call methods on an anon defined in the reference variable type. So, in the above code, you cannot call `p.push()` as `p` is a reference variable of type `Popcorn` and `Popcorn` class does not have any method named `push()`. +* Flavor 2: + +The only difference between flavor one and flavor two is that flavor one creates an anonymous subclass of the specified +class type, whereas flavor two creates an __anonymous implementer of the specified interface type__. + +{% highlight java linenos %} +interface Cookable { + public void cook(); +} + +class Food { + Cookable c = new Cookable() { + public void cook() { + System.out.println("anonymous cookable implementer"); + } + }; +} +{% endhighlight %} + +This is the only time you will ever see the syntax `new Cookable()` where `Cookable` is an interface rather than a +non-abstract class type. Think about it: You can't instantiate an interface, yet that's what the above code looks like +it's doing. But, of course, it's not instantiating a `Cookable` object, it's creating an instance of a new anonymous +implementer of `Cookable`. + +#### Some obvious points: + +* Anonymous Inner Class can implement only one interface. There simply isn't any mechanism to say that your +anonymous inner class is going to implement multiple interfaces. +* Anonymous Inner Class can't extend a class and implement an interface at the same time. +* If the Anonymous Inner Class is a subclass of a class type, it automatically becomes an implementer of any +interfaces implemented by the superclass. + +### Argument Defined Anonymous Inner Class + + + + + + From 482764f29f783181ed365ccaefe20e82db70bdfa Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 5 Nov 2015 10:55:10 +0530 Subject: [PATCH 33/97] added content --- _posts/2015-08-20-nested-classes.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index bbd94a5..e0cdfd4 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -349,10 +349,32 @@ interfaces implemented by the superclass. ### Argument Defined Anonymous Inner Class +Consider the below code: +{% highlight java linenos %} +class MyWonderfulClass { + void go() { + Bar b = new Bar(); + b.doStuff(new Foo() { + public void foof() { + System.out.println("foofy"); + } // end foof method + }); // end inner class def, arg, and b.doStuff stmt. + } // end go() +} +interface Foo { + void foof(); +} +class Bar { + void doStuff(Foo f) { + } +} +{% endhighlight %} +The `doStuff(Foo f)` in `Bar` class takes an object of a class that implements `Foo` interface. So, we just passed an +anonymous class which is an implementation of the `Foo` interface as an argument to the `doStuff()` method (in line 4). +This we call it as __Argument Defined Anonymous Class__. - From 4189b82cddfb578fb6b078345df7e6797f2f98bc Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 6 Nov 2015 10:49:44 +0530 Subject: [PATCH 34/97] added content --- _posts/2015-08-20-nested-classes.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index e0cdfd4..e806acc 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -377,4 +377,24 @@ The `doStuff(Foo f)` in `Bar` class takes an object of a class that implements ` anonymous class which is an implementation of the `Foo` interface as an argument to the `doStuff()` method (in line 4). This we call it as __Argument Defined Anonymous Class__. +Please note that argument defined anonymous class end like `});` but normal anonymous class end like `};`. +## Static Nested Class + +Static Nested Classes are sometimes referred to as static inner classes, but they really aren't inner classes at all +based on the standard definition of an inner class. While an inner class (regardless of the flavor) enjoys that special +relationship with the outer class (or rather, the instances of the two classes share a relationship), a static nested +class does not. It is simply __a non-inner (also called "top-level") class scoped within another__. + +So with static classes, it's really more about name-space resolution than about an implicit relationship between the +two classes. A static nested class is __simply a class that's a static member of the enclosing class__: + +{% highlight java %} +class BigOuter { + static class Nested { } +} +{% endhighlight %} + +The class itself isn't really `static`; there's no such thing as a `static` class. The `static` modifier in this case says +that the nested class is a `static` member of the outer class. That means it can be accessed, as with other `static` +members, without having an instance of the outer class. From ab71b0d84e1da84f234c12687adfac15151b0156 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 6 Nov 2015 10:50:30 +0530 Subject: [PATCH 35/97] added content --- _posts/2015-08-20-nested-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index e806acc..78e8cbe 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -395,6 +395,6 @@ class BigOuter { } {% endhighlight %} -The class itself isn't really `static`; there's no such thing as a `static` class. The `static` modifier in this case says +The class itself isn't really "`static`", there's no such thing as a `static` class. The `static` modifier in this case says that the nested class is a `static` member of the outer class. That means it can be accessed, as with other `static` members, without having an instance of the outer class. From aa981a792fea7a0303c2219dc09a207c9a106694 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 8 Nov 2015 23:51:52 +0530 Subject: [PATCH 36/97] added content --- _posts/2015-08-20-nested-classes.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 78e8cbe..6994ab6 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -398,3 +398,29 @@ class BigOuter { The class itself isn't really "`static`", there's no such thing as a `static` class. The `static` modifier in this case says that the nested class is a `static` member of the outer class. That means it can be accessed, as with other `static` members, without having an instance of the outer class. + +{% highlight java linenos %} +class Outer { + static class Nest { + void go() { + System.out.println("hi outer"); + } + } +} + +class Inner { + static class Nest { + void go() { + System.out.println("hi inner"); + } + } + + public static void main(String[] args) { + Outer.Nest outerNest = new Outer.Nest(); // access static inner class + outerNest.go(); // present inside a different class + + Nest innerNest = new Nest(); // access static inner class + innerNest.go(); // present inside the same class + } +} +{% endhighlight %} From 19c0a14e23df4091135e85df4dde850493ac256c Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 9 Nov 2015 23:34:27 +0530 Subject: [PATCH 37/97] added content --- _posts/2015-08-20-nested-classes.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 6994ab6..c53a1a1 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -424,3 +424,32 @@ class Inner { } } {% endhighlight %} + +{% include responsive_ad.html %} + +### Q&A + +__Q1.__ + +{% highlight java linenos %} +public class HorseTest { + public static void main(String[] args) { + class Horse { + public String name; + public Horse(String s) { + name = s; + } + } + Object obj = new Horse("Zippo"); + System.out.println(obj.name); + } +} +{% endhighlight %} + +What is the result? + +A. An exception occurs at runtime at line 10 +B. Zippo +C. Compilation fails because of an error on line 3 +D. Compilation fails because of an error on line 9 +E. Compilation fails because of an error on line 10 From 8a0b6b812b2a86ebabd951d4b9249efee63762ca Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 10 Nov 2015 23:18:31 +0530 Subject: [PATCH 38/97] added content --- _posts/2015-06-02-overloading.md | 8 +-- _posts/2015-08-20-nested-classes.md | 81 +++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/_posts/2015-06-02-overloading.md b/_posts/2015-06-02-overloading.md index ef2f6c5..cd7cadb 100644 --- a/_posts/2015-06-02-overloading.md +++ b/_posts/2015-06-02-overloading.md @@ -316,11 +316,11 @@ class Horse extends Animal { Figure out which version of `eat()` will run on each of the invocation made? - 1. Animal ah = new Horse(); + A. Animal ah = new Horse(); ah.eat(); - 2. Horse he = new Horse(); + B. Horse he = new Horse(); he.eat("Apples"); - 3. Animal a2 = new Animal(); + C. Animal a2 = new Animal(); a2.eat("treats"); - 4. Animal ah2 = new Horse(); + D. Animal ah2 = new Horse(); ah2.eat("Carrots"); diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index c53a1a1..44210c1 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -453,3 +453,84 @@ B. Zippo C. Compilation fails because of an error on line 3 D. Compilation fails because of an error on line 9 E. Compilation fails because of an error on line 10 + +__Q2.__ + +{% highlight java linenos %} +public abstract class AbstractTest { + public int getNum() { + return 45; + } + + public abstract class Bar { + public int getNum() { + return 38; + } + } + + public static void main(String[] args) { + AbstractTest t = new AbstractTest() { + public int getNum() { + return 22; + } + }; + AbstractTest.Bar f = t.new Bar() { + public int getNum() { + return 57; + } + }; + System.out.println(f.getNum() + " " + t.getNum()); + } +} +{% endhighlight %} + + +What is the output? + +A. 57 22 +B. 45 38 +C. 45 57 +D. An exception occurs at runtime +E. Compilation fails + +__Q3.__ + +{% highlight java linenos %} +class A { + void m() { + System.out.println("outer"); + } +} + +public class MethodLocalVSInner { + + public static void main(String[] args) { + new MethodLocalVSInner().go(); + } + + void go() { + new A().m(); + class A { + void m() { + System.out.println("inner"); + } + } + } + + class A { + void m() { + System.out.println("middle"); + } + } +} +{% endhighlight %} + +This is an interesting [question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class), +so think and tell what is the output? + +A. inner +B. outer +C. middle +D. Compilation fails +E. An exception is thrown at runtime + From de9980a5c4c3a6f115f79632dea8898d9058e5dc Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 11 Nov 2015 13:49:49 +0530 Subject: [PATCH 39/97] updated readme --- README.md | 4 ++-- about.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e3b5505..0a8b9c3 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who -can **contribute** too by simply sending a pull request. +This blog may not be the best for new learners (greenhorns) but may be worth a read for others who +can **contribute** too by simply sending in a pull request. After completing this if you want to get your hands dirty then do try to solve some problems involving various [algorithms and data structures, in Java](https://github.com/ramswaroop/Algorithms-and-Data-Structures-in-Java). diff --git a/about.md b/about.md index 4493520..c2fd011 100644 --- a/about.md +++ b/about.md @@ -12,8 +12,8 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -In short, this blog is for those who have been coding in **Java** for a while (**and not for greenhorns**) who -can **contribute** too by simply sending a pull request. +This blog may not be the best for new learners (greenhorns) but may be worth a read for others who +can **contribute** too by simply sending in a pull request. ### License GNU General Public License v2.0 From fd9375da91248fbc3bb0ddd7a991af33e9d01ecb Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 11 Nov 2015 13:58:23 +0530 Subject: [PATCH 40/97] grammar correction --- _posts/2015-08-20-nested-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 44210c1..0db76e0 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -526,7 +526,7 @@ public class MethodLocalVSInner { {% endhighlight %} This is an interesting [question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class), -so think and tell what is the output? +so think and determine the output? A. inner B. outer From f885d25c4e0f31aa5c79bb00ab13fc3ff7304116 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 12 Nov 2015 11:34:33 +0530 Subject: [PATCH 41/97] added content --- _posts/2015-08-20-nested-classes.md | 38 ++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 0db76e0..971bd8e 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -525,7 +525,7 @@ public class MethodLocalVSInner { } {% endhighlight %} -This is an interesting [question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class), +This is an [interesting question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class), so think and determine the output? A. inner @@ -534,3 +534,39 @@ C. middle D. Compilation fails E. An exception is thrown at runtime +__Q4.__ + +{% highlight java linenos %} +class Car { + class Engine { + // insert code here + } + + public static void main(String[] args) { + new Car().go(); + } + + void go() { + new Engine(); + } + + void drive() { + System.out.println("hi"); + } +} +{% endhighlight %} + +Which, inserted independently at line 3, produce the output "hi"? (Choose all that apply.) + +A. { Car.drive(); } +B. { this.drive(); } +C. { Car.this.drive(); } +D. { this.Car.this.drive(); } +E. Engine() { Car.drive(); } +F. Engine() { this.drive(); } +G. Engine() { Car.this.drive(); } + +__Q5.__ + + + From 20d252f9d2c504c7b60424f39afd50588cc00c47 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 12 Nov 2015 11:45:17 +0530 Subject: [PATCH 42/97] added content --- _posts/2015-08-20-nested-classes.md | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 971bd8e..c2f261c 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -568,5 +568,36 @@ G. Engine() { Car.this.drive(); } __Q5.__ +{% highlight java linenos %} +class City { + class Manhattan { + void doStuff() throws Exception { + System.out.print("x "); + } + } + + class TimesSquare extends Manhattan { + void doStuff() throws Exception { + } + } + + public static void main(String[] args) throws Exception { + new City().go(); + } + + void go() throws Exception { + new TimesSquare().doStuff(); + } +} +{% endhighlight %} + +What is the result? + +A. x +B. xx +C. No output is produced +D. Compilation fails due to multiple errors +E. Compilation fails due only to an error on line 4 +F. Compilation fails due only to an error on line 7 From 6d68c6b0f5b771312b2573555e90c0f19769925b Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 13 Nov 2015 11:37:56 +0530 Subject: [PATCH 43/97] added content --- _posts/2015-08-20-nested-classes.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index c2f261c..744cf62 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -170,12 +170,20 @@ class MyOuter { public static void main(String[] args) { MyOuter.MyInner inner = new MyOuter().new MyInner(); - inner.seeOuter(); + inner.seeOuter(); // works fine + System.out.println(inner.x); // compiler error as you can't directly + // access outer class member through a + // inner class reference (you can have + // getter & setter in the inner class) } } {% endhighlight %} -NOTE: Normally the inner class code doesn't need a reference to the outer class, since it already has an implicit one +#### Some points to note + +* You can refer to this [StackOverflow question](http://stackoverflow.com/questions/12251922/i-thought-inner-classes-could-access-the-outer-class-variables-methods) +to understand how you can and can't access outer class members from inner class. +* Normally the inner class code doesn't need a reference to the outer class, since it already has an implicit one it's using to access the members of the outer class, it would need a reference to the outer class if it needed to pass that reference to some other code as in the above example. @@ -205,7 +213,7 @@ In the above example, `class Inner` is the method-local inner class. But the inn instantiating the inner class. Just because you declared the class doesn't mean you created an instance of it. So to use the inner class, you must make an instance of it somewhere within the method but __below the inner class definition (or the compiler won't be able to find the inner class)__. You can even refer my -[Stackoverflow question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class). +[StackOverflow question](http://stackoverflow.com/questions/29620714/method-local-inner-class-vs-inner-class). The following legal code shows how to instantiate and use a method-local inner class: @@ -594,7 +602,7 @@ class City { What is the result? A. x -B. xx +B. x x C. No output is produced D. Compilation fails due to multiple errors E. Compilation fails due only to an error on line 4 From 87ccefd15a4b5423850328536454359aa36b69ec Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 14 Nov 2015 22:45:27 +0530 Subject: [PATCH 44/97] added content --- _posts/2015-08-20-nested-classes.md | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 744cf62..d5189e8 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -608,4 +608,37 @@ D. Compilation fails due to multiple errors E. Compilation fails due only to an error on line 4 F. Compilation fails due only to an error on line 7 +__Q6.__ + +{% highlight java linenos %} +class OuterClassAccess { + private int size = 7; + private static int length = 3; + + public static void main(String[] args) { + new OuterClassAccess().go(); + } + + void go() { + int size = 5; + System.out.println(new Inner().adder()); + } + + class Inner { + int adder() { + return size * length; // inner class can access static members of outer class + } + } +} +{% endhighlight %} + +What is the result? + +A. 15 +B. 21 +C. An exception is thrown at runtime +D. Compilation fails due to multiple errors +E. Compilation fails due only to an error on line 4 +F. Compilation fails due only to an error on line 5 + From d648f6e907322013ad0349ad85335491bb48bfae Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 14 Nov 2015 22:53:42 +0530 Subject: [PATCH 45/97] added content --- _posts/2015-08-20-nested-classes.md | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index d5189e8..4c340cd 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -641,4 +641,39 @@ D. Compilation fails due to multiple errors E. Compilation fails due only to an error on line 4 F. Compilation fails due only to an error on line 5 +__Q7.__ + +{% highlight java linenos %} +import java.util.*; + +public class Pockets { + public static void main(String[] args) { + String[] sa = {"nickel", "button", "key", "lint"}; + Sorter s = new Sorter(); + for (String s2 : sa) System.out.print(s2 + " "); + Arrays.sort(sa, s); + System.out.println(); + for (String s2 : sa) System.out.print(s2 + " "); + } + + class Sorter implements Comparator { + public int compare(String a, String b) { + return b.compareTo(a); + } + } +} +{% endhighlight %} + +What is the output of the above program? + +A. Compilation fails +B. button key lint nickel + nickel lint key button +C. nickel button key lint + button key lint nickel +D. nickel button key lint + nickel button key lint +E. nickel button key lint + nickel lint key button +F. An exception is thrown at runtime From 7553f2e4b75b81a29300c6c16e7f9ba4cd5417fe Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 14 Nov 2015 22:54:47 +0530 Subject: [PATCH 46/97] modified content --- _posts/2015-08-20-nested-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 4c340cd..779a0bb 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -664,7 +664,7 @@ public class Pockets { } {% endhighlight %} -What is the output of the above program? +What is the result? A. Compilation fails B. button key lint nickel From fd906cf7333203ff52383d148df469b8f905b4a1 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 15 Nov 2015 20:47:41 +0530 Subject: [PATCH 47/97] modified content --- _posts/2015-08-20-nested-classes.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 779a0bb..8f90eea 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -80,9 +80,9 @@ class MyOuter { {% endhighlight %} The output of the above program would be `Outer x is 7`. This happens because an __inner class can access private members -of its outer class__. The inner class is also a member of the outer class. So just as any member of the outer class (say, -an instance method) can access any other member of the outer class, private or not, the inner class (also a member) can do -the same. +of its outer class even those which are declared as `static`__. The inner class is also a member of the outer class. So +just as any member of the outer class (say, an instance method) can access any other member of the outer class, private +or not, the inner class (also a member) can do the same. ### Instantiate the inner class @@ -110,7 +110,7 @@ class MyOuter { {% endhighlight %} The reason the above syntax works is because the outer class instance method code is doing the instantiating. In other -words, there's already an instance of the outer class—the instance running the makeInner() method. +words, there's already an instance of the outer class i.e, the instance running the makeInner() method. #### Instantiating an Inner Class from Outside the Outer Class Instance Code @@ -149,7 +149,7 @@ public void myMethod() { So within an inner class code, the `this` reference refers to the instance of the inner class, as you'd probably expect, since `this` always refers to the currently executing object. But when the inner class code wants an explicit reference -to the outer class instance that the inner instance is tied to, it can access the outer class `this` like: +to the outer class instance that the inner instance is tied to, it can access the outer class `this` like shown below: {% highlight java linenos %} class MyOuter { @@ -183,6 +183,7 @@ class MyOuter { * You can refer to this [StackOverflow question](http://stackoverflow.com/questions/12251922/i-thought-inner-classes-could-access-the-outer-class-variables-methods) to understand how you can and can't access outer class members from inner class. +* Inner class can access __private members__ of the outer enclosing class even those __which are declared `static`__. * Normally the inner class code doesn't need a reference to the outer class, since it already has an implicit one it's using to access the members of the outer class, it would need a reference to the outer class if it needed to pass that reference to some other code as in the above example. From 86b8ba0d58504212ee4dc37d4615038528462598 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 16 Nov 2015 23:30:16 +0530 Subject: [PATCH 48/97] added + modified content --- _posts/2015-05-14-variables.md | 39 ++++++++++++++++++-- _posts/2015-05-25-object-oriented-design.md | 2 +- img/posts/IS-A.png | Bin 14044 -> 23487 bytes img/posts/variables.png | Bin 0 -> 171171 bytes 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 img/posts/variables.png diff --git a/_posts/2015-05-14-variables.md b/_posts/2015-05-14-variables.md index 126da81..4f17ad6 100644 --- a/_posts/2015-05-14-variables.md +++ b/_posts/2015-05-14-variables.md @@ -1,14 +1,45 @@ --- layout: post title: Variables -published: false --- Variables can be broadly classified in to 2 types in Java: -1. Instance variables (declared in a class). -2. Local variables (declared inside a method). +1. __Instance__ variables (declared in a class). +2. __Local__ variables (declared inside a method). + +Instance variables and objects reside in heap whereas local variables reside in stack. Consider the below program: + +{% highlight java linenos %} +class Collar { +} + +class Dog { + Collar c; // instance variable + String name; // instance variable + + public static void main(String[] args) { + Dog d; // local variable: d + d = new Dog(); + d.go(d); + } + + void go(Dog dog) { // local variable: dog + c = new Collar(); + dog.setName("Aiko"); + } + + void setName(String dogName) { // local var: dogName + name = dogName; + // do more stuff + } +} +{% endhighlight %} + +For the above program, the instance variables, objects and local variables will be stored in memory as shown in the +figure below: + +![](/img/posts/variables.png) -Instance variables and objects reside in heap whereas local variables reside in stack. diff --git a/_posts/2015-05-25-object-oriented-design.md b/_posts/2015-05-25-object-oriented-design.md index b25a194..f016c94 100644 --- a/_posts/2015-05-25-object-oriented-design.md +++ b/_posts/2015-05-25-object-oriented-design.md @@ -44,7 +44,7 @@ In OO, the concept of _IS-A_ is based on __class inheritance or interface implem For example in the below figure: -![](/img/posts/IS-A.png) +![](/img/posts/is-a.png) _"Car extends Vehicle" means "Car IS-A Vehicle."
"Subaru extends Car" means "Subaru IS-A Car."_ diff --git a/img/posts/IS-A.png b/img/posts/IS-A.png index 1f4c62734e8b7a39fdf7a29bb2168f630dc7e944..a9f523fa850ffa3448e8ad798631f111b648fae5 100644 GIT binary patch literal 23487 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 delta 11031 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 diff --git a/img/posts/variables.png b/img/posts/variables.png new file mode 100644 index 0000000000000000000000000000000000000000..9036cc60396338631b4eb1e122110e454fcd3baf GIT binary patch literal 171171 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%0D2*6QO)3;7 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 IW$YgPA74hQzW@LL literal 0 HcmV?d00001 From 9937a3c6e6486355d81ea4bffd2b583e6c667b61 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 16 Nov 2015 23:30:45 +0530 Subject: [PATCH 49/97] image renamed --- img/posts/{IS-A.png => is-a.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename img/posts/{IS-A.png => is-a.png} (100%) diff --git a/img/posts/IS-A.png b/img/posts/is-a.png similarity index 100% rename from img/posts/IS-A.png rename to img/posts/is-a.png From 4239587550f87067dab5cc97fa4b07021c233ec7 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 17 Nov 2015 19:41:11 +0530 Subject: [PATCH 50/97] added content --- _posts/2015-05-14-variables-and-literals.md | 82 +++++++++++++++++++++ _posts/2015-05-14-variables.md | 45 ----------- 2 files changed, 82 insertions(+), 45 deletions(-) create mode 100644 _posts/2015-05-14-variables-and-literals.md delete mode 100644 _posts/2015-05-14-variables.md diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md new file mode 100644 index 0000000..fb1d5d5 --- /dev/null +++ b/_posts/2015-05-14-variables-and-literals.md @@ -0,0 +1,82 @@ +--- +layout: post +title: Variables and Literals +--- + +Variables can be broadly classified in to 2 types in Java: + +1. __Instance__ variables (declared in a class). +2. __Local__ variables (declared inside a method). + +Instance variables and objects reside in heap whereas local variables reside in stack. Consider the below program: + +{% highlight java linenos %} +class Collar { +} + +class Dog { + Collar c; // instance variable + String name; // instance variable + + public static void main(String[] args) { + Dog d; // local variable: d + d = new Dog(); + d.go(d); + } + + void go(Dog dog) { // local variable: dog + c = new Collar(); + dog.setName("Aiko"); + } + + void setName(String dogName) { // local var: dogName + name = dogName; + // do more stuff + } +} +{% endhighlight %} + +For the above program, the instance variables, objects and local variables will be stored in memory as shown in the +figure below: + +![](/img/posts/variables.png) + +### Literal Values for All Primitive Types + +A __primitive literal__ is merely a source code representation of the primitive data types—in other words, an integer, +floating-point number, boolean, or character that you type in while writing code. The following are examples of +primitive literals: + +{% highlight java %} +'b' // char literal +42 // int literal +false // boolean literal +2546789.343 // double literal +{% endhighlight %} + +**Integer Literal** + +There are four ways to represent integer numbers in the Java language: decimal (base 10), octal (base 8), +hexadecimal (base 16), and from Java 7, binary (base 2). + +One more new feature introduced in Java 7 was __numeric literals with underscores (_) characters__. This was introduced +to increase readability. See below: + +{% highlight java %} +int pre7 = 1000000; // pre Java 7 – we hope it's a million +int with7 = 1_000_000; // much clearer! +{% endhighlight %} + +But you must keep in mind the below gotchas: +{% highlight java %} +int i1 = _1_000_000; // illegal, can't begin with an "_" +int i2 = 10_0000_0; // legal, but confusing +{% endhighlight %} + + + + + + + + diff --git a/_posts/2015-05-14-variables.md b/_posts/2015-05-14-variables.md deleted file mode 100644 index 4f17ad6..0000000 --- a/_posts/2015-05-14-variables.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: post -title: Variables ---- - -Variables can be broadly classified in to 2 types in Java: - -1. __Instance__ variables (declared in a class). -2. __Local__ variables (declared inside a method). - -Instance variables and objects reside in heap whereas local variables reside in stack. Consider the below program: - -{% highlight java linenos %} -class Collar { -} - -class Dog { - Collar c; // instance variable - String name; // instance variable - - public static void main(String[] args) { - Dog d; // local variable: d - d = new Dog(); - d.go(d); - } - - void go(Dog dog) { // local variable: dog - c = new Collar(); - dog.setName("Aiko"); - } - - void setName(String dogName) { // local var: dogName - name = dogName; - // do more stuff - } -} -{% endhighlight %} - -For the above program, the instance variables, objects and local variables will be stored in memory as shown in the -figure below: - -![](/img/posts/variables.png) - - - From 8046bcfe296da04ce4b2b95778bcf91e6b8c7d37 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 18 Nov 2015 10:43:10 +0530 Subject: [PATCH 51/97] added content --- _posts/2015-05-14-variables-and-literals.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index fb1d5d5..b079e16 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -43,18 +43,22 @@ figure below: ### Literal Values for All Primitive Types -A __primitive literal__ is merely a source code representation of the primitive data types—in other words, an integer, -floating-point number, boolean, or character that you type in while writing code. The following are examples of +A __primitive literal__ is merely a source code representation of the primitive data types, in other words, an integer, +floating-point number, boolean, or character etc. that you type in while writing code. The following are examples of primitive literals: {% highlight java %} +127 // byte literal +376 // short literal +4290 // int literal +58L // long literal +2546.343f // float literal +2546789.343 // double literal 'b' // char literal -42 // int literal false // boolean literal -2546789.343 // double literal {% endhighlight %} -**Integer Literal** +####Integer Literals There are four ways to represent integer numbers in the Java language: decimal (base 10), octal (base 8), hexadecimal (base 16), and from Java 7, binary (base 2). @@ -73,6 +77,13 @@ int i1 = _1_000_000; // illegal, can't begin with an "_" int i2 = 10_0000_0; // legal, but confusing {% endhighlight %} +NOTE: You can use the underscore character for any of the numeric types (including doubles and floats), but for +doubles and floats, you CANNOT add an underscore character directly next to the decimal point. + +**Decimal Literals** + + + From 52040c2d80059ab8e69fef9d4b8d6dfb554f9095 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 19 Nov 2015 11:31:07 +0530 Subject: [PATCH 52/97] added content --- _posts/2015-05-14-variables-and-literals.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index b079e16..f0f0418 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -43,9 +43,9 @@ figure below: ### Literal Values for All Primitive Types -A __primitive literal__ is merely a source code representation of the primitive data types, in other words, an integer, -floating-point number, boolean, or character etc. that you type in while writing code. The following are examples of -primitive literals: +__Literals__ are nothing but values that a particular data type can hold. A __primitive literal__ is merely a source +code representation of the primitive data types, in other words, an integer, floating-point number, boolean, or +character etc. that you type in while writing code. The following are examples of primitive literals: {% highlight java %} 127 // byte literal @@ -58,7 +58,7 @@ primitive literals: false // boolean literal {% endhighlight %} -####Integer Literals +#### Integer Literals There are four ways to represent integer numbers in the Java language: decimal (base 10), octal (base 8), hexadecimal (base 16), and from Java 7, binary (base 2). @@ -84,6 +84,19 @@ doubles and floats, you CANNOT add an underscore character directly next to the +**Binary Literals** + +From Java 7, you can initialize variables holding binary literals. But they must start with either 0B or 0b, as shown +below: + +{% highlight java %} +int b1 = 0B101010; // set b1 to binary 101010 (decimal 42) +int b2 = 0b00011; // set b2 to binary 11 (decimal 3) +{% endhighlight %} + + + + From ac7fb2c089a75a97f1d7f15252377fdecaef1984 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 19 Nov 2015 19:41:44 +0530 Subject: [PATCH 53/97] added content --- _posts/2015-05-14-variables-and-literals.md | 33 ++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index f0f0418..8523363 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -82,11 +82,16 @@ doubles and floats, you CANNOT add an underscore character directly next to the **Decimal Literals** +These are numbers with a radix of 10 which we use most commonly. They do not need prefix of any kind and are initialized +as below: +{% highlight java %} +int length = 343; +{% endhighlight %} **Binary Literals** -From Java 7, you can initialize variables holding binary literals. But they must start with either 0B or 0b, as shown +From Java 7, you can initialize variables holding binary literals. But they must start with either `0B` or `0b`, as shown below: {% highlight java %} @@ -94,6 +99,32 @@ int b1 = 0B101010; // set b1 to binary 101010 (decimal 42) int b2 = 0b00011; // set b2 to binary 11 (decimal 3) {% endhighlight %} +**Octal Literals** + +Octal integers use only the digits 0 to 7. They have a radix of 8. In Java, you represent an integer in octal form by +placing a zero in front of the number, as follows: + +{% highlight java %} +int six = 06; // Equal to decimal 6 +int seven = 07; // Equal to decimal 7 +int eight = 010; // Equal to decimal 8 +int nine = 011; // Equal to decimal 9 +{% endhighlight %} + +You can have up to 21 digits in an octal number, not including the leading zero. This is because no mater what number +system you use, the range of values that an `int` can hold is always between $$ -2^31 to +2^31-1 $$. + +**Hexadecimal Literals** + + + + + +#### Floating-point Literals + + + + From d67f56b429505292b1977e1100ff2fff4ee8b557 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 20 Nov 2015 17:44:12 +0530 Subject: [PATCH 54/97] minor fix --- _posts/2015-08-20-nested-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2015-08-20-nested-classes.md b/_posts/2015-08-20-nested-classes.md index 8f90eea..bcae36a 100644 --- a/_posts/2015-08-20-nested-classes.md +++ b/_posts/2015-08-20-nested-classes.md @@ -627,7 +627,7 @@ class OuterClassAccess { class Inner { int adder() { - return size * length; // inner class can access static members of outer class + return size * length; } } } From 033b447d1d14088bc61fb4a22b40b8fe560fe255 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 20 Nov 2015 17:47:57 +0530 Subject: [PATCH 55/97] unpublished variables chapter --- _posts/2015-05-14-variables-and-literals.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 8523363..1320a8d 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -1,6 +1,7 @@ --- layout: post title: Variables and Literals +published: false --- Variables can be broadly classified in to 2 types in Java: From 74a38876767a8ddd49df3ae74df6d0055c434334 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 20 Nov 2015 23:38:19 +0530 Subject: [PATCH 56/97] added + modified content --- _posts/2015-05-14-variables-and-literals.md | 32 +++++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 1320a8d..b6d7626 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -1,7 +1,7 @@ --- layout: post title: Variables and Literals -published: false +published: true --- Variables can be broadly classified in to 2 types in Java: @@ -106,20 +106,40 @@ Octal integers use only the digits 0 to 7. They have a radix of 8. In Java, you placing a zero in front of the number, as follows: {% highlight java %} -int six = 06; // Equal to decimal 6 -int seven = 07; // Equal to decimal 7 -int eight = 010; // Equal to decimal 8 -int nine = 011; // Equal to decimal 9 +int six = 06; // equal to decimal 6 +int seven = 07; // equal to decimal 7 +int eight = 010; // equal to decimal 8 +int nine = 011; // equal to decimal 9 {% endhighlight %} You can have up to 21 digits in an octal number, not including the leading zero. This is because no mater what number -system you use, the range of values that an `int` can hold is always between $$ -2^31 to +2^31-1 $$. +system you use, the range of values that an `int` can hold is always between $$ -2^{31} $$ to $$ +2^{31}-1 $$. **Hexadecimal Literals** +Hexadecimal (hex for short) numbers are constructed using 16 distinct symbols. They have a radix of 16. Counting from +0 through 15 in hex looks like this: +{% highlight java %} +0 1 2 3 4 5 6 7 8 9 a b c d e f +{% endhighlight %} + +Java accepts uppercase or lowercase letters for the extra digits _(one of the few places Java is not case-sensitive)_. +You represent an integer in hexadecimal form by placing a `0x` in front of the number, as follows: + +{% highlight java %} +int x = 0X0001; // equals to decimal 1 +int y = 0x7fffffff; // equals to decimal 2147483647 +int z = 0xDeadCafe; // equals to decimal -559035650 +{% endhighlight %} +All four integer literals (binary, octal, decimal, and hexadecimal) are defined as `int` by default, but they may also +be specified as `long` by placing a suffix of `L` or `l` after the number: +{% highlight java %} +long jo = 110599L; +long so = 0xFFFFl; // Note the lowercase 'l' +{% endhighlight %} #### Floating-point Literals From 70c10fd1f7a0d71ff33daad5913395e76975b42e Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 21 Nov 2015 19:13:57 +0530 Subject: [PATCH 57/97] added content --- _posts/2015-05-14-variables-and-literals.md | 27 ++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index b6d7626..e9e9692 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -87,7 +87,7 @@ These are numbers with a radix of 10 which we use most commonly. They do not nee as below: {% highlight java %} -int length = 343; +int length = 343; // 343 is the literal {% endhighlight %} **Binary Literals** @@ -143,16 +143,41 @@ long so = 0xFFFFl; // Note the lowercase 'l' #### Floating-point Literals +Floating-point numbers are defined as a number, a decimal symbol, and more numbers representing the fraction. For +example, +{% highlight java %} +double d = 11301874.9881024; +{% endhighlight %} +By default, floating-point literals are defined as `double` (64 bits) so if you want to assign a floating-point literal +to a variable of type `float` (32 bits), you must attach the suffix `F` or `f` to the number. So, the below code +generates a compiler error: +{% highlight java %} +float f = 23.467890; // Compiler error, possible loss + // of precision +{% endhighlight %} +This happens because we're trying to fit a larger number (64 bits) into a (potentially) less precise "container" +(32 bits). +Now as by default floating-point literals are of type `double`, it is optional to attach a suffix of `D` or `d` when you +want to assign it to a variable of type `double`. For example, + +{% highlight java %} +double d = 110599.995011D; // Optional, not required +double g = 987.897; // No 'D' suffix, but OK because the + // literal is a double by default +{% endhighlight %} +#### Boolean Literals +#### Character Literals +#### String Literals From cccf40df65644e1ab3509f4c097f96ce72897120 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 22 Nov 2015 23:27:15 +0530 Subject: [PATCH 58/97] added content --- _posts/2015-05-14-variables-and-literals.md | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index e9e9692..686f1b7 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -173,11 +173,47 @@ double g = 987.897; // No 'D' suffix, but OK because the #### Boolean Literals +Boolean literals can be either `true` or `false`. In C (and some other languages) it is common to use numbers to +represent true or false, but this will not work in Java. For example, +{% highlight java %} +boolean t = true; // Legal +boolean f = 0; // Compiler error! +int x = 1; if (x) { } // Compiler error! +{% endhighlight %} #### Character Literals +A char literal is represented by a single character in __single quotes__: + +{% highlight java %} +char a = 'a'; +char b = '@'; +{% endhighlight %} + +You can also assign unicode value to a `char` variable, like: + +{% highlight java %} +char letterN = '\u004E'; // The letter 'N' +{% endhighlight %} + +Note, characters are nothing but __16-bit unsigned integers__. So, you can assign a number literal, assuming it will fit +into the unsigned 16-bit range (0 to 65535) to a `char` variable. For example, the following are all __legal__: + +{% highlight java %} +char a = 0x892; // hexadecimal literal +char b = 982; // int literal +char c = (char)70000; // The cast is required; 70000 is + // out of char range +char d = (char) -98; // Ridiculous, but legal +{% endhighlight %} + +And the following are __not legal__ and produce compiler errors: +{% highlight java %} +char e = -29; // Possible loss of precision; needs a cast +char f = 70000; // Possible loss of precision; needs a cast +{% endhighlight %} #### String Literals From 2684c800d5f243218c3476ba21d938fa8a37805a Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 23 Nov 2015 11:45:51 +0530 Subject: [PATCH 59/97] added + modified content --- _posts/2015-05-14-variables-and-literals.md | 27 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 686f1b7..1ae0f10 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -4,10 +4,13 @@ title: Variables and Literals published: true --- -Variables can be broadly classified in to 2 types in Java: +Variables are devices that are used to store data, such as a number, or a string of character data so that we can +manipulate them later in our program. Variables can be broadly classified in to 4 types in Java: -1. __Instance__ variables (declared in a class). -2. __Local__ variables (declared inside a method). +1. __Instance__ variables (non-static, declared in a class). +2. __Class__ variables (static, declared in a class). +3. __Local__ variables (declared inside a method). +4. __Parameters__ (variables in a method signature). Instance variables and objects reside in heap whereas local variables reside in stack. Consider the below program: @@ -215,5 +218,21 @@ char e = -29; // Possible loss of precision; needs a cast char f = 70000; // Possible loss of precision; needs a cast {% endhighlight %} -#### String Literals +#### Literal values for Strings + +You can create a `String` in Java in the following ways: + +{% highlight java %} +String s = "tutorial"; +String str = new String("Rahul roy"); +String con = s + str; // concatenate 2 strings +{% endhighlight %} + +Strings are __not primitives__ in Java but can be represented as literals, in other words, they can be typed directly +into code like: + +{% highlight java %} +System.out.println("Bill" + " Joy"); +{% endhighlight %} + From ba4351bf910b2c54ed62179bf9016fcb3b120791 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 24 Nov 2015 11:16:32 +0530 Subject: [PATCH 60/97] added content --- _posts/2015-05-14-variables-and-literals.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 1ae0f10..7d54797 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -1,7 +1,6 @@ --- layout: post title: Variables and Literals -published: true --- Variables are devices that are used to store data, such as a number, or a string of character data so that we can @@ -235,4 +234,10 @@ into code like: System.out.println("Bill" + " Joy"); {% endhighlight %} +### Literal values for Non-primitives + +Variables are just bit holders, with a designated type. You can have an `int` holder, a `double` holder, a `long` holder, +and even a `String[]` holder. This holder is assigned a bunch of bits representing the value. For primitives, the bits +represent __a numeric value__ but for non-primitives, these bits represent __a way to get to the object__. + From 38e7c4150bfe83cbb6b54002fa77bfdd3062af90 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 24 Nov 2015 23:37:11 +0530 Subject: [PATCH 61/97] added content --- _posts/2015-05-14-variables-and-literals.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 7d54797..b55e75b 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -234,10 +234,19 @@ into code like: System.out.println("Bill" + " Joy"); {% endhighlight %} -### Literal values for Non-primitives +### Literal values for Non-Primitives Variables are just bit holders, with a designated type. You can have an `int` holder, a `double` holder, a `long` holder, and even a `String[]` holder. This holder is assigned a bunch of bits representing the value. For primitives, the bits represent __a numeric value__ but for non-primitives, these bits represent __a way to get to the object__. +For example, a `byte` with a value of `6` means that the bit pattern in the variable (the `byte` holder) is `00000110`, +representing the 8 bits. But what happens in case of non-primitives, for example, `Button b = new Button();`, what's +inside the `Button` holder `b`? Is it the Button object? No! A variable referring to an object is just a reference +variable. A __reference variable__ bit holder contains __bits representing a way to get to the object__. We don't know +what the format is. The way in which object references are stored is virtual-machine specific (it's a pointer to +something, we just don't know what that something really is). All we can say for sure is that the variable's value is +not the object, but rather a value representing a specific object on the heap. Or `null`. When it is `null`, i.e, +`Button b = null;` you can say that the reference variable `b` is not referring to any object. + From f1887f522ce71d35b676d37f930440184ba75b6e Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 25 Nov 2015 23:38:24 +0530 Subject: [PATCH 62/97] added content --- _posts/2015-05-14-variables-and-literals.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index b55e75b..b3148ed 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -249,4 +249,11 @@ something, we just don't know what that something really is). All we can say for not the object, but rather a value representing a specific object on the heap. Or `null`. When it is `null`, i.e, `Button b = null;` you can say that the reference variable `b` is not referring to any object. +### Casting + +__Casting__ is a way of converting literal values/objects from one type to another. When the type of variable is +__different__ from the type of literal/object it's holding/referring, you may require __casting__. Casting can be done +by the compiler _(implicit cast)_ or by you _(explicit cast)_. + + From 90b2ccc365ee07b7bea7e71543b1768da5650274 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 25 Nov 2015 23:55:58 +0530 Subject: [PATCH 63/97] added content --- _posts/2015-05-14-variables-and-literals.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index b3148ed..006375e 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -252,8 +252,14 @@ not the object, but rather a value representing a specific object on the heap. O ### Casting __Casting__ is a way of converting literal values/objects from one type to another. When the type of variable is -__different__ from the type of literal/object it's holding/referring, you may require __casting__. Casting can be done -by the compiler _(implicit cast)_ or by you _(explicit cast)_. +__different__ from the type of literal/object it's holding/referring, you may require __casting__. + +Casting can be done by the compiler _(implicit cast)_ or by you _(explicit cast)_. Typically, an implicit cast happens +when you're doing a __widening conversion__, in other words, putting a smaller thing (say, a byte) into a bigger container +(such as an int). But when you try to put a large value into a small container (referred to as __narrowing__), you should +do an explicit cast, where you tell the compiler that you're aware of the danger and accept full responsibility. + + From 6a1f9627675fec9b3afb16afea345da6e7234a1e Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 26 Nov 2015 11:26:38 +0530 Subject: [PATCH 64/97] added content --- _posts/2015-05-14-variables-and-literals.md | 47 ++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 006375e..1950a73 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -257,7 +257,52 @@ __different__ from the type of literal/object it's holding/referring, you may re Casting can be done by the compiler _(implicit cast)_ or by you _(explicit cast)_. Typically, an implicit cast happens when you're doing a __widening conversion__, in other words, putting a smaller thing (say, a byte) into a bigger container (such as an int). But when you try to put a large value into a small container (referred to as __narrowing__), you should -do an explicit cast, where you tell the compiler that you're aware of the danger and accept full responsibility. +do an explicit cast, where you tell the compiler that you're aware of the danger and accept full responsibility. Let's +for example consider the below program: + +{% highlight java linenos %} +class Casting { + public static void main(String [] args) { + long a = 100; // literal '100' is implicitly an 'int' + //but the compiler does an implicit cast + int b = (int) 10.23; // literal '10.23' is implicitly a 'double' + // so we require an explicit cast + int x = 3957.229; // illegal, can't store a large value in a + // small container without explicit cast + } +} +{% endhighlight %} + +There is another rule which you must be aware of, i.e, __the result of an expression involving anything int-sized or +smaller is always an `int`__. Check this out: + +{% highlight java %} +byte a = 3; // No problem, 3 fits in a byte +byte b = 8; // No problem, 8 fits in a byte +byte c = a + b; // Should be no problem, sum of the two bytes + // fits in a byte +{% endhighlight %} + +The last line won't compile! You'll get an error like this: + +{% highlight java %} +TestBytes.java:5: possible loss of precision +found : int +required: byte +byte c = a + b; + ^ +{% endhighlight %} + +Doing an explicit cast like: + +{% highlight java %} +byte c = (byte) (a + b); +{% endhighlight %} + +solves the issue. + +#### What happens when you cast a large value to store it in a small container + From a049cb0707d8dccb4552fb62628a219234efd367 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 27 Nov 2015 11:08:02 +0530 Subject: [PATCH 65/97] added content --- _posts/2015-05-14-variables-and-literals.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 1950a73..9b1f9e6 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -303,8 +303,27 @@ solves the issue. #### What happens when you cast a large value to store it in a small container +When you do a explicit cast, the compiler just keeps __the number of bits (from right)__ that the variable type can hold +and strips off the rest. Consider the below program to understand better: +{% highlight java linenos %} +class Casting { + public static void main(String [] args) { + int i = 7; + byte b = (byte) i; + System.out.println("The 1st byte is " + b); // prints 7 + // now let's see another example + int i = 128; + byte b = (byte) i; + System.out.println("The 2nd byte is " + b); // prints -128 + } +} +{% endhighlight %} - +So, in line 4, `i` is `7` i.e, `00000000000000000000000000000111` (32 bits) and when we do a explicit cast, the compiler +just stores `00000111` (8 bits) in variable `b` (as `byte` can hold only 8 bits) which is also `7`. Therefore, it prints +`7`. But in line 8, `i` is `128` i.e, `00000000000000000000000010000000` and after stripping off the extra bits we are +left with `10000000` which is not `128` as the 1st bit is the sign bit. So, after computing the 2's compliment of it we +get `-128` as the result. From 932b96a42067ebdd5112ccbcea27265bb320d5d5 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 27 Nov 2015 11:15:14 +0530 Subject: [PATCH 66/97] added content --- _posts/2015-05-14-variables-and-literals.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 9b1f9e6..60eceed 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -273,8 +273,10 @@ class Casting { } {% endhighlight %} -There is another rule which you must be aware of, i.e, __the result of an expression involving anything int-sized or -smaller is always an `int`__. Check this out: +#### There are some rules which you must be aware of: + +* The result of an expression involving anything int-sized or smaller is always an `int`, so we must explicitly cast +it. Check this out: {% highlight java %} byte a = 3; // No problem, 3 fits in a byte @@ -301,6 +303,13 @@ byte c = (byte) (a + b); solves the issue. +* In case of compound assignment operators, explicit cast isn't required. The below code compiles just fine: + +{% highlight java %} +byte b = 3; +b += 7; // No problem - adds 7 to b (result is 10) +{% endhighlight %} + #### What happens when you cast a large value to store it in a small container When you do a explicit cast, the compiler just keeps __the number of bits (from right)__ that the variable type can hold From a935100892912b48f6d3f3b00f03e1ba89b74042 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 27 Nov 2015 11:22:16 +0530 Subject: [PATCH 67/97] add + modified contents --- _posts/2015-05-14-variables-and-literals.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 60eceed..fa66198 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -336,3 +336,10 @@ left with `10000000` which is not `128` as the 1st bit is the sign bit. So, afte get `-128` as the result. + + +{% include responsive_ad.html %} + +### Q&A + +__Q1.__ From 5bd464d60e4d4f26d98fa55b17ee8f02b07d646c Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 28 Nov 2015 23:32:31 +0530 Subject: [PATCH 68/97] added content --- _posts/2015-05-14-variables-and-literals.md | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index fa66198..7f7641e 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -249,6 +249,34 @@ something, we just don't know what that something really is). All we can say for not the object, but rather a value representing a specific object on the heap. Or `null`. When it is `null`, i.e, `Button b = null;` you can say that the reference variable `b` is not referring to any object. +There is one important concept to understand here, i.e, a reference variable can refer to any object that is a +__subclass__ of the declared reference variable type but not a __superclass__. Let's see why. + +{% highlight java linenos%} +class Foo { + public void doFooStuff() { } +} +class Bar extends Foo { + public void doBarStuff() { } +} +class Test { + public static void main (String [] args) { + Foo reallyABar = new Bar(); // Legal because Bar is a + // subclass of Foo + Bar reallyAFoo = new Foo(); // Compiler error! Foo is not a + // subclass of Bar + } +} +{% endhighlight %} + +In line 11, `reallyAFoo` is a `Bar` reference variable (child) so someone would call `reallyAFoo.doBarStuff()` but the +reference variable actually holds a `Foo` object (parent) which doesn't have a `doBarStuff()` method. So, the compiler +prevents this and gives a `Incompatible types` error. + +In other words, a child class is nothing but the parent class with additional properties. So there is no issue in line 9, +where a `Foo` reference variable (parent) is holding a `Bar` object (child). Because everything a `Foo` object can do, +can also be done by a `Bar` object. + ### Casting __Casting__ is a way of converting literal values/objects from one type to another. When the type of variable is From ede15913eba491e79d4a0e969ec1c9a8f1c976d9 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 29 Nov 2015 22:27:38 +0530 Subject: [PATCH 69/97] added content --- _posts/2015-05-14-variables-and-literals.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 7f7641e..ea724f8 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -6,10 +6,10 @@ title: Variables and Literals Variables are devices that are used to store data, such as a number, or a string of character data so that we can manipulate them later in our program. Variables can be broadly classified in to 4 types in Java: -1. __Instance__ variables (non-static, declared in a class). -2. __Class__ variables (static, declared in a class). +1. __Class__ variables (static, declared in a class). +2. __Instance__ variables (non-static, declared in a class). 3. __Local__ variables (declared inside a method). -4. __Parameters__ (variables in a method signature). +4. __Block__ variables (variables in static blocks, for-loop blocks etc). Instance variables and objects reside in heap whereas local variables reside in stack. Consider the below program: @@ -363,8 +363,18 @@ just stores `00000111` (8 bits) in variable `b` (as `byte` can hold only 8 bits) left with `10000000` which is not `128` as the 1st bit is the sign bit. So, after computing the 2's compliment of it we get `-128` as the result. +### Scope +Scope refers to the __lifetime and accessibility of a variable__. In simple words, how long will the variable be hanging +around so that they can be used by other parts of the program. Different types of variables have different scope. +1. __Class or static__ variables have the longest scope. They are created when the class is loaded, and they survive as +long as the class stays loaded in the Java Virtual Machine (JVM). +2. __Instance or non-static__ variables are the next most long-lived. They are created when a new instance is created, +and they live until the instance is removed. +3. __Local__ variables are next. They live as long as their method remains on the stack. As we'll soon see, however, +local variables can be alive and still be "out of scope." +4. __Block__ variables live only as long as the code block is executing. {% include responsive_ad.html %} From f069d8f5ca13dad4463ab1f18cf02922ba60f005 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Mon, 30 Nov 2015 23:55:49 +0530 Subject: [PATCH 70/97] added content --- _posts/2015-05-14-variables-and-literals.md | 26 +++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index ea724f8..1af1a5d 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -373,11 +373,33 @@ long as the class stays loaded in the Java Virtual Machine (JVM). 2. __Instance or non-static__ variables are the next most long-lived. They are created when a new instance is created, and they live until the instance is removed. 3. __Local__ variables are next. They live as long as their method remains on the stack. As we'll soon see, however, -local variables can be alive and still be "out of scope." +local variables can be alive and still be "out of scope". 4. __Block__ variables live only as long as the code block is executing. + + + + {% include responsive_ad.html %} ### Q&A -__Q1.__ +__Q1.__ +{% highlight java linenos %} +public class Fishing { + byte b1 = 4; + int i1 = 123456; + long L1 = (long)i1; // line A + short s2 = (short)i1; // line B + byte b2 = (byte)i1; // line C + int i2 = (int)123.456; // line D + byte b3 = b1 + 7; // line E +} +{% endhighlight %} + +Which lines WILL NOT compile? (Choose all that apply.) +A. Line A +B. Line B +C. Line C +D. Line D +E. Line E From d84175391284affe12959c8148ae3c12ba4dd863 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Tue, 1 Dec 2015 23:43:16 +0530 Subject: [PATCH 71/97] added content --- _posts/2015-05-14-variables-and-literals.md | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 1af1a5d..8284d1e 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -376,7 +376,42 @@ and they live until the instance is removed. local variables can be alive and still be "out of scope". 4. __Block__ variables live only as long as the code block is executing. +Below program shows all types of variables and explains their scopes too. Please refer to the comments to understand which +are __in scope__ and which are __out of scope__. +{% highlight java linenos %} +class Scope { + static int s = 343; // static variable + int x; // instance variable + + { // initialization block + x = 7; + int x2 = 5; // block variable + } + + Scope() { // constructor + x += 8; + int x3 = 6; + } + + void doStuff() { // method + int y = 0; // local variable + for (int z = 0; z < 4; z++) { // 'for' code block + y += z + x; + } + z++; // compiler error (out of scope) + x2++; // compiler error (out of scope) + } + + public static void main(String[] a) { + x++; // compiler error! 'x' is instance variable, so + // we need an object to access it + x2++; x3++; // compiler error! block variables scope + // is only inside the block in which they + // are declared + } +} +{% endhighlight %} From 17ec324855e4ae26e81e02a3c3ac8f3441e0d387 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Wed, 2 Dec 2015 23:52:10 +0530 Subject: [PATCH 72/97] added content --- _posts/2015-05-14-variables-and-literals.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 8284d1e..b6808bb 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -413,7 +413,22 @@ class Scope { } {% endhighlight %} - +### Variable Initialization + +Java gives us the option of initializing a declared variable or leaving it uninitialized. When we attempt to use +the uninitialized variable, we can get different behavior depending on __what type of variable or array we are dealing +with (primitives or objects)__. The behavior also depends on __the level (scope) at which we are declaring our +variable__. + +Default values for Instance variables (Primitive and Non-primitive): + +Variable Type | Default Value +--------------|---------------- +`byte`, `short`, `int`, `long` | `0` +`float`, `double` | `0.0` +`boolean` | `false` +`char` | `'\u0000'` +Object reference | `null` (not referencing any object) {% include responsive_ad.html %} From 1e81166f36b97e1fe11017e91393b582945df3c8 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Thu, 3 Dec 2015 23:35:19 +0530 Subject: [PATCH 73/97] added content --- _posts/2015-05-14-variables-and-literals.md | 37 ++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index b6808bb..e6f79cc 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -420,7 +420,7 @@ the uninitialized variable, we can get different behavior depending on __what ty with (primitives or objects)__. The behavior also depends on __the level (scope) at which we are declaring our variable__. -Default values for Instance variables (Primitive and Non-primitive): +#### Default values for Instance variables (Primitive and Non-primitive): Variable Type | Default Value --------------|---------------- @@ -430,6 +430,41 @@ Variable Type | Default Value `char` | `'\u0000'` Object reference | `null` (not referencing any object) +Therefore, for the below program: + +{% highlight java linenos %} +public class Book { + private String title; // instance reference variable + private int noOfPages; // instance primitive variable + public String getTitle() { + return title; + } + public int getNoOfPages() { + return noOfPages; + } + public static void main(String [] args) { + Book b = new Book(); + System.out.println("The title is " + b.getTitle()); + System.out.println("No. of pages are " + b.getNoOfPages()); + } +} +{% endhighlight %} + +The output will be: +`The title is null` +`No. of pages are 0` + +__NOTE:__ `null` is not the same as an empty `String ("")`. A `null` value means the reference variable is not referring +to any object on the heap. + +#### Array Instance Variable + + + +#### Default values for Local (also called Stack or Automatic) variables (Primitive and Non-primitive): + + + {% include responsive_ad.html %} ### Q&A From 54f489c7cfa9399f4e59aa2b087d5e97119b09a3 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sun, 6 Dec 2015 22:53:00 +0530 Subject: [PATCH 74/97] added content --- _posts/2015-05-14-variables-and-literals.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index e6f79cc..dfdcc23 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -459,12 +459,23 @@ to any object on the heap. #### Array Instance Variable - +An array is an object, thus, an array instance variable that's declared but not explicitly initialized will have a value +of __`null`__, just as any other object reference instance variable. But if the array is initialized, all array elements +are given their default values, the same default values that elements of that type get when they're instance variables. +In short, __Array elements are always, always, always given default values, regardless of where the array itself +is declared or instantiated__. + +Variable Type | Default Value +--------------|---------------- +Array (uninitialized) | `null` +Array (initialized) | Default values of their respective types as discussed above #### Default values for Local (also called Stack or Automatic) variables (Primitive and Non-primitive): + + {% include responsive_ad.html %} ### Q&A From 8f6487bc6c90f30d64f2a88a80cfbb0d05f99fea Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 29 May 2015 12:40:00 +0530 Subject: [PATCH 75/97] added content --- _posts/2015-05-14-variables-and-literals.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index dfdcc23..c7ca4e6 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -472,7 +472,9 @@ Array (initialized) | Default values of their respective types as discussed abov #### Default values for Local (also called Stack or Automatic) variables (Primitive and Non-primitive): - +Local variables, including primitives, always, always, always must be initialized before you attempt to use them +(though not necessarily on the same line of code). Java does not give local variables a default value, you must +explicitly initialize them with a value. From 18e7beba4a2a98475107d9058db9c8e659212ef4 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Fri, 4 Dec 2015 22:40:10 +0530 Subject: [PATCH 76/97] added questions --- _posts/2015-05-14-variables-and-literals.md | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index c7ca4e6..6bf6a45 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -501,3 +501,40 @@ B. Line B C. Line C D. Line D E. Line E + +__Q2.__ + +{% highlight java linenos %} +class Mixer { + Mixer() { + } + + Mixer(Mixer m) { + m1 = m; + } + + Mixer m1; + + public static void main(String[] args) { + Mixer m2 = new Mixer(); + Mixer m3 = new Mixer(m2); + m3.go(); + Mixer m4 = m3.m1; + m4.go(); + Mixer m5 = m2.m1; + m5.go(); + } + + void go() { + System.out.print("hi "); + } +} +{% endhighlight %} + +What is the result? +A. hi +B. hi hi +C. hi hi hi +D. Compilation fails +E. hi, followed by an exception +F. hi hi, followed by an exception \ No newline at end of file From ee32d4df65ed3e34241ad211b446bbf49ab76dee Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 5 Dec 2015 21:34:04 +0530 Subject: [PATCH 77/97] added questions --- _posts/2015-05-14-variables-and-literals.md | 37 +++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/_posts/2015-05-14-variables-and-literals.md b/_posts/2015-05-14-variables-and-literals.md index 6bf6a45..cb59fe6 100644 --- a/_posts/2015-05-14-variables-and-literals.md +++ b/_posts/2015-05-14-variables-and-literals.md @@ -482,7 +482,8 @@ explicitly initialize them with a value. ### Q&A -__Q1.__ +__Q1.__ Given the below program: + {% highlight java linenos %} public class Fishing { byte b1 = 4; @@ -502,7 +503,7 @@ C. Line C D. Line D E. Line E -__Q2.__ +__Q2.__ Given the below program: {% highlight java linenos %} class Mixer { @@ -537,4 +538,34 @@ B. hi hi C. hi hi hi D. Compilation fails E. hi, followed by an exception -F. hi hi, followed by an exception \ No newline at end of file +F. hi hi, followed by an exception + +__Q3.__ Given the below program: + +{% highlight java linenos %} +class Fizz { + int x = 5; + + public static void main(String[] args) { + final Fizz f1 = new Fizz(); + Fizz f2 = new Fizz(); + Fizz f3 = FizzSwitch(f1, f2); + System.out.println((f1 == f3) + " " + (f1.x == f3.x)); + } + + static Fizz FizzSwitch(Fizz x, Fizz y) { + final Fizz z = x; + z.x = 6; + return z; + } +} +{% endhighlight %} + +What is the result? +A. true true +B. false true +C. true false +D. false false +E. Compilation fails +F. An exception is thrown at runtime + From ad8dbc74eaa5d9ec4065c39ba9a5d6c482ca9e94 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 12 Dec 2015 15:46:34 +0530 Subject: [PATCH 78/97] grammar corrections --- about.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about.md b/about.md index c2fd011..f58ac39 100644 --- a/about.md +++ b/about.md @@ -6,7 +6,7 @@ permalink: /about/ --- My Java notes jotted down from some of the best books in Java __(SCJP Java, Thinking in Java, -Effective Java, Java Puzzlers and of course JLS)__ and published as a blog with help of the awesome +Effective Java, Java Puzzlers and of course JLS)__ and published as a blog with the help of awesome __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound From 218697dbd4b9bec44123cb73bc139cf0f86db873 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 9 Jul 2016 10:14:21 -0400 Subject: [PATCH 79/97] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a8b9c3..db86db7 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -This blog may not be the best for new learners (greenhorns) but may be worth a read for others who +This blog may not be the best for greenhorns(new learners) but may be worth a read for others who can **contribute** too by simply sending in a pull request. After completing this if you want to get your hands dirty then do try to solve some problems involving various From 12af34a8ee57f55f62fccca1c03a6e74e58ba954 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 9 Jul 2016 10:15:12 -0400 Subject: [PATCH 80/97] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index db86db7..c4d2fe1 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ __Github's Jekyll__. It attempts to demystify some of the most misunderstood concepts in **Java** which may confound even many experienced java programmers. -This blog may not be the best for greenhorns(new learners) but may be worth a read for others who +This blog may not be the best for greenhorns(new learners) but may be worth a read for others, who can **contribute** too by simply sending in a pull request. After completing this if you want to get your hands dirty then do try to solve some problems involving various From 31507dc61c91035c45860134a6562d95f811bfad Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 10 Dec 2016 21:00:36 +0000 Subject: [PATCH 81/97] Delete CNAME --- CNAME | 1 - 1 file changed, 1 deletion(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 050ae32..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -java.ramswaroop.me \ No newline at end of file From 07ae02e2cadc969129f2b945b5297159a4d160b0 Mon Sep 17 00:00:00 2001 From: Ram swaroop Date: Sat, 10 Dec 2016 21:01:18 +0000 Subject: [PATCH 82/97] Create CNAME --- CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 CNAME diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..050ae32 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +java.ramswaroop.me \ No newline at end of file From 667e9bd724313f816b8fc0a0b8a6754cb953f781 Mon Sep 17 00:00:00 2001 From: ramswaroop Date: Sat, 10 Dec 2016 21:06:56 +0000 Subject: [PATCH 83/97] fixed build error (changed highlighter: pygments to rouge) --- _config.yml | 2 +- _posts/2016-05-19-instantiation.md | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 _posts/2016-05-19-instantiation.md diff --git a/_config.yml b/_config.yml index a97a036..3dd748f 100644 --- a/_config.yml +++ b/_config.yml @@ -75,7 +75,7 @@ picture: # BUILD SETTINGS markdown: kramdown -highlighter: pygments +highlighter: rouge sass: sass_dir: _sass style: :compressed diff --git a/_posts/2016-05-19-instantiation.md b/_posts/2016-05-19-instantiation.md new file mode 100644 index 0000000..fc1cf41 --- /dev/null +++ b/_posts/2016-05-19-instantiation.md @@ -0,0 +1,17 @@ +--- +layout: post +title: Instantiation +published: false +--- + +class Init { + Init(int x) { System.out.println("1-arg const"); } + Init() { System.out.println("no-arg const"); } + static { System.out.println("1st static init"); } + { System.out.println("1st instance init"); } + { System.out.println("2nd instance init"); } + static { System.out.println("2nd static init"); } + public static void main(String [] args) { + new Init(); + new Init(7); +} } From 075614d80481b471eed3d4fab64d7ae21aa3bf75 Mon Sep 17 00:00:00 2001 From: ramswaroop Date: Sat, 10 Dec 2016 23:06:12 +0000 Subject: [PATCH 84/97] migration from jekyll 2.x.x to 3.x.x --- .gitignore | 1 + _config.yml | 1 + gemfile | 4 ++++ 3 files changed, 6 insertions(+) create mode 100644 gemfile diff --git a/.gitignore b/.gitignore index 781b662..6fd4aa7 100644 --- a/.gitignore +++ b/.gitignore @@ -89,4 +89,5 @@ local.properties # TeXlipse plugin .texlipse +Gemfile.lock diff --git a/_config.yml b/_config.yml index 3dd748f..f3c21e2 100644 --- a/_config.yml +++ b/_config.yml @@ -79,3 +79,4 @@ highlighter: rouge sass: sass_dir: _sass style: :compressed +gems: [jekyll-paginate] diff --git a/gemfile b/gemfile new file mode 100644 index 0000000..47386cc --- /dev/null +++ b/gemfile @@ -0,0 +1,4 @@ +source "https://rubygems.org" +gem 'rouge' +gem 'jekyll' +gem 'jekyll-paginate' \ No newline at end of file From 353b9963c3befab255a2dbeb93b6572b33e5b4d7 Mon Sep 17 00:00:00 2001 From: ramswaroop Date: Sat, 10 Dec 2016 23:16:24 +0000 Subject: [PATCH 85/97] fixed jekyll 3.x.x migration error --- _config.yml | 2 +- _includes/disqus.html | 2 +- _includes/footer.html | 4 +-- _includes/head.html | 16 ++++----- _includes/header.html | 10 +++--- _includes/icons.html | 80 +++++++++++++++++++++---------------------- _layouts/post.html | 6 ++-- index.html | 12 +++---- 8 files changed, 66 insertions(+), 66 deletions(-) diff --git a/_config.yml b/_config.yml index f3c21e2..b91b6b0 100644 --- a/_config.yml +++ b/_config.yml @@ -3,7 +3,7 @@ baseurl: "" # the subpath of your site, e.g. /blog/ url: "http://java.ramswaroop.me" # the base hostname & protocol for your site # THEME-SPECIFIC CONFIGURATION -theme: +theme_settings: # Meta title: Java Notes avatar: java-logo.png diff --git a/_includes/disqus.html b/_includes/disqus.html index 33a03eb..7af0cf5 100644 --- a/_includes/disqus.html +++ b/_includes/disqus.html @@ -1,6 +1,6 @@
-{% if site.theme.footer_text %} +{% if site.theme_settings.footer_text %}
-

{{ site.theme.footer_text }}

+

{{ site.theme_settings.footer_text }}

{% endif %} diff --git a/_includes/head.html b/_includes/head.html index 92bec9a..01ade4f 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,7 +1,7 @@ - {% if page.title %}{{ page.title }} |{% endif %} {{ site.theme.title }} - + {% if page.title %}{{ page.title }} |{% endif %} {{ site.theme_settings.title }} + @@ -15,31 +15,31 @@ - + - {% if site.theme.google_fonts %} - + {% if site.theme_settings.google_fonts %} + {% endif %} - {% if site.theme.katex %} + {% if site.theme_settings.katex %} {% endif %} - {% if site.theme.google_analytics %} + {% if site.theme_settings.google_analytics %} {% endif %} diff --git a/_includes/header.html b/_includes/header.html index f4632ec..5e4528c 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,16 +1,16 @@