This week's book giveaway is in the Agile and other Processes forum. We're giving away four copies of The Mikado Method and have Ola Ellnestam and Daniel Brolund on-line! See this thread for details.
program from mock exam java belt explain program in full detail
01: class MyClass { 02: static int maxElements; 03: 04: MyClass(int maxElements) { 05: this.maxElements = maxElements; 06: } 07: } 08: 09: public class Q19 { 10: public static void main(String[] args) { 11: MyClass a = new MyClass(100); 12: MyClass b = new MyClass(100); 13: 14: if (a.equals(b)) 15: System.out.println("Objects have the same values"); 16: else 17: System.out.println("Objects have different values"); 18: } 19: }
i thought the output will be Prints "Objects have the same values" but the output is "Objects have different values"
Please don't post duplicates. Continue this discussion here.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org
Priyam Srivastava
Ranch Hand
Joined: Oct 29, 2006
Posts: 169
posted
0
the O/P for this would be "Objects have different values" because class MyClass doesn't override the equals() method. Hence when you called a.equlas(b) the equals method of Object class get called.Object class's equlas() method returns true if both the reference varialble refers to the same object i.e public boolean equals(Object o) { . . // Partial implementation of equals method in Object class.. . if(this==o) return true; else return false; }
MyClass a = new MyClass(100); MyClass b = new MyClass(100); here both a & b refers to two different objects on the heap..hence a.equlas(b) returns false...
change your code to:: MyClass a = new MyClass(100); MyClass b = a; System.out.println(a.equals(b)); it will now return true since both a & b refers to the same objetc on heap!!
Read Chapter 6 in K&B for more help..
"History would be kind to me, for I intend to write it."