Вывод следующей программы различается в зависимости от того, собираю ли я IntelliJ или собираю вручную из командной строки. Насколько я могу судить, на моей машине только один компилятор и JVM.
public class OutputTest {
public static void main(String[] args) throws Throwable {
System.out.println(" Java Version: " +
System.getProperty("java.version") +
" from " + System.getProperty("java.vendor"));
String message = "Dźien Dobry. Jak się masz?";
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Charset charset = Charset.forName("UTF-8");
PrintWriter pw = new PrintWriter(new java.io.BufferedWriter(
new java.io.OutputStreamWriter(stream, charset)), true);
pw.write(message);
pw.close();
System.out.println(stream.toString());
System.out.println(java.util.Arrays.toString(stream.toByteArray()));
}
}
Вывод при компиляции в IntelliJ:
Java Version: 1.6.0_26 from Apple Inc.
Dźien Dobry. Jak się masz?
[68, -59, -70, 105, 101, 110, 32, 68, 111, 98, 114, 121, 46, 32, 74, 97, 107, 32, 115, 105, -60, -103, 32, 109, 97, 115, 122, 63]
Вывод при компиляции из командной строки:
Java Version: 1.6.0_26 from Apple Inc.
D≈∫ien Dobry. Jak siƒô masz?
[68, -30, -119, -120, -30, -120, -85, 105, 101, 110, 32, 68, 111, 98, 114, 121, 46, 32, 74, 97, 107, 32, 115, 105, -58, -110, -61, -76, 32, 109, 97, 115, 122, 63]
Для ясности: вывод зависит от того, где код скомпилирован. Я также вижу первый ответ, если у меня IntelliJ скомпилировал код, но запустил его из командной строки.
Я использую MacOS 10.6.8.
Кроме того, для чего это стоит: Когда я компилирую его из командной строки в Linux, я получаю тот же ответ, что и версия, скомпилированная с IntelliJ.