Объектно-ориентированное программирование на Java. Платформа Java SE
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Объектно-ориентированное программирование на Java. Платформа Java SE

Тимур Машнин

Объектно-ориентированное программирование на Java

Платформа Java SE





С этой книгой вы обучитесь объектно-ориентированному программированию на платформе Java SE и научитесь применять принципы ООП на практике.


12+

Оглавление

Введение

На этом курсе мы будем изучать технологию Java.

Итак, что такое технология Java?

Начнем с самого понятия технологии программирования.

Можно сказать, что технология программирования — это совокупность методов и инструментов, позволяющих создавать программное обеспечение.

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

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

Применительно к Java, технология Java — это язык программирования Java и платформа Java.

Язык программирования Java представляет собой объектно-ориентированный язык программирования, имеющий синтаксис, близкий к синтаксису языка С++.

Отличия языка Java от языка С++ обусловлены самим происхождением этих языков программирования.

Язык С++ является расширением языка С, который создавался как язык системного программирования.

Язык Java, в свою очередь, создавался для решения задач сетевого программирования и является самостоятельным языком программирования.

Главные отличия языка Java от языка С++ — это более строгая типизация, ограничения работы с памятью, автоматическая сборка мусора.

Понятно, что для создания программного обеспечения наличие одного языка программирования недостаточно.

Для компилируемых языков нужны инструменты, компилирующие исходный код в машинный, исполняемый операционной системой компьютера.

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

В случае языка Java, реализация платформы Java как раз и обеспечивает выполнение Java-кода в операционной системе компьютера.

Таким образом, для того чтобы Java-приложение могло быть запущено, необходима реализация платформы Java.

Мы упомянули реализацию платформы Java.

Что это такое?

Платформа Java состоит из виртуальной машины Java Virtual Machine (JVM) и библиотек интерфейса программирования Java Application Programming Interface (API).

Для всех распространенных операционных систем существуют свои виртуальные машины JVM, тем самым реализуется принцип «Write Once, Run Anywhere» — написанное однажды, работает везде.

Реализация платформы Java — это конкретная реализация JVM для конкретной операционной системы плюс библиотеки Java API.

На самом деле компанией Oracle для выполнения Java-приложений предоставляется набор сред выполнения Java Runtime Environment (JRE), охватывающий все распространенные операционные системы.

Виртуальная машина JVM составляет основную часть среды выполнения Java Runtime Environment (JRE).

Помимо JVM JRE содержит базовые библиотеки API, необходимые для выполнения Java-приложений, а также дополнительные инструменты, включая Java Plug-in — для запуска апплетов в браузере и Java Web Start — для развертывания Java-приложений через Интернет.

Компанией Oracle также предоставляется минимальный комплект разработки Java-приложений Java Development Kit (JDK), состоящий из набора инструментов, включая компилятор в байт-код javac, документации, примеров и среды выполнения JRE.

Язык программирования Java является одновременно и интерпретируемым, и компилируемым. Причина этого кроется в устройстве виртуальной машины JVM.

Виртуальная машина JVM — это набор специальных программ, созданных для конкретной операционной системы.

Точкой входа в виртуальную машину JVM является программа java, запускающая Java-приложение.

Приложения, написанные на языке Java, представляют собой текстовые файлы с расширением. java.

Чтобы JVM выполнила Java-приложение, приложение должно быть откомпилировано в специальный двоичный формат — байт-код.

Откомпилированное Java-приложение состоит из файлов с расширением. class, которые могут быть упакованы в архивный исполняемый файл с расширением. jar.

При запуске Java-приложения на вход JVM подается байт-код Java-приложения, а также байт-код используемых приложением библиотек Java API.

Виртуальная машина JVM может выполнять приложения, написанные и на других языках программирования — Scala, Groovy, Ruby, PHP, JavaScript, Python и др., при этом приложения также должны быть откомпилированы в байт-код.

В процессе обработки байт-кода виртуальная машина JVM производит его интерпретацию, т.е. выполняет команды, содержащиеся в байт-коде, или использует компилятор Just-in-time compilation (JIT), который транслирует байт-код в машинный код непосредственно во время выполнения Java-приложения, и тем самым увеличивает скорость обработки байт-кода.

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

Платформа Java содержит два типа JVM:

Java HotSpot Client VM (Client VM). Вызывается опцией — client инструмента java и обеспечивает быстрый запуск и потребление небольшого объема оперативной памяти.

