JAVA 2021: лёгкий старт

Павел Александрович Забелин

Главная цель этой книги – показать читателю, что программирование на Java, гораздо более проще, чем принято об этом думать. Как известно «хочешь лучше понять сам – расскажи об этом другому», что я и попытался сделать на страницах этой книге в меру своих сил и времени. Эта книга как раз вам поможет обрести базовые знания программирования и языка программирования Java, и избавит вас от проблем с пониманием основ программирования.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги JAVA 2021: лёгкий старт предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Часть I

Глава 0. Мы программируем

Мы программируем железо

В наше время мы уже настолько окружены техникой, которая способна выполнять разнообразные программы, что уже воспринимаем это как должное. Что там компьютеры… телефоны, телевизоры, пылесосы (!), видеокамеры, автомобили, даже лифты — все они уже исполняют программы. Но для того чтобы писать хорошие программы, надо хотя бы примерно понимать, как устроен компьютер. В мире программистов компьютеры называются «железом» (хотя сейчас там гораздо больше пластика, стекла и кремния). У некоторых были уроки информатики, но, наверное, как это обычно происходит, они проходили за компьютерными играми:)

Что-же такое компьютер? Компьютер — это устройство, в которое можно ввести какие-либо данные, эти данные могут быть обработаны программой, и в конечном итоге будет выведен результат. В нашей реальности мобильный телефон (это тоже компьютер), в котором запущена программа (Instagram), в который вы вводите данные (ваши нажимы и касания пальцев, когда вы скролите ленту), и в итоге видим результат — новые посты в ленте.

Компьютер — это сложное устройство, он состоит из нескольких модулей, которые нужны для разных задач. В первую очередь самый заметный модуль (устройство вывода) — монитор\дисплей, через него мы получаем всю визуальную информацию. Устройства ввода, по меньшей мере два: клавиатура и мышь (или, например, тачпад). А еще устройство ввода — это цифровой сканер или VR-шлем (и он же устройство вывода). Далее непосредственно сам компьютер, обычно мы видим его как системный блок или нижнюю часть ноутбука.

Самые главные части современного компьютера: процессор (или несколько процессоров), оперативная память, твердый диск, видеокарта, звуковая карта. Процессор — это «мозг» компьютера, но в отличие от человеческого мозга, он не думает, а исполняет команды. Оперативная память — это куда загружаются программы, чтобы выполнять их в текущий момент. Оперативная память не сохраняет данные после выключения питания. Твердый диск — хранит разнообразные данные и программы. Данные на нем не будут потеряны после выключения питания. Чтобы понять разницу между оперативной памятью и твердым диском, вспомните себя, когда вы считаете сколько денег потратили: вы в голове перемножаете количество товаров на их цену (оперативная память), а потом записываете промежуточный результат на бумажку (твердый диск). Манипуляция мыслями занимает гораздо меньше времени, чем запись и потом поиск информации на бумажке — также и с компьютером: он быстро работает с оперативной памятью и гораздо медленнее с твердым диском. Видеокарта занимается ускоренным просчетом данных для последующей отрисовки, как мы все знаем это особенно критично для видеоигр:) Звуковая карта преобразует цифровые данные в электрические импульсы, которые «понимают» аудиоколонки.

Программист на Java в 99% случаев взаимодействует (и иногда сталкивается с нюансами) с дисплеем, клавиатурой, мышкой, процессором, оперативной памятью и диском, а также с другими компьютерами (обычно серверами) которые присылают данные и ждут ответов через интернет.

Мы программируем и пишем программы

