Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Локальные переменные в Java

#java #ооп #переменные #методы #типы_данных


Собственно говоря, суть моего вопроса можно свести к следующему: почему мы в обязательном
порядке должны присваивать начальное значение локальным переменным, чтобы у нас появилась
возможность их как бы то ни было использовать? Почему для локальных переменных отсутствуют
значения по умолчанию? С чем это может быть связано? 

И ещё один интересный момент, который напрямую связан с моделью памяти в языке программирования
Java. На каком этапе локальная переменная добавляется в стэк? На этапе объявления?
Или всё же на этапе присваивания начального значения? Ведь если мы изначально выделяем
какие-нибудь 4 байта для хранения значения типа int, то конкретное значение у нас уже
имеется (его будет составлять совокупность двоичных разрядов, которые мы уже зарезервировали
под переменную). В общем, хотелось бы разобраться во всех этих вопросах. Всем крайне
благодарен!
    


Ответы

Ответ 1



У компилятора просто нет возможности определить обращаешься ты к проинициализированой переменной в классе или нет, потому на всякий случай им даются стандартные значения. А вот для локальных переменных можно отследить, что она не была проинициализирована и кинуть ошибку. Изначально, объявив переменную это всего лишь указатель на участок памяти, и содержит она то, что было в этом участке памяти до этого, то есть мусор. Чтобы мусора там не было, переменной нужно присвоить значение. То есть, стандартное значение у переменных класса это скорее костыль, для избежания получения "мусора" из переменной. А для локальных можно кинуть ошибку на стадии компиляции

Комментариев нет:

Отправить комментарий