powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему переменная должна быть объявлена перед использованием?
24 сообщений из 24, страница 1 из 1
Почему переменная должна быть объявлена перед использованием?
    #39782442
argnis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782462
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что можно объявить переменную после использования? )
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782468
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTа что можно объявить переменную после использования? )некоторые яп допускают такое. для них компиляторы , как минимум, двухпроходные.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782475
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782486
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяandreykaTа что можно объявить переменную после использования? )некоторые яп допускают такое. для них компиляторы , как минимум, двухпроходные.
не ну ты ее можешь вообще не объявлять как вариант, просто подразумевая ее в контексте. но ты же понимаешь что по факту она контекстно объявлена.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782489
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадядвухпроходныеа если 1 стадия - написать сам скрипт, то трехпроходная.))
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782490
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisпоследовательность битов?не думай о битах.
Думай о Hello world!))))
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782494
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTне ну ты ее можешь вообще не объявлять как вариант, просто подразумевая ее в контексте. но ты же понимаешь что по факту она контекстно объявлена.кажется есть и такие яп....
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782496
argnis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nixic, спасибо, посмотрел. Вот только там просто написано, что переменную нужно объявлять в начале блока кода, но не написано почему.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782511
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?

Чтобы проще отлавливать опечатки
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782513
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisNixic, спасибо, посмотрел. Вот только там просто написано, что переменную нужно объявлять в начале блока кода, но не написано почему.
" it can confuse the unwary programmer and hamper code portability within the scope."
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782548
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты можешь в той же джаве например, объявить в классе все методы, а потом вконце поля класса (переменные да). и методы из класса будут работать с этими полями, хотя поля объявлены "визуально" после кода где они заюзаны.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782935
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisПочему переменная должна быть объявлена перед использованием
Причин несколько, но главная - нужно учиться правильно думать, а как раз для этого необходимо явно проговаривать много чего из того, что предполагается использовать.

Но можно писать вон как андрейка предлагает - всё куда-то в задницу, что бы никто не догадался (там порядок "задний" и смысл объявления не соответствует вопросу). Может так даже у кого-то получается...
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782945
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?

в java нет требования разделять инициализацию переменной и ее объявление. Как сказали уже ранее, скорее, наоборот, просто при обяъвлении переменную инициализировать.
Например:

Код: java
1.
int i = 1;



Но, бывают случае, связанные с "видимостью" переменных. Зачастую, вы можете встретить подобные конструкции:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Integer i;
try {
 //какая-то логика
} catch (Exception e) {
 log.error("err", e);
}

System.out.println(i);




Если переменную i обяъвить "внутри блока, то для остального кода она (переменная) будет не инициализированной, о чем вам компилятор и сообщит.

p.s. Подобные конструкции "небезопасны", о чем вам любая вменяемая среда разработки и сообщит словами "Переменная может быть не инициализирована".
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39782981
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*будет необъявленной
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783032
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?

чтобы компилятор заранее зарезервировал требуемое количество памяти для экземпляра типа на которую ссылается эта переменная
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783042
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingargnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?

чтобы компилятор заранее зарезервировал требуемое количество памяти для экземпляра типа на которую ссылается эта переменная

безотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее?
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783144
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее?
Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования.

Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783157
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555argnisПочему переменная должна быть объявлена перед использованием
Причин несколько, но главная - нужно учиться правильно думать, а как раз для этого необходимо явно проговаривать много чего из того, что предполагается использовать.

Но можно писать вон как андрейка предлагает - всё куда-то в задницу, что бы никто не догадался (там порядок "задний" и смысл объявления не соответствует вопросу). Может так даже у кого-то получается...
ты книжку клинкод читал? там ясно написано что где и как рекомендуется объявлять. что поля, что методы.
не всё должно быть попендикулярно, как некоторые думают.

впрочем, это лишь предложения и рекомендации. ты можешь строго все объявлять сверху а юзать где нибудь вообще нигде.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783204
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevОзверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее?
Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования.

Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции.

IMHO & AFAIK

в java один компилятор(javac) таки превращает java файл в class, а второй(часть JVM - тот самый JIT компилятор) - компилирует часто используемые в рантайме куски кода в близкий к машинному или какому там коду.
Где в этом функционале может появиться вообще выделение памяти под экземпляры класса?
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783211
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevОзверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее?
Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования.

Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции.

IMHO & AFAIK

а что касается объявления переменной и выделения памяти, конечно же это несвязные вещи.
Да, в частном случае, при объявлении переменной примитивных типов это таки происходит, но, скорее, потому, что примитивы автоматически инициализируются значением по умолчанию(впрочем, так же в зависимости от скопа, в методе - нет, в классе как филд - да).

А уж для объектов память при объявлении выделяется только для хранения ссылки, т.е. - мизерная(читай, не помню сколько).
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783226
Фотография Пылинка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevОзверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее?
Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования.

Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции.

IMHO & AFAIK
Точнее, стек нити состоит из кадров (frame). А вот уже внутри кадра есть (среди прочего) массив локальных переменных (там хранятся примитивы или ссылки на объектные типы, точнее на дескриптор объекта. А вот в дескрипторе уже содержатся 2 указателя: на тип Class; и указатель на область в куче, выделенную для его локальных переменных), длина его определяется уже при компиляции, а ссылки на переменные являются индексами в этом массиве.

И для argnis - вот чтобы "использовать" ссылки на эти переменные (индексы в массиве локальных переменных ) при компиляции эти ссылки УЖЕ должны существовать на момент прохода компилятора "по использованию" переменной.
Остальные детали можете почитать "где то тут" - https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7 - сами, "своими руками"
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783313
Alex_SQLru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Главное объявляем тип данных переменной, числовой или символьный. Для арифметических операций нужны числовые, при этом объявляется диапазон допустимых значений, для более простых или точных вычислений.
...
Рейтинг: 0 / 0
Почему переменная должна быть объявлена перед использованием?
    #39783516
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием.

Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал
как интерпретировать последовательность битов?

вы должны знать, как работает компилятор языков

когда объявляется переменная, в памяти, куда загружена программа, на месте объявления переменной появляется участок памяти, который будет хранить значение переменной

если переменная не будет объявлена - то где хранить ее значение ?
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему переменная должна быть объявлена перед использованием?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]