On 15 October 2010 08:13, Philipp Überbacher <hollunder(a)lavabit.com> wrote:
Excerpts from R. Mattes's message of 2010-10-14
22:35:56 +0200:
What does
the following example evaluate to?
1.2+3+"||"+3+2.1
$ cat > Foo.ava
class Foo
{
static { System.out.println( 1.2+3+"||"+3+2.1 ); System.exit( 0 ); }
}
^D
$ javac Foo.java
$ java Foo
C'm on, that's not really that hard, no Eclipse, no packages, no real object.
Is this using some implicit main() or something?
I think
there's far too much distracting mess to sort out before you
even get to programing, so I don't think it's a good teaching language
(for total beginners at least).
What's distracting here?
Regarding your example -my main question would be: what do _you_ expect from that
code. 'I'd say you get what you ask for.
I wouldn't expect 4.2||32.1 as a result. Either interpret the whole
thing as a string, or the number parts as float or don't do this kind of
automagic conversion at all. Interpreting numbers as numbers and
interpreting numbers as string in the same statement is something I
wouldn't expect.
Breaking your expectations is the exact point of statements like
1.2+3+"||"+3+2.1. You'll find similar statements for every language.
Knowing why they produce the unexpected is important for debugging
your code. Unless you're entering a code-obfuscation contest you
shouldn't write code like that.
James.