Java HotSpot Server VM (Server VM). Вызывается опцией –server инструмента java и обеспечивает максимальную скорость выполнения приложения.

Для обеих JVM технология Java HotSpot оптимизирует обработку байт-кода, распределение памяти, сборку мусора и управление потоками.

Технология Java — это общее понятие, на самом деле обозначающее широкий спектр Java-технологий.

Среда выполнения JRE и комплект разработки JDK являются основными продуктами платформы Java Platform, Standard Edition (Java SE).

Как уже было сказано, платформа Java содержит библиотеки интерфейса программирования Java API. Для чего они предназначены и какую роль они выполняют?

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

С библиотеками Java API программисту не нужно самому реализовывать ввод-вывод, сетевое соединение, создавать стандартные графические компоненты для интерфейса пользователя и многое-многое другое.

Все это уже предоставлено технологией Java.

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

Технология Java представлена следующими платформами:

Java Platform, Standard Edition (Java SE) — предоставляет среду выполнения и набор технологий и библиотек API для создания и запуска серверных и настольных приложений, апплетов и является основой для остальных платформ.

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

Платформа Java SE включает в себя следующие компоненты — среду выполнения Java Runtime Environment (JRE) и комплект разработчика приложений Java Development Kit (JDK).

Java SE Embedded — предназначена для встроенных систем, таких как интеллектуальные маршрутизаторы и коммутаторы, профессиональные принтеры и др.

Платформа Java SE for Embedded обеспечивает ту же функциональность, что и платформа Java SE, дополнительно добавляя поддержку для платформ, специфических для встроенных систем, оптимизацию использования памяти, а также предоставляя уменьшенную среду выполнения и опцию Headless для устройств, не имеющих дисплея, мышки или клавиатуры.

Java Platform, Micro Edition (Java ME) — содержит набор сред выполнения и библиотек API, предназначенных для встроенных и мобильных устройств. В настоящее время активно применяется для Интернет вещей.

Java Card — позволяет создавать и запускать небольшие приложения (Java Card-апплеты) в смарт-картах и других устройствах с очень ограниченными ресурсами, таких как SIM-карты мобильных телефонов, банковские карточки, карты доступа цифрового телевидения и др.

Java Platform, Enterprise Edition (Java EE) — является расширением платформы Java SE и добавляет библиотеки, позволяющие создавать распределенные, многоуровневые серверные Java-приложения.

Если сравнивать язык Java с такими распространенными языками как С#, JavaScript, Python и PHP,

То сравнивая Java c C#, который работает на платформе NET, c точки зрения разработчика языки Java и C# очень похожи.

Но у них есть некоторые синтаксические различия, и язык Java считается более простым языком.

Кроме того, C# все таки больше привязан к платформе Windows.

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

Если сравнивать Java и JavaScript, язык JavaScript является только интерпретируемым и выполняется только в веб-браузерах.

Если сравнивать Java и Python, то Python также является компилируемым и интерпретируемым языком, но с полной динамической типизацией, он проще в изучении, но проигрывает в скорости Java, хотя для него есть альтернативные реализации интерпретаторов: Jython, Cython и другие.

По поводу сравнения Java и Python также ведутся жаркие дискуссии.

Если сравнивать Java и PHP, то PHP это скриптовый серверный язык для разработки веб приложений, он проще в изучении и является языком с динамической типизацией. PHP не предназначен для крупных проектов, однако, PHP хостинг более распространен, чем для Java.

Как видно у каждого языка есть свои плюсы и минусы, но «Вы должны писать на языке, который делает вас счастливее», как сказал Пэт Аллан.

Выражения

Теперь каким способом можно хорошо представить, что такое компьютер?

И какие есть концепции языка программирования?

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

И мы постепенно преобразуем простой калькулятор в компьютер.

Сделав это, мы также перейдем от ввода последовательности клавиш калькулятора к компьютерной программе.

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

Вы использовали калькулятор много раз.

И вы знаете из чего он состоит.

Здесь есть клавиши с цифрами, которые помогут вам составить число.

Составленные числа отображаются на дисплее.

И тогда вы можете выполнять операции с этими числами,

Для которых вы используете другие клавиши, которые представляют эти операции.

Мы начнем с рассмотрения базового калькулятора.

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

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

Теперь, используя цифры, вы можете писать выражения и запрашивать их вычисления.

Выражение содержит числа и арифметические операции.

