Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Tim Cooke
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Knute Snortum
  • paul wheaton
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Ron McLeod
  • Piet Souris
  • Ganesh Patekar
Bartenders:
  • Tim Holloway
  • Carey Brown
  • salvin francis

doubt in mock exam java belt

 
Greenhorn
Posts: 17
  • Mark post as helpful
  • send pies
  • Report post to moderator
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"
 
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
  • Report post to moderator
Please don't post duplicates. Continue this discussion here.
 
Ranch Hand
Posts: 169
  • Mark post as helpful
  • send pies
  • Report post to moderator
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..
 
marc weber
Sheriff
Posts: 11343
Mac Safari Java
  • Mark post as helpful
  • send pies
  • Report post to moderator
Again, this is a duplicate post. Please continue this discussion under the other thread.
 
a fool thinks himself to be wise, but a wise man knows himself to be a fool - shakespeare. foolish tiny ad:
create, convert, edit or print DOC and DOCX in Java
https://products.aspose.com/words/java
    Bookmark Topic Watch Topic
  • New Topic
Boost this thread!