С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
154 / 140 / 26
Регистрация: 12.12.2020
Сообщений: 1,146

Что означает ключевое слово final при объявлении переменной

19.02.2025, 16:17. Показов 3242. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если я объявляю переменную как final то это говорит о том что она назначается один раз и не меняется в дальнейшем, то есть компилятор не даст скомпилировать код в котором она "переназначается". Так? Больше никакого смысла нет? Нет такого что компилятор как то более оптимально ее использует?
Просто та жа AndroidStudio и так "предупреждает" что вы переназначаете значение переменной если она не объявленна как final. Какой сокровенный смысл в этом final? Только предупредить программиста о том что ее нельзя менять?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.02.2025, 16:17
Ответы с готовыми решениями:

Что означает ключевое слово as?
подскажите, кто сможет, что означает ключевое слово as?

Что означает ключевое слово const?
Что означает ключевое слово const?

Что означает ключевое слово return?
Ответ:

28
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3812 / 1650 / 428
Регистрация: 14.03.2022
Сообщений: 4,117
19.02.2025, 16:34
Цитата Сообщение от Alex1126 Посмотреть сообщение
Какой сокровенный смысл в этом final? Только предупредить программиста о том что ее нельзя менять?
Не предупредить, а не дать. Так это довольно серьезный смысл.

Цитата Сообщение от Alex1126 Посмотреть сообщение
та жа AndroidStudio и так "предупреждает" что вы переназначаете значение переменной
Так на неких редакторах свет клином не сошелся... Ведь все итоговое делает компилятор. Именно ему указывают что в программе делается.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
19.02.2025, 21:38
Цитата Сообщение от Alex1126 Посмотреть сообщение
Какой сокровенный смысл в этом final?
например, допустим у тебя есть переменная, которую изменить нельзя. Без final ты можешь случайно изменить её значение. Ты не получишь никакой ошибки, но программа будет работать неверно. А вот если ты сделал бы с final, то при попытке изменить значение переменной, ты получил бы ошибку.
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
19.02.2025, 21:55
Royal_X, Не только, тут в этом свои особенности. Например если под final объект или массив, тогда нельзя заменить объект или размер массива (то есть перевыделить новый на эту же ссылку), но можно изменить состояние объекта или элементы массива
Еще final могут быть методы и классы, тогда нельзя переопределять или наследоваться.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
19.02.2025, 21:56
Цитата Сообщение от alecss131 Посмотреть сообщение
Не только
ахаха, ты значение слова "например" понимаешь?

Цитата Сообщение от Royal_X Посмотреть сообщение
например, допустим у тебя есть переменная ...
0
154 / 140 / 26
Регистрация: 12.12.2020
Сообщений: 1,146
22.02.2025, 20:53  [ТС]
Спасибо большое всем за ответы. Просто когда ты объявил переменную в коде и не меняешь ее то тажа, ранее упомянутая, андройд студия предлагает сделать переменную final. Я думал что в этом может быть еще какой смысл, типа размещение переменной в какой-нить другой области памяти или еще какие плюсы даст. Но я так понял что это только запрет на нее изменение.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
22.02.2025, 21:11
Цитата Сообщение от Alex1126 Посмотреть сообщение
андройд студия предлагает сделать переменную final
Это фича InteliJ IDEA. Когда спрашивают, "пачуму" продукты от JetBrains столько жрут ОЗУ и загружает проц, то вот и ответ. Именно на такие вещи и идут системные ресурсы. Но многим именно такие советы и нравятся в средах от JetBrains.
Но, в конце концов, программист это ты и тебе решать, что нужно делать. Тупо следовать всем советам ide я не рекомендую. Допустим, ты пишешь код и тебе ide предлагает сделать final. Но а вдруг ты позже собираешься менять эту переменную, но пока ты не написал эту часть кода. Если поменяешь на final, то потом все равно придется убирать final. Поэтому смотри на эти советы, когда код полностью написан, т.е. в самом конце.
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
22.02.2025, 21:19
Цитата Сообщение от Royal_X Посмотреть сообщение
Когда спрашивают, "пачуму" продукты от JetBrains столько жрут ОЗУ и загружает проц, то вот и ответ
При этом VS Code жрет ничуть не меньше, у меня даже больше чем JB, а дело в том что JB написан на котлине, а эта поделка на JS, ну не может по определению нормальная ide быть написана на языке для сайтов.
А вообще в Java есть понятие efficiently final, это когда при добавлении final код не ломается. И вообще не только в джаве это считается хорошим тоном (все что не меняется надо делать константой), хотя в джаве это не так принято, в локальных переменных (у методов) скорее даже не принято так делать. И идея так не советует, это похоже особенность андроид студии. Еще например в UE делать все const тоже хорошая практика кода или в языке Swift даже компилятор будет подсказывать (в виде предупреждений что надо бы использовать let вместо var, то есть константами), не говоря о том что параметры функций по умолчанию константы. Про котлин не знаю.
0
154 / 140 / 26
Регистрация: 12.12.2020
Сообщений: 1,146
22.02.2025, 21:26  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
Но, в конце концов, программист это ты и тебе решать, что нужно делать.
я просто привык писать код что бы компилятор не выдавал никаких варрнингов. Ну и среда что бы не нудила под руку "а вот тут лучше сделать по другому...".