Эти выражения называются числовыми выражениями.

Теперь давайте улучшим этот калькулятор.

Но сначала давайте поговорим о выражениях.

Как правило, мы думаем о выражениях математически.

Это выражение равно другому выражению или какому-либо значению.

И это очень хорошая абстракция в большинстве случаев.

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

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

И вычисление более сложного выражения может занять больше времени.

Но что более важно, представьте, что у нас есть сложное выражение, и мы вычислили его один раз.

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

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

Поэтому, рассмотрим такой калькулятор, где у нас есть запоминание.

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

Функция запоминания позволяет нам сохранить значение для будущего использования.

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

Иногда есть третья клавиша, MC для очистки памяти,

Назовем эти две клавиши для работы с памятью set и get.

Сейчас ячейки памяти названы предопределенными именами, M1, M2 и т. д.

Но мы хотели бы назвать их x и y, как мы привыкли в математике.

И мы будем присваивать этим ячейкам памяти имена переменных.

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

Мы можем сказать, что значение переменной неопределенно.

Поэтому, если мы попытаемся получить это значение, мы получим ошибку.

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

Теперь мы хотим, чтобы дисплей показывал что-то, когда мы нажимаем кнопки Set или Get.

Давайте сначала поговорим о Set.

Предположим, что дисплей показывает число 3, и что мы нажимаем кнопку set переменной x.

Теперь значение 3 будет храниться в переменной x.

И дисплей может показать что-то вроде x равно 3 точка с запятой,

Чтобы записать то, что мы только что сделали.

Мы говорим, что мы назначили значение 3 переменной X, и записали это как x равно 3 в инструкции присваивания.

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

Например, представьте, что у нас есть 5 на дисплее,

И мы хотим добавить значение x.

Мы нажимаем символ плюса, а затем кнопку Get х.

Таким образом, мы увидим на дисплее 5 плюс x.

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

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

Поэтому на дисплее написано d равно перед выражением.

Таким образом мы преобразуем выражение в операцию.

На слайде показаны различные выражения присваивания.

Здесь показано, что выражения могут также иметь переменные.

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

Теперь может оказаться, что одна и та же переменная появляется как слева, так и справа от присваивания.

Давайте проанализируем это более подробно.

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

Представьте, что мы имеем три переменные x, y и z.

Мы не знаем их начальных значений.

У нас есть первая операция, которая присваивает 1 переменной x.

Поэтому после выполнения содержимое переменной x равно 1.

Следующая операция присваивания y равно x плюс 1.

Сначала мы должны оценить выражение справа, x плюс 1.

Для этого нам нужно получить значение, сохраненное в x.

Поэтому мы получаем 2 и 2 сохраняем в y.

Мы всегда работаем справа налево.

Сначала вычисляем выражение, а затем сохраняем результат в переменной.

Теперь мы сначала получаем значения x и y, складываем их вместе, получаем 3 и сохраняем 3 в x.

Переменные вместе со значениями — это то, что мы называем состоянием.

Таким образом, оператор присваивания преобразует одно состояние в другое состояние.

Здесь состояния обозначены фигурными скобками.

Коллекция значений переменных — это состояние.

Поэтому присваивание приводит к изменению состояния.

Теперь представьте, что вы сегодня делаете расчеты, и вы хотите повторить те же самые вычисления завтра.

Для этого вам нужно будет ввести все выражения снова.

Поэтому мы хотели бы иметь возможность записывать вычисления.

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

Некоторые калькуляторы печатают вычисления на бумаге.

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

Мы называем эту запись программой.

На данный момент программа является последовательностью простых вычислений.

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

Теперь наш калькулятор становится все больше похож на компьютер.

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

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

Теперь эти инструкции обычно представляют собой текст.

Расширенный калькулятор выглядит следующим образом.

На дисплее теперь отображается история операций.

Это то, что мы называем программой.

Помимо записи истории операций, мы также хотим возможность ввода этой истории в калькулятор.

Таким образом, мы получим простой компьютер.

В общем и целом, программа является не чем иным, как записанным вычислением.

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

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

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

Основные операторы

Калькулятор, которые мы рассматривали, работал с числами.

Мы использовали числа и операции с числами для получения чисел.

Теперь, что делать, если вы хотите сравнить два числа?

Если мы хотим проверить, например, 5 меньше 6 или нет.

Ответ может быть положительным или отрицательным, — да или нет.

