#java #ооп #переменные #методы #типы_данных
Собственно говоря, суть моего вопроса можно свести к следующему: почему мы в обязательном порядке должны присваивать начальное значение локальным переменным, чтобы у нас появилась возможность их как бы то ни было использовать? Почему для локальных переменных отсутствуют значения по умолчанию? С чем это может быть связано? И ещё один интересный момент, который напрямую связан с моделью памяти в языке программирования Java. На каком этапе локальная переменная добавляется в стэк? На этапе объявления? Или всё же на этапе присваивания начального значения? Ведь если мы изначально выделяем какие-нибудь 4 байта для хранения значения типа int, то конкретное значение у нас уже имеется (его будет составлять совокупность двоичных разрядов, которые мы уже зарезервировали под переменную). В общем, хотелось бы разобраться во всех этих вопросах. Всем крайне благодарен!
Ответы
Ответ 1
У компилятора просто нет возможности определить обращаешься ты к проинициализированой переменной в классе или нет, потому на всякий случай им даются стандартные значения. А вот для локальных переменных можно отследить, что она не была проинициализирована и кинуть ошибку. Изначально, объявив переменную это всего лишь указатель на участок памяти, и содержит она то, что было в этом участке памяти до этого, то есть мусор. Чтобы мусора там не было, переменной нужно присвоить значение. То есть, стандартное значение у переменных класса это скорее костыль, для избежания получения "мусора" из переменной. А для локальных можно кинуть ошибку на стадии компиляции
Комментариев нет:
Отправить комментарий