Добрый день! Просьба подсказать по вопросу расхождения решений моего и предоставленного в "Правильном решении". У меня Основной класс Solution : public class Solution { public static void main(String[] args) { } public static Planet thePlanet; static { readKeyFromConsoleAndInitPlanet(); } public static void readKeyFromConsoleAndInitPlanet() { try(BufferedReader input = new BufferedReader( new InputStreamReader(System.in))) { String key = input.readLine(); if( key.equals(Planet.EARTH) ){ thePlanet = Earth.getInstance(); } else if ( key.equals(Planet.SUN) ){ thePlanet = Sun.getInstance(); } else if( key.equals(Moon.MOON) ){ thePlanet = Moon.getInstance(); } else { thePlanet = null; } } catch (IOException e){ e.getMessage(); } } } Из правильного решения: public class Solution { public static void main(String[] args) { } public static Planet thePlanet; static { try { readKeyFromConsoleAndInitPlanet(); } catch (IOException e) { e.printStackTrace(); } } public static void readKeyFromConsoleAndInitPlanet() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String consoleInput = reader.readLine(); switch (consoleInput) { case Planet.EARTH: thePlanet = Earth.getInstance(); break; case Planet.MOON: thePlanet = Moon.getInstance(); break; case Planet.SUN: thePlanet = Sun.getInstance(); break; default: thePlanet = null; break; } } } Подставил временные переменные в статический блок , которая указывает на старт и в Main указывающую на окончание программы. В моем решении получилось: 5372 В правильном : 2579 Подскажите, пожалуйста, в чем заключается такой временной выигрыш в "правильном решении" ? Большое спасибо!