Существует огромная пропасть между представлением данных для человека и для компьютера. Для компьютера данные представляются в виде электрических импульсов — есть ток, нет тока. Человек не может читать электричество, и он придумал различные абстракции. И поэтому наличие\отсутствие электрического тока представляется двумя цифрами 0 и 1, это уж позволяет использовать бинарную математику, это уже позволяет путем ввода нулей и единиц управлять процессором и соответственно писать программы. Но такие программы не читабельны — мы привыкли общаться словами и предложениями. И поэтому возникли разнообразные языки программирования, использовать которые для написания программ намного лучше, чем писать единицы и нолики. Сначала возникли языки программирования только чтобы просто программировать компьютеры, позже люди стали создавать языки программирования для работы в разных областях науки и бизнеса. Например, Fortran — для математиков и их формул, Cobol — для экономистов и биржевых операций, Assembler — для низкоуровневого программирования устройств, BASIC — для обучения школьников, Go — для программирования распределённых систем, PHP — для упрощенного написания веб-сайтов. Некоторые языки были созданы как следующий эволюционный шаг: Delphi — эволюция Pascal, Java — эволюция C, C# — эволюция C++ и Java.

Но Java создавали не только для того, чтобы сделать улучшенную версию языка C. Когда компьютер превратился из «монстра научных институтов» в персональный компьютер, стали появляться, одна за другой, операционный системы; возникло большое количество производителей компьютерного железа, которые выпускали кучу всяких устройств, программировать которые обычному программисту, без погружения в глубины документации и драйверов (управляющих железом микропрограмм) было невозможно. И вот в светлый ум доктора информатики Джеймса Гослинга пришла идея создать такую технологию, которая позволила бы программисту писать такой код, который мог бы запускаться на любом железе. И его идея была им воплощена в язык программирования Java и виртуальную машину Java.

В чем суть? Виртуальная машина Java это программный компьютер внутри компьютера обычного на базе операционной системы Windows\MacOS\Unix\…. Виртуальная машина Java (Java Virtual Machine — JVM) специально создается для каждой операционной системы. И JVM знает, как «общаться» с операционной системой и через нее со всеми устройствами, которые могут быть подключены к компьютеру. В чем выгода для программиста? — программист пишет свой код только один раз (!) и ему в своем коде не надо знать на каком компьютере, с какой операционной системой его код будет запускаться. Это огромная экономия времени и денег. Именно поэтому Java код очень надежный и безопасный, он с одной стороны может ограничивать программиста, когда тот хочет «пошалить», а с другой стороны не дает программисту написать код, который может что-то сломать.

Стоит заметить, что концепция «виртуальных машин» получила дальнейшее развитие в других языках программирования, главным образом из-за безопасности. Например, виртуальная машина JavaScript, она встроена в браузер, дает определенные возможности для работы с документом в браузере, для обращения к серверу, но полностью запрещает произвольное считывание данных пользователя с диска. Очень похожая на JVM виртуальная машина Microsoft. NET.

Глава 1. Первая программа

Что такое программирование

Программирование — это процесс написания команд, которые потом будет выполнять компьютер. Очень важно понимать, что компьютер не умеет думать. Все, что компьютер делает: он исполняет команды. У программиста может складываться впечатление, что происходит какое-то «колдунство» и компьютер вытворяет самолично с программой, что захочет. Но на самом деле, это будет только означать, что программист не учел каких-то особенностей функционирования программы или библиотек, которые он использует, или нюансов как работает внешний источник данных, к которому он обращается. Чем профессиональней программист — тем меньше «неожиданных чудес» можно ожидать от написанного им кода.

Программирование на Java состоит из нескольких этапов:

— Написание программы на языке Java в редакторе

— Компилирование программы в байт-код (код понятный виртуальной машине Java) с помощью программы-компилятора

— Исправление ошибок компиляции (compilation errors), если такие произошли в процессе компиляции

— Запуск программы в виртуальной машине Java.

— Исправление ошибок выполнения (runtime errors), если видим, что «что-то пошло не так»

— Повторение пунктов 2—5 пока мы не получили работающую по нашему замыслу программу.

Можно писать код в одном из текстовых редакторов (Notepad, Notepad++, Atom, Sublime) и потом дальше через командную строку запускать компилятор, а потом запускать программу. Но все это громоздко и неудобно, именно поэтому программисты написали специальные программы, в которых можно делать полный цикл разработки программы гораздо проще и удобнее. Такие программы называются IDE (Integrated Development Environment) — интегрированная среда разработки, в ней происходит и написание программы, и компиляция, и выявление ошибок, и запуск программы. К тому же, большинство из них еще и подсказывают разработчику, что и в каком случае можно использовать и где он возможно уже совершает ошибку.