Цитата Сообщение от Royal_X Посмотреть сообщение
Тупо следовать всем советам ide я не рекомендую.
да это я понял

Цитата Сообщение от Royal_X Посмотреть сообщение
Допустим, ты пишешь код и тебе ide предлагает сделать final. Но а вдруг ты позже собираешься менять эту переменную, но пока ты не написал эту часть кода.
а если менять переменную то АС будет возмущаться что я переопределяю переменную типа потенциальная ошибка
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
22.02.2025, 21:47
Цитата Сообщение от alecss131 Посмотреть сообщение
И идея так не советует, это похоже особенность андроид студии.
Будет советовать:

если включить:
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
22.02.2025, 21:53
Цитата Сообщение от korvin_ Посмотреть сообщение
Будет советовать
А если без извращения в виде var, то тоже? Просто я похоже давно идеей не пользовался, впрочем как и джавой.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
22.02.2025, 21:54
Цитата Сообщение от alecss131 Посмотреть сообщение
JB написан на котлине, а эта поделка на JS
Разберем по пунктам:
1. Касательно поделки. Если ты пробуешь забить гвоздь микроскопом и потом жалуешься, что микроскоп - поделка, ну это не серьезно. VS Code, будучи редактором, а не ide, во многих рейтинг-листах занимает первое место среди ide по популярности для языков JS, Python, C++, C. Вот я погуглил, во многих сайтах с рейтингами, VS Code на первом месте, тогда как продуктов от JetBrains даже рядом нет. Вот, InteliJ IDEA на некоторых сайтах еще может быть на первом месте, потому что для Java это реально неплохая ide, но вот остальные JB среды никогда не лидировали в своих областях... Большинство серьезных программистов для программирования выбирают редакторы, а не среды со свистелками - перделками, последние это больше нубский выбор. Нубам подавай ide, в котором пишут код и нажимают на красивую кнопку play. А как работает компиляция, какие параметры передаются компиляторы - им по барабану. А вот серьезные ребята на редакторах, все делают ручками. И вот именно опытные программисты выбирают VS Code и прочие редакторы, типа Vim и т.д. Поэтому не странно, что VS Code занимает первое место. Кстати, я когда видел список лучших ide, опубликованный на сайте JetBrains, так вот, там тоже VS Code был на первом месте, а их ide уже на втором. Хотя, возможно это была рекламная тактика - типа поставить свой продукт на второе место, чтобы другие не подумали, мол рейтинг предвзятый, дескать JB сам составил список и сам же свои продукты поставила на первое место. А тут может быть они хитро придумали, типа поставить бесплатный редактор на первое место, а потом свои продукты, и только потом среды от конкурентов.
2. Касательно языка, то на "языке для сайтов" JS программу для винды не сделаешь. JS, конечно, неплохой и по скорости рвет питон (а на питоне ведь делают программы и ничего), но программу на чистом JS ты не сделаешь.
На самом деле, он написан на фреймворке Electron, а этот фреймворк сделан на языках С, С++ и JS. Причем, фреймворк использует популярную платформу Node.js, а также Chromium - самый популярный и мощный браузер в мире - именно на нем держится Chrome и все прочие хромиумные браузеры. По этому, говном этот Electron даже чисто теоретически не может быть. Хотя, разумеется, ОЗУ будет жрать как браузер)
Мне кажется, Electron довольно неплохой выбор для пользовательского интерфейса.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
22.02.2025, 23:13
Кстати, idea порой советует тупые вещи, правда они потом сами исчезают. Например,



тут она советует мне вставить еще одну точку с запятой)))

Сколько не писал в Visual Studio, VS Code, Code::Blocks, Eclipse и прочих ide, таких тупых вещей ни разу не встречал.

У JetBrains уже горе от ума.
0
154 / 140 / 26
Регистрация: 12.12.2020
Сообщений: 1,146
22.02.2025, 23:15  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
тут она советует мне вставить еще одну точку с запятой)))
возможно она это "предложила" пока точки запятой не было потом точка с запятой появилась но она еще не успела это осознать. То что потом это предупреждение пропало подтверждает эту догадку.

