D
dkoleary
Hi;
New java programmer. So new, in fact, that I'm still working my way through the O'Reilly Head First Java book. One of the end of chapter questions involves identifying if a sample class will compile and what to do to make it compile if it won't.
The sample class from chapter 4 is:
class XCopy
{ public static void main(String[] args)
{ int orig = 42;
XCopy x = new XCopy();
int y = x.go(orig);
System.out.println(orig + " " + y);
}
int go(int arg)
{ return arg * 2; }
}
The book says that it'll compile and run, displaying "42 84" and, sure enough, it does:
$ javac XCopy.java
$ java XCopy
42 84
How come that isn't recursive? XCopy.main() instantiates a new XCopy. Shouldn't that new XCopy instance also instantiate a new XCopy?
I was figuring this would run until the XCopy.go function tried returning a number that wouldn't fit in int anymore... That's obviously not the case, but I don't know why.
Can someone provide the missing concept?
Thanks.
Doug O'Leary
New java programmer. So new, in fact, that I'm still working my way through the O'Reilly Head First Java book. One of the end of chapter questions involves identifying if a sample class will compile and what to do to make it compile if it won't.
The sample class from chapter 4 is:
class XCopy
{ public static void main(String[] args)
{ int orig = 42;
XCopy x = new XCopy();
int y = x.go(orig);
System.out.println(orig + " " + y);
}
int go(int arg)
{ return arg * 2; }
}
The book says that it'll compile and run, displaying "42 84" and, sure enough, it does:
$ javac XCopy.java
$ java XCopy
42 84
How come that isn't recursive? XCopy.main() instantiates a new XCopy. Shouldn't that new XCopy instance also instantiate a new XCopy?
I was figuring this would run until the XCopy.go function tried returning a number that wouldn't fit in int anymore... That's obviously not the case, but I don't know why.
Can someone provide the missing concept?
Thanks.
Doug O'Leary