Win a copy of Microservices Testing (Live Project) this week in the Spring forum!
  • Post Reply 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 Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Tim Cooke
  • Ron McLeod
  • Jeanne Boyarsky
  • Paul Clapham
  • Liutauras Vilda
  • Henry Wong
  • Devaka Cooray
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • Al Hobbs
  • Carey Brown
  • Piet Souris
  • Mikalai Zaikin
  • Himai Minh

Help with assigning references

Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

I have trouble understanding the answer to question 3.3 from Programmer's Guide to Java Certification, A Comprehensive Primer, Second Edition. Here's the question:

What will be the result of attempting to compile and run the following program?

Select the one correct answer.

a. The program will fail to compile.
b. The program will print mouse when run.
c. The program will print cat when run.
d. The program will print dog when run.
e. The program will randomly print either cat or dog when run.

The answer is c. The book provides the following explanation:

Strings are objects. The variables a, b, and c are references that can denote such objects. Assigning to a reference only changes the reference value. It does not create a copy of the source object or change the object denoted by the old reference value in the destination reference. In other words, assignment to references only affects which object the destination reference denotes. The reference value of the "cat" object is first assigned to variable a, then to variable b, and later to variable c. The program prints the string denoted by the variable c, which is "cat".

My interpretation of the explanation is that references are passed, not values. I interpreted the code as follows:


I was about to submit the post when I thought of a possible explanation. I now think in terms of object references rather than the values of the strings:

"mouse" = Object1
"cat" = Object2
"dog" = Object3

The equals sign on the comments now denotes a reference to.

Since Object2 = "cat" that explains the answer.

Does this make sense?


P.S.: I was trying to modify and run the source code and print out the Object reference (or whatever it's called, i.e.: java.lang.Object@cac268). But I have tried


but it doesn't work. I am looking at java.lang.ref.Reference. Am I on the right track? Thanks
Ranch Hand
Posts: 163
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Greetings from Hogwarts,

Bro, your explanation with object1,2,3 is correct.But you should remember that

b=new String("xyz");

these two will create entirely different objects. if a is object1, b is not object1 but it is a new object, object2.
[ July 19, 2004: Message edited by: Brian Percival ]
Enrique Madrid
Posts: 7
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Thanks a lot. Once I went through that whole reasoning, it became clear. However, it can be very tricky to understand the first time.
Consider Paul's rocket mass heater.
    Bookmark Topic Watch Topic
  • New Topic