Это будет утверждение истинное или ложное.

В этом случае true и false также являются значениями, но они не являются числовыми значениями.

Их называют булевыми значениями в честь математика Джорджа Була.

Существует шесть операций сравнения — меньше чем, больше чем, меньше или равно, больше или равно.

И наконец, мы должны проверить, являются ли два значения равными или разными.

Результатом проверки будет булево значение true или false.

Булевы значения представляют собой тип данных с двумя значениями true и false.

Мы могли бы назвать их да или нет, или один и ноль, но мы будем называть их true и false, как это делает Java.

И так же, как у нас были арифметические операции, теперь мы имеем несколько булевых операций.

Давайте посмотрим на некоторые из них.

Отрицание, которое также называется «нет» и представлено восклицательным знаком.

Эта операция принимает одно логическое значение, один аргумент, и возвращает другое логическое значение.

Конъюнкция — это еще одна операция, также называемая «и», и она представлена двумя амперсандами.

Эта операция принимает два значения, два аргумента.

И еще одна операция — дизъюнкция, также называемая «или», и она представлена двумя вертикальными полосами.

Эта операция также принимает два аргумента.

Операция отрицания принимает одно логическое значение и возвращает также логическое значение, а именно другое.

Таким образом, отрицание true, это false и наоборот.

Операция «и» принимает два boolean значения в качестве аргумента и возвращает boolean значение.

И результат true, если оба аргумента true, и false в противном случае.

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

Теперь результат true, если какой-либо аргумент true, и false, если оба аргумента являются false.

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

Таким образом, суммируя, в Java мы имеем следующие основные операторы.

А также оператор присваивания = равно.

Переменные

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

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

Объявление должно включать сначала тип данных переменной.

В Java существует несколько типов данных, предусмотренных для чисел.

На данный момент для упрощения, представьте себе, что у нас есть один тип данных, называемый «int».

«int» включает в себя как положительные, так и отрицательные целые числа, в некоторых пределах.

Таким образом, объявление переменной состоит из имени типа, затем имени переменной и точки с запятой.

Имя переменной можно выбирать с некоторыми ограничениями.

В некоторых случаях мы также называем имя переменной идентификатором переменной.

Теперь, как мы можем создавать имена для переменных?

По сути, имена — это слова, которые должны следовать некоторым правилам.

И вот некоторые правила.

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

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

Другие специальные символы не допускаются.

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

Итак, «n» и «_n» являются правильными именами, тогда как «n?» не может использоваться.

И вы не можете использовать цифру в начале имени.

«n1» является правильным именем, а «1n» — нет.

Кроме того, есть некоторые слова, которые запрещены.

Такие как зарезервированные ключевые слова, например, «int» или «boolean», или литералы, такие как «true» и «false».

Таким образом, вы не можете иметь «int» или «true» как имя переменной.

Кроме того, в имени не должно быть пробелов.

И, наконец, будет ошибкой объявление одного и того же имени в одной и той же области видимости.

Теперь есть рекомендации по выбору имен переменных.

Во-первых, имена должны иметь смысл.

Это поможет вам и другим людям понять, как использовать переменные.

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

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

И мы поставим также что-то перед «int», чтобы сигнализировать о постоянстве переменной.

После того, как мы объявили переменные, мы готовы использовать их и назначить им значения.

Также мы можем объявить и присвоить значения одновременно.

Строки и печать

Мы заинтересованы не только в работе с числами.

Нам также нужно работать с текстом.

Поэтому мы будем расширять теперь наш калькулятор значениями и операциями для текста.

Текст состоит из последовательности символов.

Один символ — это символ, который вы можете найти на клавиатуре.

Строка представляет собой последовательность символов.

Строка может состоять из нескольких символов, но она может также иметь только один символ, как в этом примере строки с пробелом.

Строка также может не содержать никаких символов.

В этом случае мы говорим о пустой строке.

Обратите внимание, что мы помещаем одиночные символы в одинарные кавычки и строки в двойные кавычки.

Это позволяет нам чётко различать литералы строк и символов. Если бы и строки, и символы можно было задавать с помощью одного и того же типа кавычек, то пришлось бы при операциях проверять, символ ли это, или строка.

Теперь, что, если мы хотим иметь двойную кавычку в строке?

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

Здесь внешние двойные кавычки не являются частью строки.

Они просто указывают, что у нас есть строка.

