aspose file tools
The moose likes Beginning Java and the fly likes another perplexing program Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Reply Bookmark "another perplexing program" Watch "another perplexing program" New topic
Author

another perplexing program

Jim A Anderson
Greenhorn

Joined: Mar 16, 2004
Posts: 5
The following code prints:
0
Why???
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);
}
}


jim
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. <br />- What truth? <br />- That there is no spoon!!!
Jim A Anderson
Greenhorn

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
Bartender

Joined: Oct 02, 2003
Posts: 9939
    
    6

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.


Never ascribe to malice that which can be adequately explained by stupidity.
 
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to run our stuff on 16 servers instead of 3.
 
subject: another perplexing program
 
Similar Threads
default constructor
forward refrerences
please explain why the compiler is not complaining and why the output is 0
Forward Referencing
Variable initialization