В мире Java-программирования есть несколько популярных IDE: IntelliJ IDEA, Eclipse, NetBeans. NetBeans самая редко используемая IDE на текущее время. Eclipse — это бесплатная IDE, с тысячами полезных плагинов, облегчающая жизнь разработчика. Поэтому, вполне возможно, что в крупной компании, в которую вы придете работать, будут использовать именно Eclipse. И это стоит учитывать, потому что на самом деле вы захотите пользоваться только одной IDE: IntelliJ IDEA — лучшая и самая удобная IDE на текущий момент для написания программ на Java.

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

Так как предполагается, что мы изучаем с нуля, то мы не будем заморачиваться с установкой виртуальной машиной Java и полного пакета для разработчика Java SDK. Достаточно будет скачать текущую версию IntelliJ IDEA, в которой есть все что нам будет нужно для старта.

Заходим на сайт https://www.jetbrains.com/idea/download/

выбираем версию для скачивания: Ultimate (т.е. полную, но платную, хотя есть пробный период) или Community (тоже достаточную для наших целей)

Скачиваем и запускаем. Проходим через мастер установки, соглашаясь со всем что предлагают:

На Рабочем столе появится иконка приложения:

Дважды кликаем для запуска IntelliJ IDEA. И снова проходим еще через несколько экранов настройки (это будет только единожды):

не импортируем никакие настройки

Соглашаемся…

Выбираем светлую тему (это всегда можно изменить в настройках)

Я скачал версию Ultimate, поэтому выбираю пробный период

И вот финальный экран, где нужно кликнуть на Create New Project.

Слева должно быть выбрано Java, в центре вверху Project SDK: 11 (это версия Java, идущая вместе с IntelliJ IDEA), нажимаем Next.

Ставим галочку Create project from template, выбираем Command Line App и кликаем Next.

В поле Project name вводим HelloWorld (это название нашего проекта) и нажимаем Finish.

Никогда не используйте русских букв (кириллицы) в названиях проектов, классов и т. д.

IDEA немного «подумав» откроет нам основное окно, в котором мы будем разрабатывать наши программы, и также откроется поверх маленькое окошко «Tip of the Day» — просто закройте его кликнув Close.

Теперь вам нужно написать свою первую строку кода, вместо надписи:

// write your code here.

Напишите там:

System.out.println («Hello world!»);

И запустите вашу первую программу нажатием на зеленый треугольник:

В итоге ваша программы выведет, в специальной панели IDEA:

Hello world!

То, что написано ниже: «Process finished with exit code 0», означает, что программа завершилась без каких-либо явных ошибок. Поздравляю всех, кто дошел до этого последнего шага и успешно запустил первую программу!

Если же у вас что-то не получилось с установкой IntelliJ IDEA или с созданием программы — не переживайте и не волнуйтесь. Вы можете поступить как настоящий программист: вбейте в Google\Yandex «как установить IntelliJ IDEA», «создание Hello world в IntelliJ IDEA» и уже на первой странице результатов вашего поиска вы обязательно найдете статью, в которой пошагово вам покажут, как это сделать. Так же вы можете эти запросы вбить в YouTube — в 2020 году уже существует достаточное количество видеороликов с подобной информацией.

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

Глава 2. Данные

Программирование — это процесс написания команд, которые потом будет выполнять компьютер, чтобы манипулировать данными. Основная причина, почему компьютеры стали очень распространенными устройствами — они умеют очень быстро обрабатывать огромные объемы данных. Любая задача для программиста — это задача про управление и преобразования данных, чтобы получить результат — другие данные. Соответственно данные надо где-то хранить: исходные данные, чтобы их прочитать и начать использовать, результаты — для сохранения промежуточных результатов (например, при очень сложных расчетах) или для финальных значений.

