Я столкнулся с очень странным поведением в
Java.
По спецификации
Java при создании массива его элементы должны инициализироваться значениями по умолчанию. Для элементов типа
byte значением по умолчанию является
0.
Рассмотрим код, на котором мне удалось воспроизвести странное поведение:
package javatest;
import java.io.*;
public class JavaTest
{
public static void main(String[] args) throws IOException
{
byte[] buf = new byte[5];
System.in.read(buf);
for (int i = 0; i < buf.length; ++i)
{
System.out.println((char)buf[i]);
}
}
}
Странное поведение начинается при следующей последовательности действий:
1) Вводим
1, тыкаем
Enter, программа корректно выводит
1 и завершается;
2) Вновь запускаем программу (я запускаю из
IDE NetBeans), вводим
12345, тыкаем
Enter, программа корректно выводит
12345 и завершается;
3) Вновь запускаем программу, вводим
123456, тыкаем
Enter, программа выводит мусор и завершается;
4) Следующие несколько запусков программы с вводом любых данных приводят к тому, что выводится мусор - в одних случаях выводится не все, в других - то, чего не вводили.
Может быть, я чего-то не понимаю? Мне кажется, что такого быть не должно.