Разное

Константы в java: Java | Переменные и константы

Переменные и константы в Java

Мы уже и использовали переменные в наших примерах, поскольку без них было бы очень затруднительно объяснить примитивные типы данных в Java, но не акцентировали на этом внимания, так как это не большая и не сложная тема. О константах в Java мы вообще пока не говорили. И вот настало время! Ну погнали!

Переменная — основной компонент хранения данных в Java-программе. Переменная определяется комбинацией идентификатора, типа и необязательного начального значения. Кроме того, все переменные имеют область определения, которая задает их видимость для других объектов и время существования.

В Java все переменные должны быть объявлены до их использования. Объявить переменную можно в любом месте программы. Основная форма объявления переменных выглядит следующим образом:

тип идентификатор [=значение][, идентификатор [=значение] …] ;

  • тип — это один из элементарных типов Java либо имя класса или интерфейса.
  • идентификатор — это имя переменной

Переменной можно присвоить начальное значение (инициализировать ее), указывая знак равенства и значение. Следует помнить, что выражение инициализации должно возвращать значение того же (или совместимого) типа, который указан для переменной. Для объявления более одной переменной указанного типа можно использовать список с разделителями-запятыми.

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

int

a, b, c; // объявление трех переменных типа int: a, b и c
int d = 3, e, f = 5;// объявление еще трех переменных типа int с инициализацией d и f
byte z = 22; // инициализация переменной z
double pi = 3.14159;// объявление приблизительного значения переменной pi
char x = ‘x’; // присваивание значения ‘x’ переменной x

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

int

vacationDays;
System.out.println(vacationDays); // ОШИБКА! Переменная не инициализирована

Как правильно именовать переменные мы уже обсуждали.

Динамическая инициализация переменных

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

double

a = 3.0, b = 4.0;
// динамическая инициализация переменной c
double c = Math.sqrt(a * a + b * b);
System.out.println(«Гипотенуза равна » + c);

Область действия и время существования переменных

Это достаточно важный вопрос и его надо рассмотреть поподробнее. И для этого сперва надо рассмотреть использование блоков кода в Java.

Использование блоков кода

Java позволяет группировать один и более оператора в блоки кода, называемые также кодовыми блоками. Это выполняется путем помещения операторов в фигурные скобки. Сразу после создания блок кода становится логическим модулем, который можно использовать в тех же местах, что и отдельный оператор. Например, блок может служить в качестве цели для операторов if и for. Рассмотрим следующий оператор if:

if

(x < y) { // начало блока
x = y;
y = 0;
} // конец блока

В этом примере, если x меньше y, программа выполнит оба оператора, расположенные внутри блока. Таким образом, оба оператора внутри блока образуют логический модуль, и выполнение одного оператора невозможно без одновременного выполнения и второго. Основная идея этого подхода состоит в том, что во всех случаях, когда требуется логически связать два или более оператора, это делается посредством создания блока.

Java допускает объявление переменных внутри любого блока. Блок начинается открывающей фигурной скобкой и завершается закрывающей фигурной скобкой. Блок задает область определения. Таким образом, приоткрытии каждого нового блока мы создаем новую область действия. Область действия задает то, какие объекты видимы другим частям программы. Она определяет также время существования этих объектов.

Основное правило, которое следует запомнить: переменные, объявленные внутри области действия, не видны (т.е. недоступны) коду, который находится за пределами этой области. Таким образом, объявление переменной внутри области действия ведет к ее локализации и защите от несанкционированного доступа и/или изменений.

Области действия могут быть вложенными. Например, при каждом создании блока кода мы создаем новую, вложенную область действия. В этих случаях внешняя область действия заключает в себя внутреннюю область. Это означает, что объекты, объявленные во внешней области, будут видны коду, определенному во внутренней области. Тем не менее, обратное не верно. Объекты, которые объявлены во внутренней области действия, не будут видны за ее пределами. Это может пояснить следующий пример:

Переменная y, определенная внутри своей области действия ограниченной фигурными скобками, доступна только в ней. За ее пределами переменная y уже не доступна, а переменная x доступна, и во области действия переменной y.

Следует запомнить еще один важный нюанс: переменные создаются при входе в их область действия и уничтожаются при выходе из нее.

Это означает, что переменная утратит свое значение сразу по выходу из области действия.

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

Код приведенный на примере слева, выдаст ошибку компиляции.

Такие трюки возможные в C и C++ в Java не проходят.

 

Константы в Java