Вообще если там включить все подсказки, то там рехнуться можно
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
22.02.2025, 23:22
Цитата Сообщение от alecss131 Посмотреть сообщение
извращения в виде var,
всё для вас поделки, везде извращения... чем вам не угодил var? Он в языке существует еще с 10-й версии и неплохая штука. Напоминает auto из С++.

Не по теме:

Цитата Сообщение от Alex1126 Посмотреть сообщение
но она еще не успела это осознать
ну ты ж понимаешь, что я за это время успел даже скриншот сделать, пока она не пропала. И у меня проц. мощный, Core i9. Просто ide такая нетерпеливая, что наверное грузит проц. фоновым стат. анализом, не дождавшись даже, когда я перестану печатать, она жестко мучает проц. во время набора...

0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,329
Записей в блоге: 2
22.02.2025, 23:26
Цитата Сообщение от Royal_X Посмотреть сообщение
чем вам не угодил var?
Тем что многие стали его совать везде где только можно, понимаю если имя типа длинное , но вот пример на скрине не адекватный. В разделе по С++ за такое закидают тапками. Да и в том же С++ чтото не видно чтобы его так же часто использовали.
А так превращать в язык с неявной типизацией ну такое себе. Я в swift от такого долго плевался, но там сним можно тип указывать. Например var s: String = "hi", что куда лучше и приятней такого var s = "hi"
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6149 / 2842 / 1040
Регистрация: 01.06.2021
Сообщений: 10,364
22.02.2025, 23:32
Цитата Сообщение от alecss131 Посмотреть сообщение
В разделе по С++ за такое закидают тапками.
Смотря, в каком случае использовать. Многие используют auto и ничего в этом нет. Это современный стиль С++.
Например, я тут не задумываясь использовал бы auto, вот сравни, какой вариант тебе нравится, там где auto - 4 символа, или там, где сосиска на 46 символов:

C++
1
2
3
4
5
6
7
#include <chrono>
 
int main()
{
    const auto start = std::chrono::high_resolution_clock::now();
    const std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();
}
Порой, еще в разы длинные типы бывают... И в таким примерах, using или typedef неуместны, auto лучше.
0
154 / 140 / 26
Регистрация: 12.12.2020
Сообщений: 1,146
22.02.2025, 23:42  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
ну ты ж понимаешь, что я за это время успел даже скриншот сделать, пока она не пропала. И у меня проц. мощный, Core i9. Просто ide такая нетерпеливая, что наверное грузит проц. фоновым стат. анализом, не дождавшись даже, когда я перестану печатать, она жестко мучает проц. во время набора...

Не по теме:


В АС тоже иногда такое бывает, но оооочень редко. Для того что бы она пересканировала введенный текст надо ее "возбудить", начать набирать код дальше :)

0
22.02.2025, 23:46

Не по теме:

Цитата Сообщение от Alex1126 Посмотреть сообщение
АС тоже иногда такое бывает
так, по сути, Аndroid Studio это InteliJ IDEA. У меня нет Аndroid Studio, чтобы сказать точно, но вроде, там где-то об этом даже предупреждается, что типа создана на основе InteliJ IDEA. Разрабы гугл, конечно, от себя добавили много чего, связанного с разработкой для андроид, например, SDK Manager, эмуляторы, дизайнер UI и прочее, но основа это InteliJ IDEA

0
 Аватар для Storm Screamer
4839 / 1406 / 115
Регистрация: 21.04.2013
Сообщений: 8,572
22.02.2025, 23:48
Цитата Сообщение от Alex1126 Посмотреть сообщение
я просто привык писать код что бы компилятор не выдавал никаких варрнингов. Ну и среда что бы не нудила под руку "а вот тут лучше сделать по другому...".
Зачем адаптироваться под инструмент, если можно инструмент адаптировать под себя, отключив в настройках IDE Warnings?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2025, 23:48
Помогаю со студенческими работами здесь

Что означает ключевое слово void?
Ответ:

Ключевое слово static в объявлении функции
Доброго времени суток. У меня возник вопрос по поводу использования слово static в объявлении функции. На сколько мне известно данное...

Что означает [In] в параметрах при объявлении API функции?
Например: public static extern IntPtr CreateCompatibleBitmap( IntPtr hdc, int nWidth, int nHeight);

Что означает первая пара [ ] скобок при объявлении массива?
Здравствуйте. Помогите разобраться. Что означает первая пара скобок при объявлении массива? Ведь массивы относятся к ссылочным типам,...

Что значит * при объявлении переменной?
Пытаюсь разобраться в коде, предоставленном сторонними разработчиками в качестве примера. Столкнулся вот с такой строкой: double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru