16

I am looking at somebody else's code and I found this piece of code:

for (;;) {

I'm not a Java expert; what is this line of code doing?

At first, I thought it would be creating an infinite loop, but in the very SAME class this programmer uses

while(true)

Which (correct me if I'm wrong) IS an infinite loop. Are these two identical? Why would somebody change their method to repeat the same process?

Any insight would help,

Thanks!

Doug Molineux
  • 12,283
  • 25
  • 92
  • 144

3 Answers3

19

Remember the three clauses of the for() are [1] initialization [2] termination and [3] increment. Since the termination clause is empty the loop never terminates. This is directly taken from C syntax.

wberry
  • 18,519
  • 8
  • 53
  • 85
9

Those two lines would have the same effect. I can't think of a good reason to use the first one unless you like to confuse people. I guess it's less characters.

Dave
  • 5,133
  • 21
  • 27
  • Then oracle docs like to confuse people ;-) https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/ExecutorService.html – Lukas Hanacek Feb 15 '23 at 07:39
9

they are entirely the same the only real difference would be either preference (the for construct can be typed marginally faster)

or the for indicates that is is some iteration that is broken out of by a break or return and a while loop indicates a repeating section of the same thing until a meaningful result appears

ratchet freak
  • 47,288
  • 5
  • 68
  • 106