java.lang
- это пакет, который не требуется с правильным оператором import
. System
- это класс в пакете java.lang
. out
является статическим открытым полем (не требует связанного экземпляра, как глобальная переменная) в классе System
, который имеет тип PrintStream
.
PrintStream добавляет функциональность в другой поток вывода, а именно
возможность печатать представления различных значений данных удобно.
Две другие функции предоставляются также. В отличие от других выходных потоков,
PrintStream никогда не генерирует IOException; вместо этого, исключительный
ситуации просто установить внутренний флаг, который можно проверить с помощью
метод checkError. По желанию, PrintStream может быть создан так, чтобы
промывать автоматически; это означает, что метод сброса автоматически
вызывается после записи байтового массива, один из методов println
или символ новой строки или байт ('\ n') записаны.
Этот PrintStream
подключен за сценой к OutputStream
, который может быть подключен либо к выходу IDE, либо к выходу консоли (через собственный интерфейс Java).
Аргументы метода print
"string" + i
объединяются с помощью оператора +
в большую строку, которая может быть напрямую передана в метод печати. i
является примитивным типом int
, поэтому временно преобразуется в памяти в String
во время конкатенации. Что касается оптимизации конкатенации строк:
Реализация может выбрать выполнение преобразования и объединения за один шаг, чтобы избежать создания, а затем отбрасывания
промежуточный строковый объект. Для увеличения производительности повторяется
конкатенация строк, компилятор Java может использовать класс StringBuffer
(§20.13) или подобный метод, чтобы уменьшить количество промежуточных
Строковые объекты, созданные путем вычисления выражения.
Для примитивных объектов реализация также может оптимизировать создание объекта-обертки путем непосредственного преобразования из
примитивный тип в строку.