@MGNeo

Странное поведение с инициализацией массива в Java?

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

5be3d3a7568c8610323123.jpeg

Может быть, я чего-то не понимаю? Мне кажется, что такого быть не должно.
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 23:00
5000 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект