Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #17429
| From | "Daniel Pitts" <daniel.pitts@1:261/38.remove-qhs-this> |
|---|---|
| Subject | Re: why does this work? |
| Message-ID | <5022AB86.56379.calajapr@time.synchro.net> (permalink) |
| Newsgroups | comp.lang.java.programmer |
| References | <5022AB86.56377.calajapr@time.synchro.net> |
| Date | 2012-08-08 19:04 +0000 |
| Organization | tds.net |
To: dkoleary
From: Daniel Pitts <newsgroup.nospam@virtualinfinity.net>
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.
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
why does this work? "dkoleary" <dkoleary@1:261/38.remove-qhs-this> - 2012-08-08 19:04 +0000
Re: why does this work? "Daniel Pitts" <daniel.pitts@1:261/38.remove-qhs-this> - 2012-08-08 19:04 +0000
Re: why does this work? "dkoleary" <dkoleary@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
Re: why does this work? "Lew" <lew@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
Re: why does this work? "Eric Sosman" <eric.sosman@1:261/38.remove-r72-this> - 2012-08-08 20:06 +0000
Re: why does this work? "Roedy Green" <roedy.green@1:261/38.remove-k2r-this> - 2012-08-09 18:44 +0000
Re: why does this work? "glen herrmannsfeldt" <glen.herrmannsfeldt@1:261/38.remove-t9h-this> - 2012-08-10 18:39 +0000
csiph-web