File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes another perplexing program Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "another perplexing program" Watch "another perplexing program" New topic

another perplexing program

Jim A Anderson

Joined: Mar 16, 2004
Posts: 5
The following code prints:
public class AQuestion
private int i = giveMeJ();
private int j = 10;
private int giveMeJ()
return j;
public static void main(String args[])
System.out.println((new AQuestion()).i);

Vicken Karaoghlanian
Ranch Hand

Joined: Jul 21, 2003
Posts: 522
This link will prove to be helpful.

- Do not try and bend the spoon. That's impossible. Instead, only try to realize the truth. - What truth? - That there is no spoon!!!
Jim A Anderson

Joined: Mar 16, 2004
Posts: 5
Actually, the program shown in the link is just different enough from the program under consideration that the explanation given in the link doesn't seem to suffice for the present case.
The only explanation I can come up with is that when
private int i = giveMeJ();
is invoked, j has been given a default value of 0 and the j = 10 hasn't occurred yet.
fred rosenberger
lowercase baba

Joined: Oct 02, 2003
Posts: 11955

if you change it to this

you can see that j is indeed 0 in the giveMeJ() method, but does get set to 10 in the object iteself.

There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
I agree. Here's the link:
subject: another perplexing program
It's not a secret anymore!