Данные, используемые программой, хранятся в памяти компьютера. Такая память называется оперативной памятью (и чем ее больше, тем быстрее работает компьютер, тем больше вкладок можно открыть в браузере:)). Память состоит из маленьких ячеек памяти. Каждая ячейка хранит одно значение 0 или 1, и называется бит. Принято считать, что 8 бит — это 1 байт. 1024 байта — это 1 килобайт. 1024 килобайт — это 1 мегабайт. 1024 мегабайт — это 1 гигабайт. Ну а потом уже следуют тера-, пета-, экса-…. байты.

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

Типы данных

Использование типов данных — это добровольное ограничение использования памяти. Например, программист знает, что в расчетах будет использоваться значение не больше 77, поэтому он использует тип данных short, для хранения этого значений. Для больших значений — соответственно другие типы данных. Вообще в Java существует 8 примитивных типов данных:

boolean — хранит один бит информации;

byte — хранит один байт информации, и соответственно целочисленные значения от — 128 до 127 включительно;

short — хранит два байта информации, и соответственно целочисленные значение от — 32768 до 32767 включительно;

int — хранит четыре байта информации, и соответственно целочисленные значение от — 2147483648 до 2147483647 включительно;

long — хранит восемь байт информации, и соответственно целочисленные значения от — 9223372036854775808 (-2 в степени 63) до 9223372036854775807 (2 в степени 63 минус 1) включительно;

float — хранит четыре байта информации, и соответственно значения с плавающей точкой от 1.4х10—45 до 3.4х1038;

double — хранит восемь байт информации, и соответственно значения с плавающей точкой от 4.9х10—324 до 1.7х10308;

char — хранит 16 бит (2 байта), и соответственно символ в формате UTF.

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

В основном используют int и float, т.к. они покрывают большинство нужд.

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

Переменные

Переменная — это указатель на область памяти определенного типа. Вы можете думать обо всем этом как о большом складе. Вы приходите на склад (вся свободная память компьютера) и говорите «мне нужно содержимое коробки с таким-то именем» (переменная) и заведующий склада (виртуальная машина Java) дает вам это содержимое. Также вы можете не только взять, но и положить туда то, что вам необходимо. Но если коробка маленькая, а вы пытаетесь засунуть туда большое содержимое — заведующий склада не даст вам это сделать и скажет, что вы ошибаетесь.

Несколько примеров как это выглядит в коде:

int box1;

int box2 = 70;

box1 = 50;

int box3 = box1 + box2;

System.out.println (box3);

В первой строке мы определяем переменную box1 типа int.

Во второй строке мы определяем переменную box2 типа int, при этом мы сразу кладем туда (или как говорят программисты «присваиваем») значение 100.

В третьей строке мы присваиваем переменной box1 значение 50 (программисты еще говорят «переменная box1 проинициализирована значением 50»). Если мы этого не сделаем, то получим ошибку на этапе компиляции нашей программы: компилятор скажет, что нельзя в программе использовать переменные, у которых нет значений.

В четвертой строке мы складываем содержимое box1 и box2 и присваиваем новой переменной box3 тоже типа int.

В пятой строке выводим на экран (или как еще говорят «распечатываем на экране») значение переменной box3 (120).

Как долго живут переменные?

Чем больше и сложнее программа, тем больше различных данных придется хранить в различных переменных. Причем зачастую нам нужны переменные только на какое-то время совершения какой-то операции или нескольких операций. Стоит ли хранить даже такие «временные переменные»? — конечно же нет. И как раз для этого была придумана «область видимости переменной», которое определяет, как долго переменная «будет жить», т.е. будет доступна для использования. На практике область видимости определяется фигурными скобками {} — переменная объявленная и проинициализированная внутри фигурных скобок «умирает» как только поток выполнения программы выйдет за эти скобки. Отсюда следует несколько областей видимости:

— локальная переменная объявленная внутри метода (доступна только внутри метода)

— переменная объявленная внутри класса (доступна только внутри объекта, порожденного из класса)

— статическая переменная класса (доступна все время, т.к. класс «живет» все время пока исполняется программа)

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги JAVA 2021: лёгкий старт предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я