В Java для обозначения констант служит ключевое слово final. Ключевое слово final означает, что присвоить данной переменной какое-нибудь значение можно лишь один раз, после чего изменить его уже нельзя. Рекомендуется использовать для именования констант прописные буквы, хоть это и не является обязательным, но такой стиль способствует удобочитаемости кода. Пример объявления константы:

final

double CM_PER_INCH = 2.54;

Константу можно и не инициализировать при ее объявлении, но необходимо инициализировать до ее использования в каком-либо выражении, точно так же как и переменную, но сделать это можно только один раз. Причем это можно сделать и в условных операторах, то есть инициализировать значение константы в зависимости от каких либо условий. Компилятор проверит все возможные варианты, и если будет хоть один, где константа может быт не инициализирована, то он выдаст ошибку.

Уроки по теме «константы» для начинающих

В каталоге хекслета найдено 29 уроков по теме «константы». Уроки по теме «константы» есть в курсах: Основы Java.

Урок «Инструкции (Statements)»

В курсе «Основы Java»

Изучаем азы построения программ на Java

Урок «Арифметические операции»

В курсе «Основы Java»

Переведем арифметические действия на язык программирования

Урок «Введение»

В курсе «Основы Java»

Познакомиться с курсом

Урок «Стандартная библиотека»

В курсе «Основы Java»

Начнем знакомство со стандартной библиотекой

Урок «Цикл for»

В курсе «Основы Java»

Изучаем альтернативу циклу while

Урок «Переменные»

В курсе «Основы Java»

Научиться хранить информацию и переиспользовать уже существующие данные

Урок «Пакеты»

В курсе «Основы Java»

Учимся организовывать свой код в виде пакетов

Урок «Типы данных»

В курсе «Основы Java»

Что такое типы, какие они бывают и кто их выводит

Урок «Вызов методов»

В курсе «Основы Java»

Научиться пользоваться готовыми методами

Урок «Вызов метода — выражение, неизменяемость строк»

В курсе «Основы Java»

Научиться использовать результат работы методов

Урок «Цепочки вызовов методов»

В курсе «Основы Java»

Научимся вызывать метод на результате вызова предыдущего и строить цепочки вызовов

Урок «Какие бывают методы»

В курсе «Основы Java»

Узнаем, какие методы существуют в Java

Урок «Цикл while»

В курсе «Основы Java»

Разбираемся, как писать программы для выполнения повторяющихся действий

Урок «Определение методов»

В курсе «Основы Java»

Создаем свой первый метод

Урок «Необязательные параметры методов»

В курсе «Основы Java»

Выясняем, как работает перегрузка метода

Урок «Строки»

В курсе «Основы Java»

Учимся работать со строками, изучаем экранирующие последовательности и конкатенацию

Урок «Именование»

В курсе «Основы Java»

Учимся правильно именовать переменные

Урок «Ошибки оформления, синтаксиса и линтера»

В курсе «Основы Java»

Изучаем важную часть работы программиста — способы исправления ошибок

Урок «Первая программа»

В курсе «Основы Java»

Пишем свою первую программу на Java

Урок «Параметры методов»

В курсе «Основы Java»

Учимся передавать данные в метод

Урок «Логические операции»

В курсе «Основы Java»

Научимся использовать логические выражения и писать методы-предикаты

Урок «Метод main»

В курсе «Основы Java»

Разбираемся, для чего нужен метод main

Урок «Условные конструкции»

В курсе «Основы Java»

Учимся управлять поведением программы в зависимости от разных условий

Урок «Конструкция Switch»

В курсе «Основы Java»

Разбираемся, что такое конструкция Switch и в каких случаях ее использовать

Урок «Условия внутри цикла и возврат значений»

В курсе «Основы Java»

Учимся управлять программой в теле цикла

Урок «Возврат значений»

В курсе «Основы Java»

Учимся использовать результат работы функции

Нашли 1 курс по тегу «константы»

Основы Java

основы Java

переменные

константы

параметры методов

37 часов

Посмотреть

Вам могут быть интересны темы: основы Java переменные параметры методов методы отладка программы логика ошибки

java — Какая польза от констант интерфейса?

» Шаблон постоянного интерфейса является неправильным использованием интерфейсов »

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

Гипотеза основана на пропаганде дурных привычек проектирования программного обеспечения.

Я написал опровержение этой гипотезы здесь: Как лучше всего реализовать константы в Java? объясняя необоснованность этой гипотезы.

В течение 10 лет этот вопрос оставался открытым, пока не был закрыт в течение 2 часов после того, как я опубликовал свои доводы, опровергающие эту гипотезу, тем самым выявив НЕЖЕЛАНИЕ для дебатов тех, кто крепко держится за эту ошибочную гипотезу.

