System.out - это объект PrintStream. Я прочитал документацию на PrintStream. Чего я не понимаю, так это почему System.out.print заставляет буфер промывать? Разве это не должно происходить только для println?
Подробнее здесь: https://stackoverflow.com/questions/129 ... -autoflush