If you don't have a label, and "continue" or "break" statement effects the INNER most loop you are in.
it looks like in THIS example, the end output would be the same if you didn't use a label. however, it will take longer (not so much longer that you would notice).
when we get to i==4 and j==4, we print out 4. as the code is written, we then continue the OUTER loop. we increment i to 5, reset j to 5, and proceed. we print 5, continue the outer loop, which then fails it's
test, so it exits.
if you take out the label, we get to the print 4. you continue, but without the label, you continue on the inner loop. so j becomes 3, we test and fail on i==j. we now increment i to 5. again, after we print the 5, we would continue on the inner loop, testing 5==4 and then 5==3... etc.
now, you would probably not notice this slowdown in performance for such small ranges, but if i was going from 1 to 1,000,000,000 and j from 100,000 to 1, you probably would see the slowdown.