Puzzling Java statement of the day

Some days ago I stumbled across a Java statement which I thought was trivial at first, only to discover that I had no idea. I have a reasonable understanding of what a JVM does and how Java bytecode is executed. But as this example shows once again, that doesn’t necessarily spread to the Java programming language. The snippet below should explain my point.

int lorem = 1, ipsum = 2, dolor = 3;
if (lorem == (lorem = ipsum))
	f();
if ((ipsum = dolor) == ipsum)
	g();

Which of the above two methods f() and g() is actually invoked? Can you tell without compiling the code? Possible answers are:

  • None of the two methods get invoked, both call-sites are dead code.
  • Just f() is invoked and the call-site of g() is dead code.
  • Just g() is invoked and the call-site of f() is dead code.
  • Both methods are invoked, the conditions are pointless.

Ironically, I finally understood what was going on after looking at the generated bytecode (good old javap is your friend). I am not posting the disassembled code because that would spoil the fun. But once you look at it, the answer appears to be quite obvious.

Pingback

[...] Puzzling Java statement of the day | antforge.org antforge.org/blog/2010/07/30/puzzling-java-statement – view page – cached Some days ago I stumbled across a Java statement which I thought was trivial at first, only to discover that I had no idea. I have a reasonable understanding of what a JVM does and how Java bytecode is executed. But as this example shows once again, that doesn’t necessarily spread to the Java programming language. The snippet below should explain my point. Tweets about this link [...]

So I just behave for you

So I just behave for you https://privateinvestigatoromaha.com

The statement are so

The statement are so satisfying. I love your post. This is so impressive. What more impressive are what is in my website. Do a visit here

https://lakemacquariedecking.com.au/

Awesome.. This is incredible

Awesome.. This is incredible post. What a great work of yours. I admire your content. This will be shared to others. https://buildinginspectorsnewcastle.com.au/building-inspectors-lake-macq...

Love this update!

Love this update!

Agreed! I find this quite

Agreed! I find this quite awesome. and has shared with my friends as well.

Very interesting blog. A lot

Very interesting blog. A lot of blogs I see these days don't really provide anything that I'm interested in, but I'm most definitely interested in this one. Just thought that I would post and let you know.

thank you for so much for the

thank you for so much for the content https://www.roofingspecialistscheltenham.co.uk