ebook img

Язык программирования Java PDF

250 Pages·1997·2.462 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Язык программирования Java

converted to PDF by BoJIoc Книга посвящается команде Java, чей упорный труд и умение предвидеть будущее вырастили могучее дерево. Посвящается Сьюзен - К. А. Посвящается Джуди и Кейт - Дж. Г. Об авторах этой книги Кен Арнольд, ведущий инженер Sun Microsystems Laboratories, является одним из экспертов в области объектно-ориентированных технологий. Он много пишет о программировании на C и C++ для UNIX Review. Кен Арнольд - автор книги «A C User's Guide to ANSI C». Джеймс Гослинг, член совета директоров и вице-президент Sun Microsystems, является создателем языка Java и одним из самых известных программистов в современном компьютерном мире. В 1996 году ему была присуждена премия «Programming Excellence Award». Ранее он участвовал в разработке NeWS (Network-extensible Window System, сетевой расширяемой оконной системы компании Sun), а также в проекте Andrew в университете Карнеги-Мэллон, где получил докторскую степень. ПРЕДИСЛОВИЕ Красивые здания - нечто большее, чем создание науки. Это настоящие живые организмы, постигаемые на духовном уровне; это произведения искусства, в которых современная технология подчиняется вдохновению более, нежели вопросам вкуса и соображениям житейской пользы. Фрэнк Ллойд Райт Язык программирования Java (в дальнейшем именуемый просто Java) был тепло встречен мировым сообществом программистов и провайдеров Internet-услуг. Его преимущество для пользователей Internet и World Wide Web заключается в появлении безопасных, платформонезависимых приложений, которые могут использоваться в любом узле Internet. Программисты, создающие приложения на Java, пишут свой код всего один раз - им не приходится «переносить» свои приложения на все возможные программные и аппаратные платформы. Многие рассматривают Java в первую очередь как средство создания аплетов для World Wide Web. Термином «аплет» в Java обозначается мини-приложение, работающее внутри Web-страницы. После того как аплет загружен на компьютер пользователя, он может выполнять определенные задачи и взаимодействовать с пользователем через броузер, не требуя ресурсов Web-сервера. Разумеется, некоторые аплеты могут взаимодействовать с сервером для решения своих внутренних задач, но это их личное дело. Java является действительно ценным инструментом разработки в распределенных сетевых средах, к которым относится World Wide Web. Тем не менее Java не ограничивается этими рамками и представляет собой мощный универсальный язык программирования, подходящий для создания самых разнообразных приложений, которые либо не зависят от сетевых средств, либо используют их нестандартным образом. Способность Java безопасно выполнять код на удаленных хост-машинах оказалась очень кстати во многих крупных организациях. Кроме того, Java используется как язык программирования общего назначения для реализации тех проектов, в которых платформенная независимость не так важна. Простота программирования и средства безопасности позволяют быстро создавать отлаженный код. Некоторые распространенные в других языках ошибки в программах на Java вообще не встречаются благодаря таким средствам, как сборка мусора и ссылки, безопасные по отношению к типам. Современные приложения, работающие в сетевых converted to PDF by BoJIoc условиях и применяющие графический пользовательский интерфейс, которым приходится одновременно обслуживать несколько задач, используют поддержку многопоточности в Java, а механизм исключений облегчает обработку ошибок. Несмотря на всю мощь своих встроенных средств, Java - это простой язык, который быстро осваивается программистами. Язык Java проектировался с расчетом на максимальную переносимость и на минимальную зависимость от конкретной системы. Например, во всех реализациях Java тип int представляет собой 32-разрядное число со знаком, дополняемое по модулю 2, независимо от архитектуры процессора, на котором выполняется Java-программа. Определение всех стандартов, касающихся языка и его runtime-среды, позволяет выполнять скомпилированный код в каком угодно месте и переносить его на любую машину, где присутствует среда Java. Java обладает многими языковыми средствами, присущими большинству современных языков программирования. Тем не менее, в отличие от С и C++, Java автоматизирует хранение переменных и обработку исключений, дополняя их поддержкой многопоточности. Об этой книге Книга обучает программированию на Java и рассчитана на читателей, знакомых с основными концепциями программирования. Язык Java рассматривается в ней без претензий на формальность или полноту описания. Книга не является пособием по объектно-ориентированному программированию, хотя некоторые его аспекты рассматриваются для выработки общей терминологии. Программистам на C и C++ язык Java должен показаться знакомым, поскольку в нем используются многие конструкции этих языков. Другие книги данной серии, а также большая часть онлайновой документации посвящены программированию аплетов (см. ссылки, приведенные в разделе «Библиография»). Глава 1 - «Первое знакомство с Java» - содержит краткий обзор Java. Программистам, не владеющим концепциями объектно-ориентированного программирования, следует внимательно прочитать эту главу, а для остальных она станет полезным введением в объектно-ориентированные возможности Java. В главах 2, 3 и 4 рассматриваются фундаментальные аспекты объектно-ориентированного программирования в Java, а именно объявления классов, их реализация и создание объектов на основе определений классов. Глава 2 - «Классы и объекты» - описывает основы языка Java. Глава 3 - «Расширение классов» - посвящена расширению, или субклассированию, существующих классов, в результате которого появляются новые классы со своими данными и другим поведением. Глава 4 - «Интерфейсы» - рассказывает о том, как объявляются интерфейсы, представляющие собой абстрактные описания поведения объектов, обеспечивающие максимальную гибкость для проектировщиков и программистов. В главах 5 и 6 рассматриваются стандартные языковые конструкции, общие для большинства языков программирования. Глава 5 - «Лексемы, операторы и выражения» - посвящена лексемам языка, его операторам, их использованию для построения выражений и процессу вычислений. Глава 6 - «Порядок выполнения» - показывает, каким образом управляющие операторы изменяют последовательность выполнения операторов в программе. Глава 7 - «Исключения» - посвящена очень мощному средству Java - обработке исключений. Глава 8 - «Строки» - описывает встроенные языковые и runtime-средства для работы с объектами String. converted to PDF by BoJIoc В главе 9 - «Потоки» - объясняется, как в Java реализована многопоточность. Многие приложения (в частности, те, что основаны на графическом интерфейсе пользователя) должны одновременно обслуживать несколько задач. Чтобы обеспечить их правильное функционирование, необходимо организовать надлежащее взаимодействие между ними. Потоки Java отвечают таким требованиям. Глава 10 - «Пакеты» - описывает механизм группировки классов Java в отдельные пакеты. В главах с 11 по 14 рассматриваются основные пакеты, входящие в библиотеку классов Java. Глава 11 - «Пакет ввода/вывода» - описывает систему ввода/вывода. Глава 12 - «Стандартные вспомогательные средства» - посвящена вспомогательным классам (utility classes), к которым относятся векторы и хеш-таблицы. В главе 13 - «Применение типов в программировании» - рассматриваются классы Java, относящиеся к таким типам, которые представляют собой как отдельные объекты, описывающие класс или интерфейс, так и классы, служащие «оболочками» для примитивных типов данных (в частности, целых и вещественных значений). Глава 14 - «Системное программирование» - объясняет, как получить доступ к системным средствам. Приложение А показывает, каким образом в Java поддерживаются родные методы (native methods) - средства для работы с кодом, написанным на «родном» языке программирования базовой платформы. В приложении Б перечисляются все runtime-исключения и ошибки, возбуждаемые самой системой Java. Приложение В содержит ряд полезных таблиц, которые пригодятся для справочных целей. Наконец, в разделе «Библиография» приведены ссылки, которые могут представлять интерес при дальнейшем знакомстве с объектно-ориентированным программированием, многопоточностью и другими темами. Примеры и документация Все примеры были откомпилированы и запущены с помощью последней версии языка (FCS-версия Java 1.0.2), существовавшей на момент написания книги. Вообще говоря, нами рассматривается язык Java 1.0.2. Мы также уделили внимание некоторым аспектам, выходящим за пределы написания безошибочно компилируемых программ, - просто пользоваться языком недостаточно, нужно делать это правильным образом. Мы попытались объяснить, что такое хороший стиль программирования. В ряде мест встречаются ссылки на онлайновую документацию. Среда разработки Java позволяет автоматически генерировать файл справки (обычно в формате HTML) по откомпилированному классу с помощью документирующих комментариев. Для просмотра таких файлов обычно используется Web-броузер. Ни одна техническая книга не пишется «на необитаемом острове», а в нашем случае уместней было бы говорить о целом континенте. Множество людей помогало авторам полезными советами, точными рецензиями, ценной информацией и рекомендациями. Редактор Генри Мак-Гилтон (Henry McGilton) из Trilithon Software содействовал разрешению всех проблем и внес немалый вклад в создание книги. Редактору серии Лайзе Френдли (Lisa Friendly) мы обязаны беззаветной настойчивостью и поддержкой. Многие рецензенты выделили свое драгоценное время на чтение, редактирование, пересмотр и удаление материала, и все это ради улучшения книги. Кевин Койл (Kevin Coyle) написал одну из самых подробных рецензий. Карен Беннет (Karen Bennet), Майк Бурати (Mike Burati), Патриция Гинке (Patricia Giencke), Стив Гильяр (Steve Gilliard), Билл converted to PDF by BoJIoc Джой (Bill Joy), Розанна Ли (Rosanna Lee), Джон Мэдисон (Jon Madison), Брайан О'Нейл (Brian O'Neill), Сью Палмер (Sue Palmer), Стивен Перелгат (Stephen Perelgut), Р. Андерс Шнайдерман (R. Anders Schneidermann), Сьюзен Сим (Susan Sim), Боб Спраул (Bob Sproull), Гай Стил (Guy Steele), Артур Ван Хофф (Arthur Van Hoff), Джим Уолдо (Jim Waldo), Грег Уилсон (Greg Wilson) и Энн Уолрат (Ann Wollrath) представили нам свои содержательные рецензии. Джефф Арнольд (Geoff Arnold), Том Карджилл (Tom Kargill), Крис Дэрк (Chris Darke), Пэт Финнеган (Pat Finnegan), Майк Джордан (Mike Jordan), Дуг Ли (Doug Lea), Рэндалл Мюррей (Randall Murray), Роджер Риггс (Roger Riggs), Джимми Торрес (Jimmy Torres), Артур Ван Хофф (Arthur Van Hoff) и Фрэнк Йеллин (Frank Yellin) предоставили полезные комментарии и техническую информацию. Алка Дешпанд (Alka Deshpande), Шерон Фланк (Sharon Flank), Нассим Фотухи (Nassim Fotouhi), доктор К. Калаянасундарам (Dr. K. Kalayanasundaram), Патрик Мартин (Patrick Martin), Пол Романья (Paul Romagna), Сьюзен Снайдер (Susan Snyder) и Николь Янкелович (Nicole Yankelovich) своими совместными усилиями сделали возможными пять слов на стр. , не относящихся к кодировке ISO-Latin-1. Джим Арнольд (Jim Arnold) предоставил информацию о правильном написании, использовании и этимологии слов smoog и moorge. Эд Муни (Ed Mooney) помог подготовить документацию. Херб (Herb) и Джой Кайзер (Joy Kaiser) были нашими консультантами по хорватскому языку. Куки Каллахан (Cookie Callahan), Роберт Пирс (Robert Pierce) и Рита Тавилла (Rita Tavilla) помогли сдвинуть проект с мертвой точки, когда он собирался остановиться всерьез и надолго. Благодарим Ким Полез (Kim Polese) за краткую формулировку причин, по которым язык Java важен как для пользователей, так и для программистов. В критические моменты нам помогали своими советами и поддержкой Сьюзен Уолдо (Susan Waldo), Боб Спраул (Bob Sproull), Джим Уолдо (Jim Waldo) и Энн Уолрат (Ann Wollrath). Спасибо нашим семьям, которые не только дарили нас своей любовью, но и не дали нам зачахнуть за работой, за что мы им глубоко благодарны. Выражаем искреннюю признательность персоналу фирмы Peets Coffee and Tea, который снабжал нас лучшим кофе Java на всей планете. Любые ошибки или недочеты, оставшиеся в этой книге (несмотря на все усилия перечисленных выше лиц), лежат исключительно на совести авторов. Глава 1 ПЕРВОЕ ЗНАКОМСТВО С JAVA Посмотрите Европу! Десять стран за семнадцать дней! Реклама в туристическом агентстве В этой главе представлен краткий обзор языка программирования Java. После его прочтения вы сможете написать свое первое Java-приложение. Здесь мы рассмотрим только основные возможности языка, не задерживаясь на деталях. Конкретные свойства Java подробно изучаются в последующих главах. 1.1. С самого начала Программы на языке Java строятся на основе классов. Руководствуясь определением класса, разработчик создает произвольное количество объектов, или экземпляров, данного класса. Класс и его объекты можно сравнить, соответственно, с чертежом и деталями — имея чертеж, не составляет труда произвести необходимое количество деталей. converted to PDF by BoJIoc Класс содержит в себе члены двух видов: поля и методы. Полями называются данные, принадлежащие либо самому классу, либо его объектам; значения полей определяют состояние объекта или класса. Методами называются последовательности операторов, выполняющих какие-либо действия с полями для изменения состояния объекта. По сложившейся традиции первая программа на изучаемом языке программирования должна выводить строку Hello, world. Текст такой программы на Java выглядит следующим образом: class HelloWorld { public static void main(String[] args) { System.out.println(“Hello, world”); } } Воспользуйтесь своим любимым редактором и введите исходный текст программы в файл. Затем запустите компилятор Java, чтобы преобразовать исходный текст в байт-код Java, “машинный язык” виртуальной абстрактной машины Java. Набор текста программы и ее компиляция в разных системах могут производиться по-разному и потому здесь не описываются — за информацией следует обратиться к соответствующей документации. Если запустить программу, на экране появится: Hello, world Наше маленькое приложение на языке Java что-то делает — но, собственно, как это происходит? В приведенной выше программе объявляется класс с именем HelloWorld, который содержит всего один метод main. Члены класса перечисляются внутри фигурных скобок { и }, следующих за именем класса. HelloWorld содержит один метод и не имеет полей. Единственным параметром метода main является массив объектов String, которые представляют собой аргументы программы из командной строки, использованной для запуска. Массивы и строки, а также значение args для метода main рассматриваются ниже. Метод main объявлен с ключевым словом void, поскольку он не возвращает никакого значения. В Java этот метод имеет особое значение; метод main класса, объявленный так, как показано выше, выполняется, если запустить класс как приложение. При запуске метод main может создавать объекты, вычислять значения выражений, вызывать другие методы и делать все то, что заложил в него программист. В приведенном выше примере main содержит всего один оператор, вызывающий метод println объекта out класса System. Для вызова метода необходимо указать объект и название метода, разделив их точкой (.). Метод println объекта out выводит в стандартный выходной поток строку текста и символ перехода на новую строку. Упражнение 1.1 Наберите, откомпилируйте и запустите программу HelloWorld на вашем компьютере. Упражнение 1.2 Попробуйте изменить различные части программы HelloWorld и ознакомьтесь с полученными сообщениями об ошибках. converted to PDF by BoJIoc 1.2. Переменные Следующий пример выводит числа Фибоначчи — бесконечную последовательность, первые члены которой таковы: 1 1 2 3 5 8 13 21 34 Ряд чисел Фибоначчи начинается с 1 и 1, а каждый последующий его элемент представляет собой сумму двух предыдущих. Программа для печати чисел Фибоначчи несложна, но она демонстрирует объявление переменных, работу простейшего цикла и выполнение арифметических операций: class Fibonacci { /** Вывод чисел Фибоначчи < 50 */ public static void main(String[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; // Изменение значения hi lo = hi — lo; /* Новое значение lo равно старому hi, то есть сумме за вычетом старого lo */ } } } В этом примере объявляется класс Fibonacci, который, как и Hello World, содержит метод main. В первых строках метода main объявляются и инициализируются две переменные, hi и lo. Перед именем переменной должен быть указан ее тип. Переменные hi и lo относятся к типу int — то есть являются 32-разрядными целыми числами со знаком, лежащими в диапазоне от –232 до 232–1. В языке Java имеется несколько встроенных, “примитивных” типов данных для работы с целыми, вещественными, логическими и символьными значениями. Java может непосредственно оперировать со значениями, относящимися к примитивным типам, — в отличие от объектов, определяемых программистом. Типы, принимаемые “по умолчанию”, в Java отсутствуют; тип каждой переменной должен быть указан в программе. В Java имеются следующие примитивные типы данных: boolean одно из двух значений: true или false char 16-разрядный символ в кодировке Unicode 1.1 byte 8-разрядное целое (со знаком) converted to PDF by BoJIoc short 16-разрядное целое (со знаком) int 32-разрядное целое (со знаком) long 64-разрядное целое (со знаком) float 32-разрядное с плавающей точкой (IEEE 754-1985) double 64-разрядное с плавающей точкой (IEEE 754-1985) В программе для вывода чисел Фибоначчи переменным hi и lo было присвоено значение 1. Начальные значения переменных можно задавать при их объявлении с помощью оператора = (это называется инициализацией). Переменной, находящейся слева от оператора =, присваивается значение выражения справа от него. В нашей программе переменная hi содержит последнее число ряда, а lo — предыдущее число. До инициализации переменная имеет неопределенное значение. Если вы попробуете воспользоваться переменной до того, как ей было присвоено значение, компилятор Java откажется компилировать программу до тех пор, пока ошибка не будет исправлена. Оператор while в предыдущем примере демонстрирует один из вариантов циклов в Java. Программа вычисляет выражение, находящееся в скобках после while, — если оно истинно, то выполняется тело цикла, после чего выражение проверяется снова. Цикл while выполняется до тех пор, пока выражение не станет ложным. Если оно всегда остается истинным, программа будет работать бесконечно, пока какое-либо обстоятельство не приведет к выходу из цикла — скажем, встретится оператор break или возникнет исключение. Условие, проверяемое в цикле while, является логическим выражением, принимающим значение true или false. Логическое выражение, приведенное в тексте программы, проверяет, не превысило ли текущее число ряда значение 50. Если большее число ряда (hi) меньше 50, то оно выводится, а программа вычисляет следующее число Фибоначчи. Если же оно больше или равно 50, то управление передается в строку программы, находящуюся после тела цикла while. В нашем примере такой строкой оказывается конец метода main, так что работа программы на этом завершается. Обратите внимание на то, что в приведенном выше примере методу println передается целочисленный аргумент, тогда как в HelloWorld его аргументом была строка. Метод println является одним из многих методов, которые перегружаются (overloaded), чтобы их можно было вызывать с аргументами различных типов. Упражнение 1.3 Выведите заголовок перед списком чисел Фибоначчи. Упражнение 1.4 Напишите программу, которая генерирует другой числовой ряд, — например, таблицу квадратов (умножение выполняется с помощью оператора * — например, i * i). 1.3. Комментарии Текст на русском языке в нашей программе представляет собой комментарий. В Java предусмотрены комментарии трех видов — все они встречаются в нашем примере. Текст, следующий за символами // вплоть до конца строки, игнорируется компилятором; то же самое относится и к тексту, заключенному между символами /* и */. converted to PDF by BoJIoc Комментарии позволяют добавлять описания и пояснения для тех программистов, которым в будущем придется разбираться в вашей программе. Вполне возможно, что на их месте окажетесь вы сами через несколько месяцев или даже лет. Комментируя свою программу, вы экономите собственное время. Кроме того, при написании комментариев нередко обнаруживаются ошибки в программе — когда приходится объяснять кому-то, что происходит, то поневоле задумываешься над этим сам. Комментарий третьего типа встречается в самом начале программы, между символами /** и */. Комментарий, начинающийся с двух звездочек, является документирующим. Документирующие комментарии используются для описания назначения следующего за ними фрагмента программы; в нашем примере характеризуется метод main. Специальная программа, которая называется javadoc, извлекает документирующие комментарии и генерирует по ним справочный файл в формате HTML. 1.4. Именованные константы Константами называются фиксированные значения — например, 12, 17.9 или “String like this”. С их помощью можно работать с величинами, которые не вычисляются заново, а остаются постоянными во всем жизненном цикле программы. Программисты предпочитают иметь дело с именованными константами по двум причинам. Первая из них заключается в том, что имя константы представляет собой некоторую форму документации. Оно может (и должно!) описывать, для чего используется то или иное значение. Другая причина в том, что именованная константа определяется всего в одном месте программы. Когда ее значение понадобится изменить, это достаточно будет сделать в одном месте, что заметно упрощает модификацию программы. Чтобы создать именованную константу в Java, следует указать в ее объявлении ключевые слова static и final и задать начальное значение: class CircleStuff { static final double p = 3.1416; } Если вдруг окажется, что точности в четыре цифры после десятичной точки недостаточно, значение p легко изменить. Мы объявили p как переменную типа double — 64-разрядное число с плавающей точкой с двойной точностью, так что p можно задать и поточнее — скажем, 3.14159265358979323846. Взаимосвязанные константы можно группировать в рамках класса. Например, в карточной игре могут пригодиться следующие константы: class Suit { final static int CLUBS = 1; final static int DIAMONDS = 2; final static int HEARTS = 3; final static int SPADES = 4; }; При такой группировке на масти можно ссылаться как на Suit.HEARTS, Suit.SPADES и т. д. — все названия мастей сосредоточены в пределах одного класса Suit. converted to PDF by BoJIoc 1.4.1. Символы Unicode Давайте ненадолго остановимся и обратим внимание на символ p, использованный в качестве имени константы в предыдущем примере. В большинстве языков программирования идентификаторы обычно ограничиваются буквами и цифрами, входящими в набор символов ASCII. Java вводит вас в современный мир интернационального программного обеспечения; в Java используется кодировка Unicode — международный стандарт для набора символов. Символы Unicode состоят из 16 бит, благодаря чему обеспечивается поддержка букв, входящих в большинство языков мира. По-этому мы и смогли использовать p как имя константы в приведенном выше примере. Символ p входит в греческую секцию Unicode и, следовательно, может присутствовать в исходном тексте программы. В настоящее время при программировании, как правило, используется набор символов ASCII, 7-битная кодировка или ISO-Latin-1 — 8-битный стандарт, который обычно называется Latin-1. Однако перед обработкой эти символы переводятся в Unicode, так что в Java всегда используется кодировка Unicode. Упражнение 1.5 Измените приложение HelloWorld так, чтобы выводимая строка была представлена именованной константой. Упражнение 1.6 Измените приложение Fibonacci так, чтобы вместо константы-литерала (50) в условии цикла фигурировала именованная константа. 1.5. Порядок выполнения “Порядком выполнения” называется очередность, в которой выполняются операторы программы. Один из примеров воздействия на порядок выполнения — цикл while в программе для вывода чисел Фибоначчи. К числу других операторов, изменяющих порядок выполнения, относятся конструкции if/else, for, switch, do/while и блоки — несколько операторов, сгруппированных внутри фигурных скобок { и }. Давайте усовершенствуем программу для вывода чисел Фибоначчи — перенумеруем все члены последовательности и пометим нечетные числа звездочкой: /** Вывести несколько первых чисел Фибоначчи, помечая нечетные числа символом ‘*’ */ static final int MAX_INDEX = 10; public static void main (String[] args) { int lo = 1; int hi = 1; String mark; System.out.println(“1: ” + lo); for (int i = 2; i < MAX_INDEX; i++) { if (hi % 2) == 0) mark = “ *”; else mark = “”; System.out.println(i + “: ” + hi + mark); hi = lo + hi; // Изменение значения hi lo = hi — lo; /* Новое значение lo равно старому hi, то есть сумме за вычетом старого lo */ converted to PDF by BoJIoc } } } Вот как выглядит результат работы программы: 1: 1 2: 1 3: 2 * 4: 3 5: 5 6: 8 * 7: 13 8: 21 9: 34 * Для упрощения нумерации ряда вместо while используется цикл for. Цикл for является частным случаем while с добавлением инициализации и приращения переменной цикла. Приведенный выше цикл for эквивалентен следующему циклу while: { int i = 2; while (i < MAX_INDEX) { // .. вывод i++; } } Оператор ++ в этом фрагменте может показаться непонятным тому, кто не знаком с языками программирования, восходящими к C. Этот оператор увеличивает на единицу значение переменной, к которой он применяется, — в данном случае, i. Оператор ++ является префиксным, если он стоит перед операндом, и постфиксным, если он стоит после него. Аналогично, оператор — уменьшает на единицу значение переменной, к которой он применяется, и также может быть префиксным или постфиксным. Операторы ++ и — ведут свое происхождение из языка программирования C. В приведенном выше примере оператор i++; может быть заменен выражением i = i + 1; Помимо простого присваивания, в Java имеются и другие операторы присваивания, которые применяют арифметические действия к значению в их левой части. Например, еще одна возможность представить i++ в цикле for может быть такой: i += 1; Значение в правой части оператора += (то есть 1) прибавляется к значению переменной в левой части (то есть i), и результат записывается в ту же переменную. Большинство бинарных операторов в Java (другими словами, операторов с двумя операндами) может аналогичным образом объединяться с оператором =.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.