Ведь можно написать import java.util.*, зачем тогда писать import java.util.Scanner? Ведь полный импорт занимает меньше памяти и функциональнее.
Ответ Использование полных названий классов в импортах -- больше вопрос стиля, например в Google Code Style §3.3 указано: 3.3.1 No wildcard imports Wildcard imports, static or otherwise, are not used. Основная причина для такого запрета -- избежать случайного импорта ненужных классов, что может приводить к нежелательным конфликтам названий классов из разных пакетов. Наиболее яркий пример: при импорте java.util.* возникнет коллизия между java.util.Date и его реально используемым наследником java.sql.Date. Аналогичный вопрос на основном SO (2008 г.): Why is using a wild card with a Java import statement bad? Что касается утверждения: Ведь полный импорт занимает меньше памяти и функциональнее. Оператор импорта по сути является синтаксическим сахаром для сокращения полных имён классов, а не аналогом директивы препроцессора #include в С/С++. Импорт всего пакета или одного конкретного класса может повлиять на время компиляции, но не на время исполнения (производительность) программы, так как сгенерированный байткод не будет отличаться. Аналогичный вопрос на основном SO (2011 г.): Performance difference between a wild card import and the required class import