Что именно происходит, когда вы печатаете вывод в Java? - PullRequest
0 голосов
/ 08 декабря 2011

Может кто-нибудь объяснить, что именно происходит в следующей строке?

java.lang.System.out.print("string" + i);

Он выведет «строку», за которой сразу следует целое число i, но что здесь происходит?

Какое значение имеет каждая часть этой строки?

Ответы [ 5 ]

0 голосов
/ 09 декабря 2011

Это метод, который покажет ваше сообщение в командной строке, и есть другой способ показать ваше сообщение в окне, напишите:

JOptionPane.showMassageDialog(null,"your message");
0 голосов
/ 08 декабря 2011

Из Строка Javadoc :

Язык Java обеспечивает специальную поддержку оператора конкатенации строк (+) и преобразования других объектов в строки. Конкатенация строк реализуется с помощью класса StringBuilder (или StringBuffer) и его метода добавления. Строковые преобразования реализуются через метод toString, определяемый Object и наследуемый всеми классами в Java. Для получения дополнительной информации о конкатенации и преобразовании строк см. Гослинг, Джой и Стил, Спецификация языка Java.

Так "string" + i превращается в:

new StringBuilder("string").append(i).toString();

и затем передается на System.out.print()

0 голосов
/ 08 декабря 2011

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) или подобный метод, чтобы уменьшить количество промежуточных Строковые объекты, созданные путем вычисления выражения.

Для примитивных объектов реализация также может оптимизировать создание объекта-обертки путем непосредственного преобразования из примитивный тип в строку.

0 голосов
/ 08 декабря 2011

java.lang.System является квалифицированным именем класса System, который находится в пакете java.lang.Вы запрашиваете его метод print, который предполагает получение значения String в качестве аргумента.При вызове метод отправляет полученный объект в скобках (приведенный к String) на вывод по умолчанию (обычно это консоль).

0 голосов
/ 08 декабря 2011

"string" + i выполняет конкатенацию строк, создавая новую строку, например, с содержимым string123.

java.lang.System.out.print (обычно сокращенно до System.out.print), а затем записывает эту строку в "стандартный вывод »- обычно консоль, на которой запущена программа.

...