Вот пункты, которые я высказал против гипотезы

  • Основанием для поддержки этой гипотезы является потребность в методах и ОГРАНИЧИВАЮЩИХ правилах, чтобы справиться с последствиями вредных привычек и методологий программного обеспечения.

  • Сторонники мнения « Постоянный шаблон интерфейса — это плохое использование интерфейсов» не могут привести никаких причин, кроме тех, которые вызваны необходимостью справиться с последствиями этих вредных привычек и практик.

  • Решите фундаментальную проблему.

  • И тогда почему бы не в полной мере использовать и использовать каждую языковую особенность языковой структуры Java для вашего собственного удобства. Куртки не требуются. Зачем изобретать правила, чтобы оградить ваш неэффективный образ жизни от дискриминации и осуждения более эффективного образа жизни?

Основополагающим вопросом

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

Тогда возможна только разработка решения, поскольку согласование степени детализации и модульности компонентов решения с детализацией и модульностью компонентов информации является оптимальной стратегией.

Есть два или три серьезных препятствия для организации информации.

  1. Отсутствие понимания необходимости «нормализации» модели данных.

  2. Утверждения Э. Ф. Кодда о нормализации данных ошибочны, дефектны и двусмысленны.

  3. Последней модой, маскирующейся под agile-инженерию, является ошибочное представление о том, что не следует заранее планировать и обусловливать организацию модулей, потому что вы можете проводить рефакторинг по ходу дела. В качестве оправдания используются рефакторинг и непрерывные изменения без будущих открытий. Таким образом, важные открытия поведения информации о процессе с помощью бухгалтерских уловок задерживают прибыль и активизацию, поэтому основные знания и их обработка считаются ненужными в настоящее время.

Использование констант интерфейса является хорошей практикой.

Не придумывайте правила и не издавайте никаких фетв против этого только потому, что вам нравятся ваши случайные привычки программирования.

Не запрещайте владение оружием по той причине, что есть люди, которые либо не умеют обращаться с оружием, либо склонны злоупотреблять им.

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

Глупое рассуждение. Создатели языка Java не планировали использовать интерфейсы таким образом?

Меня не волнуют первоначальные намерения отцов-основателей относительно Конституции США. Меня не волнуют неписаные некодифицированные намерения. Меня волнует только то, что буквально кодифицировано в писаной Конституции и как я могу использовать это для эффективного функционирования общества.

Меня волнует только то, что позволяют мне спецификации языка/платформы Java, и я намереваюсь использовать их в полной мере, чтобы предоставить мне средство для эффективного и действенного выражения моих программных решений. Куртки не требуются.

Использование констант Enum на самом деле является ужасной практикой.

Требуется написать дополнительный код для сопоставления параметра со значением. Тот факт, что основатели Java не предусмотрели сопоставление значения параметра без вашего написания этого кода сопоставления, демонстрирует, что константы Enum являются таким же непреднамеренным использованием языка Java.

Тем более, что вам не рекомендуется нормализовать и разбивать ваши параметры на компоненты, может возникнуть ложное впечатление, что параметры, смешанные в пакете Enum, принадлежат к одному и тому же измерению.

Константы — это контракт API

Не забывайте об этом. Если вы разработали и нормализовали свою модель данных, и они включают константы, то эти константы являются контрактами. Если вы не нормализовали свою модель данных, то вам следует следовать фетвам о том, как практиковать ограничительное кодирование, чтобы справиться с этой вредной привычкой.

Таким образом, Интерфейсы — идеальный способ реализации контракта Констант.

Странное предположение.

Что делать, если интерфейс непреднамеренно реализуется.

Ага. Любой может непреднамеренно реализовать любой интерфейс. Ничто не помешает таким непреднамеренным программистам.

Разработайте и нормализуйте свою модель данных от утечки

Не размещайте ограничительные указы для защиты предполагаемых неправильных методов, которые вызывают утечку несогласованных/случайных параметров в API. Решите фундаментальную проблему, а не обвиняйте константы интерфейса.

Неиспользование IDE является плохой практикой

Нормально функционирующий и ЭФФЕКТИВНЫЙ программист не может доказать, как долго он может оставаться под водой, как далеко он может пройти в палящую жару или в сырую грозу. Она должна использовать эффективный инструмент, такой как автомобиль, автобус или, по крайней мере, велосипед, чтобы каждый день ездить на работу за 10 миль.

Не налагайте ограничений на коллег-программистов только потому, что у вас эзотерическая аскетическая одержимость программированием без IDE.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *