Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #17359
| From | Daniel Pitts <newsgroup.nospam@virtualinfinity.net> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: why does this work? |
| References | <aa374d3f-d1d4-43e0-be0a-972b80316255@googlegroups.com> |
| Message-ID | <puxUr.3847$l63.2567@newsfe20.iad> (permalink) |
| Date | 2012-08-08 10:38 -0700 |
On 8/8/12 10:30 AM, dkoleary wrote:
> 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?
new XCopy() creates a new instance of the XCopy class, which executes
Constructors. main isn't executed again because of this. main is only
automatically executed by the JVM on start-up, once.
>
> 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.
int can fit any number in the range [-2^31, 2^31). 42 and 84 are both
within that range. It is possible that if you pass in a number with a
large enough magnitude, you will end up with an overflow. In Java (and
many 2s-compliment integer systems), overflow will simply throw-away the
upper bits, and you will have what is called "wrap-around". This
actually makes many of the basic operations easier, because signed
numbers and unsigned numbers behave the same way.
Hopefully this helps.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
why does this work? dkoleary <dkoleary@olearycomputers.com> - 2012-08-08 10:30 -0700
Re: why does this work? Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-08-08 10:38 -0700
Re: why does this work? dkoleary <dkoleary@olearycomputers.com> - 2012-08-08 11:39 -0700
Re: why does this work? Lew <lewbloch@gmail.com> - 2012-08-08 17:33 -0700
Re: why does this work? Eric Sosman <esosman@ieee-dot-org.invalid> - 2012-08-08 14:03 -0400
Re: why does this work? Roedy Green <see_website@mindprod.com.invalid> - 2012-08-09 02:41 -0700
Re: why does this work? glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-08-09 20:17 +0000
csiph-web