Не понимаю как работает объект в некоторых моментах. К примеру :
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
объясните пожалуйста, как мы создали объект InputStreamReader не указав его тип и ссылку на этот объект. Как я понимаю, если нет ссылки на объект то его очистит сборщик мусора. Также в одной из задач я увидел вот это :
public static void method1() {
       method2();
   }

   public static void method2() {
       new Solution().method3();
   }

   public void method3() {
       method4();
   }
Здесь мы вызвали нестатический метод из статического через объект в котором не указан тип и ссылка на него, объясните как это работает.