Но теперь, если обратная косая черта является символом со специальным свойством, что делать, если мы хотим иметь обратную косую черту в строке?

Тогда мы тоже ставим перед ней обратную косую черту.

Теперь это объявление переменной для строки с именем s, которой мы присваиваем строку, состоящую из просто символа s.

Так что не путайте имя переменной со строкой.

Вот почему мы используем двойные кавычки.

Теперь, какие есть основные операции для строк?

Очень важной операцией является конкатенация или соединение строк.

Обратите внимание, что символ для операции конкатенации — тот же самый, что и для сложения.

Это знак плюса.

Вы должны быть осторожны, чтобы не путать число один со строкой «1» в кавычках.

В этом примере n является целым числом и s строкой.

Поэтому, если говорить n плюс n, мы складываем числа и в результате получим целое число 2.

Если, смотреть на s плюс s, мы объединяем две строки и получаем строку 11.

Интересно отметить, что разрешено писать s плюс n — строка плюс число.

Если один из операндов является строкой, другой также преобразуется в строку.

Поэтому в последнем примере целое число 1 преобразуется в строку «1»

И в результате получим строку 11.

length — это операция, которая применяется к строке и возвращает число, соответствующее количеству символов в строке.

Интересно отметить, что длина конкатенации двух строк — это сумма их длин.

С операцией substring мы можем извлечь часть данной строки.

Предположим, что у нас есть строка с этими 6 символами, Hello восклицательный знак.

Первый символ, H находится в нулевой позиции.

Второй E в позиции 1 и так далее, до позиции 5.

Таким образом, substring (2,4) означает, что мы извлекаем подстроку, которая начинается в позиции 2, L, и заканчивается в позиции до 4.

Таким образом, позиция 4 не включена.

Мы включаем символы в позициях 2 и 3, два L.

substring (0,2) выбирает два первых символа, а substring (2,6) остальные.

Также возможно написание одного аргумента в substring.

Это означает, что подстрока выбрана до конца строки.

Теперь есть много других операций для строк, таких как indexof, compareto и т. д.

Которые мы увидим позже.

Если вы хотите напечатать строку в Java, вы можете использовать оператор System.out.print.

И этот оператор принимает аргумент, который нужно напечатать.

Это может быть строка или другой тип.

System.out.println, в отличие от System.out.print, переводит печать на новую строку после печати.

Теперь надо отметить, что фактически, String не является примитивным типом данных как boolean или «int».

Вот почему вы пишете String с заглавной буквы S.

Но мы поговорим об этом в позже.

Условия if и else

Теперь поговорим об условии if.

Мы принимаем все время решения.

Если мы думаем, что пойдет дождь, мы берем зонт, прежде чем уйти из дома.

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

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

Выражения выполнялись по порядку одно за другим.

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

Давайте посмотрим пример.

Предположим, что мы хотим вычислить квадратный корень из числа.

И мы знаем, что число должно быть положительным, чтобы квадратный корень был реальным числом.

Поэтому, если нам дано отрицательное число, нам нужно сделать его положительным.

Если число положительное, нам не нужно ничего делать.

Как мы сделаем это на Java?

Ключевое слово if вводит условное выражение.

В этом примере выражение присваивания n равно минус n, выполняется только в том случае, если выполняется условие n меньше 0.

Если это условие ложно, ничего не делается.

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

Мы просто помещаем выражения между фигурными скобками, делая их блоком.

Если условие ложно, ни одно из выражений этого блока не выполняется.

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

Логическое выражение для условия должно всегда находиться между круглыми скобками.

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

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

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

Это одна из структур, контролирующих поток выполнения программы.

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

В зависимости от некоторых условий мы идем так или иначе.

Как мы это выразим в Java?

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

Если условие не выполняется, ничего не делается.

Теперь мы хотим выполнить альтернативное выражение в этом случае.

Здесь мы видим простой пример.

x присваивается минус n, если n отрицательно.

Если это не так, x присваивается n.

Таким образом, существует два альтернативных блока выражений.

Тот, который выполняется, если условие истинно.

И тот, который выполняется, если условие ложно.

Этот блок записывается после ключевого слова else.

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

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

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

Например, давайте напишем условное выражение внутри другой ветви.

Новое условие проверяет, равно ли n 0.

Если это так, мы что-то делаем.

Иначе мы делаем что-то еще.

В целом, теперь у нас есть три случая, из которых только один выполняется.

Здесь показан пример с 4 случаями.