|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Здравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 12:38 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
а что можно объявить переменную после использования? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:00 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
andreykaTа что можно объявить переменную после использования? )некоторые яп допускают такое. для них компиляторы , как минимум, двухпроходные. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:16 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
погуглил: https://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141270.html пункт 6.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:31 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
вадяandreykaTа что можно объявить переменную после использования? )некоторые яп допускают такое. для них компиляторы , как минимум, двухпроходные. не ну ты ее можешь вообще не объявлять как вариант, просто подразумевая ее в контексте. но ты же понимаешь что по факту она контекстно объявлена. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:45 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
вадядвухпроходныеа если 1 стадия - написать сам скрипт, то трехпроходная.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:52 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisпоследовательность битов?не думай о битах. Думай о Hello world!)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:54 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
andreykaTне ну ты ее можешь вообще не объявлять как вариант, просто подразумевая ее в контексте. но ты же понимаешь что по факту она контекстно объявлена.кажется есть и такие яп.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:57 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Nixic, спасибо, посмотрел. Вот только там просто написано, что переменную нужно объявлять в начале блока кода, но не написано почему. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 13:59 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? Чтобы проще отлавливать опечатки ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 14:25 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisNixic, спасибо, посмотрел. Вот только там просто написано, что переменную нужно объявлять в начале блока кода, но не написано почему. " it can confuse the unwary programmer and hamper code portability within the scope." ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 14:26 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
ты можешь в той же джаве например, объявить в классе все методы, а потом вконце поля класса (переменные да). и методы из класса будут работать с этими полями, хотя поля объявлены "визуально" после кода где они заюзаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2019, 15:23 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisПочему переменная должна быть объявлена перед использованием Причин несколько, но главная - нужно учиться правильно думать, а как раз для этого необходимо явно проговаривать много чего из того, что предполагается использовать. Но можно писать вон как андрейка предлагает - всё куда-то в задницу, что бы никто не догадался (там порядок "задний" и смысл объявления не соответствует вопросу). Может так даже у кого-то получается... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 13:11 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? в java нет требования разделять инициализацию переменной и ее объявление. Как сказали уже ранее, скорее, наоборот, просто при обяъвлении переменную инициализировать. Например: Код: java 1.
Но, бывают случае, связанные с "видимостью" переменных. Зачастую, вы можете встретить подобные конструкции: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Если переменную i обяъвить "внутри блока, то для остального кода она (переменная) будет не инициализированной, о чем вам компилятор и сообщит. p.s. Подобные конструкции "небезопасны", о чем вам любая вменяемая среда разработки и сообщит словами "Переменная может быть не инициализирована". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 13:25 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
*будет необъявленной ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 13:57 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? чтобы компилятор заранее зарезервировал требуемое количество памяти для экземпляра типа на которую ссылается эта переменная ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 15:32 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
llemingargnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? чтобы компилятор заранее зарезервировал требуемое количество памяти для экземпляра типа на которую ссылается эта переменная безотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 15:46 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Озверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее? Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования. Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 17:30 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
alex55555argnisПочему переменная должна быть объявлена перед использованием Причин несколько, но главная - нужно учиться правильно думать, а как раз для этого необходимо явно проговаривать много чего из того, что предполагается использовать. Но можно писать вон как андрейка предлагает - всё куда-то в задницу, что бы никто не догадался (там порядок "задний" и смысл объявления не соответствует вопросу). Может так даже у кого-то получается... ты книжку клинкод читал? там ясно написано что где и как рекомендуется объявлять. что поля, что методы. не всё должно быть попендикулярно, как некоторые думают. впрочем, это лишь предложения и рекомендации. ты можешь строго все объявлять сверху а юзать где нибудь вообще нигде. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 17:49 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevОзверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее? Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования. Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции. IMHO & AFAIK в java один компилятор(javac) таки превращает java файл в class, а второй(часть JVM - тот самый JIT компилятор) - компилирует часто используемые в рантайме куски кода в близкий к машинному или какому там коду. Где в этом функционале может появиться вообще выделение памяти под экземпляры класса? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 19:49 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevОзверинбезотносительно "правильности" ответа, какое отношение компилятор вообще имеет к экземплярам, резервированию памяти и так далее? Если атомарные типы выделяемые в стеке (не совсем в стеке, в JVM вроде отдельные кадры/таблицы локальных переменных) - то самое прямое. Ровно так же, как и в других языках программирования. Да и выделение памяти в куче, точно так же. Байт-код new (0xbb) требует указания типа, т.е. он должен быть известен в процессе/после компиляции. IMHO & AFAIK а что касается объявления переменной и выделения памяти, конечно же это несвязные вещи. Да, в частном случае, при объявлении переменной примитивных типов это таки происходит, но, скорее, потому, что примитивы автоматически инициализируются значением по умолчанию(впрочем, так же в зависимости от скопа, в методе - нет, в классе как филд - да). А уж для объектов память при объявлении выделяется только для хранения ссылки, т.е. - мизерная(читай, не помню сколько). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 19:57 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
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 - сами, "своими руками" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2019, 20:34 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
Главное объявляем тип данных переменной, числовой или символьный. Для арифметических операций нужны числовые, при этом объявляется диапазон допустимых значений, для более простых или точных вычислений. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 06:49 |
|
Почему переменная должна быть объявлена перед использованием?
|
|||
---|---|---|---|
#18+
argnisЗдравствуйте, простите за вопрос новичка, только начал разбираться с программарованием. Почему переменная должна быть объявлена перед использованием: чтобы избежать двусмысленности или чтобы компилятор знал как интерпретировать последовательность битов? вы должны знать, как работает компилятор языков когда объявляется переменная, в памяти, куда загружена программа, на месте объявления переменной появляется участок памяти, который будет хранить значение переменной если переменная не будет объявлена - то где хранить ее значение ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2019, 13:02 |
|
|
start [/forum/topic.php?fid=59&msg=39782935&tid=2121448]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 481ms |
0 / 0 |