В результате выполнения данной программы на экране появится следующий результат:1.0 gallons is 3.7854 liters.2.0 gallons is 7.5708 liters.3.0 gallons is 11.356200000000001 liters.4.0 gallons is 15.1416 liters.5.0 gallons is 18.927 liters.6.0 gallons is 22.712400000000002 liters.7.0 gallons is 26.4978 liters.8.0 gallons is 30.2832 liters.9.0 gallons is 34.0686 liters.10.0 gallons is 37.854 liters.11.0 gallons is 41.6394 liters.12.0 gallons is 45.424800000000005 liters.13.0 gallons is 49.2102 liters.14.0 gallons is 52.9956 liters.15.0 gallons is 56.781 liters.16.0 gallons is 60.5664 liters.17.0 gallons is 64.3518 liters.18.0 gallons is 68.1372 liters.19.0 gallons is 71.9226 liters.20.0 gallons is 75.708 liters.21.0 gallons is 79.49340000000001 liters.22.0 gallons is 83.2788 liters.24.0 gallons is 90.84960000000001 liters25.0 gallons is 94.635 liters.26.0 gallons is 98.4204 liters.27.0 gallons is 102.2058 liters.28.0 gallons is 105.9912 liters.29.0 gallons is 109.7766 liters.30.0 gallons is 113.562 liters.Ключевые слова Java
В настоящее время в языке Java определено пятьдесят ключевых слов (табл. 1.1). Вместе с синтаксисом операторов и разделителями они образуют определение языка Java. Ключевые слова нельзя использовать в качестве имен переменных, классов или методов.
Ключевые слова const и goto зарезервированы, но не используются. На ранних этапах развития Java для дальнейшего использования были зарезервированы и другие ключевые слова. Но в текущем определении (так называемой спецификации) Java определены только те ключевые слова, которые представлены в табл. 1.1.
Помимо ключевых слов, в Java зарезервированы также логические значения true, falsennull. Их нельзя использовать для обозначения переменных, классов и других элементов программ.
Таблица 1.1. Ключевые слова JavaabstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhileИдентификаторы в Java
в JavaВ Java идентификатор обозначает имя метода, переменной или элемента, определяемых пользователем. Идентификатор может содержать один или несколько символов. Имя переменной может начинаться с любой буквы, знака подчеркивания или денежной единицы. Далее могут следовать буквы, цифры, знак подчеркивания или денежной единицы. Знак подчеркивания обычно применяется для того, чтобы сделать имя более удобным для восприятия, например line count.
В Java символы нижнего и верхнего регистра различаются, т.е. myvar и MyVar — это имена разных переменных. Ниже приведен ряд примеров допустимых в Java идентификаторов.TestXУ2MaxLoad$up_topmy_varsample23
Как упоминалось выше, идентификатор на может начинаться с цифры. Например, идентификатор 12х недопустим.
В качестве идентификаторов нельзя использовать ключевые слова Java. Для этой цели нельзя использовать также имена стандартных методов, например println. Эти ограничения необходимо соблюдать. Кроме того, профессиональный стиль программирования предполагает употребление имен, отражающих назначение соответствующих элементов.Библиотеки классов Java
В примерах программ, представленных в этой главе, применяются два встроенных в Java метода: println () и print (). Эти методы являются членами класса System, который предопределен в Java и автоматически включается в состав любой программы. В более широком смысле среда Java включает в себя ряд встроенных библиотек классов, содержащих большое количество методов. Они обеспечивают поддержку ввода-вывода, операций с символьными строками, сетевого взаимодействия и отображения графики. Стандартные классы также реализуют оконный вывод. Таким образом, Java представляет собой сочетание собственно языка и стандартных классов. Как станет ясно в дальнейшем, многими своими функциональными возможностями язык Java обязан именно библиотекам классов. Поэтому научиться грамотно программировать Java невозможно, не усвоив стандартные классы. На протяжении всей остальной части книги вам будет встречаться описание различных классов и методов из стандартных библиотек. Но в одной книге невозможно описать все библиотеки, поэтому полученные знания основ Java вам придется пополнить в процессе самостоятельной работы.Упражнение для самопроверки по материалу главы 1
Что такое байт-код и почему он так важен для интернет-программирования на языке Java?
Каковы три основных принципа объектно-ориентированного программирования?
С чего начинается выполнение программы на Java?
Что такое переменная?
Какое из перечисленных ниже имен переменных недопустимо?
a. countb. $countc. count27d. 67count
Как создать однострочный комментарий? И как создать многострочный комментарий?
Как выглядит общая форма условного оператора if? И как выглядит общая форма цикла for?
Как создать кодовый блок?'
Сила тяжести на Луне составляет около 17% земной. Напишите программу, которая вычисляла бы ваш вес на Луне.
Видоизмените программу, созданную в примере для опробования 1.2, таким образом, чтобы она выводила таблицу преобразования дюймов в метры. Выводите значения длины до 12 футов через каждый дюйм. После каждых 12 дюймов выводите пустую строку. (Один метр приблизительно равен 39,37 дюйма.)
Если при вводе кода программы вы допустите опечатку, то какого рода сообщение об ошибке получите?
Имеет ли значение, в каком именно месте строки находится оператор?
Глава 2 Введение в типы данных и операторы
Основные навыки и понятия
Представление о простых типах данных в Java
Применение литералов
Инициализация переменных
Правила соблюдения области действия переменных в методе
Применение арифметических операторов
Применение операторов сравнения и логических операторов
Представление об операторах присваивания
Представление об укороченных операторах присваивания
Преобразование типов при присваивании
Представление о неприводимых типах данных
Преобразование типов в выражениях
Основу любого языка программирования составляют типы данных и операторы, и Java не является исключением из этого правила. Типы данных и операторы определяют область применимости языка и круг задач, которые можно успешно решать с его помощью. В Java поддерживаются самые разные типы данных и операторы, что делает этот язык универсальным и пригодным для написания любых программ.
Значение типов данных и операций нельзя недооценивать. Эта глава начинается с анализа основных типов данных и наиболее часто используемых операторов. А кроме того, в ней будут подробно рассмотрены переменные и выражения.Особое значение типов данных
В связи с тем, что Java относится к категории строго типизированных языков программирования, типы данных имеют в нем очень большое значение. В процессе компиляции проверяются типы операндов во всех операциях. И если в программе встречаются недопустимые операции, ее исходный код не преобразуется в байт-код. Контроль типов позволяет сократить количество ошибок и повысить надежность программы. В отличие от других языков программирования, где допускается не указывать типы данных, хранящихся в переменных, в Java все переменные, выражения и значения строго контролируются на соответствие типов данных. Более того, тип переменной определяет, какие именно операции могут быть выполнены над ней. Операции, разрешенные для одного типа данных, могут оказаться недопустимы для другого.Простые типы данных в Java
Встроенные типы данных в Java разделяются на две категории: объектно-ориентированные и необъектно-ориентированные. Объектно-ориентированные типы данных определяются в классах, о которых речь пойдет далее в книге. В основу языка Java положено восемь простых типов данных, приведенных в табл. 2.1 (их также называют элементарными, или примитивными). Термин простые указывает на то, что эти типы данных являются не объектами, а обычными двоичными значениями. Такие типы данных предусмотрены в языке для того, чтобы увеличить эффективность работы программ. Все остальные типы данных Java образуются на основе простых типов.
В Java четко определены области действия простых типов и диапазон допустимых для них значений. Эти правила должны соблюдаться при создании всех виртуальных машин. А поскольку программы на Java должны быть переносимыми, точное следование этим правилам является одним из основных требований языка. Например, тип int остается неизменным в любой исполняющей среде, благодаря чему удается обеспечить реальную переносимость программ. Это означает, что при переходе с одной платформы на другую не приходится переписывать код. И хотя строгий контроль типов может привести к незначительному снижению производительности в некоторых исполняющих средах, он является обязательным условием переносимости программ.
Таблица 2.1. Простые типы, встроенные в JavaТипОписаниеbooleanПредставляет логические значения true и falsebyte8-разрядное целое числоcharСимволdoubleЧисловое значение с плавающей точкой двойной точностиfloatЧисловое значение с плавающей точкой одинарной точностиintЦелое числоlongДлинное целое числоshortКороткое числоЦелочисленные типы данных
В Java определены четыре целочисленных типа данных: byte, short, int и long. Их краткое описание приведено ниже.ТипРазрядность, битДиапазон допустимых значенийbyte8от-128 до 127short16от -32,768 до 32,767int32от -2,147,483,648 до 2,147,483,647long64от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807
Как следует из приведенной выше таблицы, целочисленные типы данных предполагают как положительные, так и отрицательные значения. В Java не поддерживаются целочисленные значения без знака, т.е. только положительные целые числа. Во многих других языках программирования широко применяются целочисленные типы данных без знака, но создатели Java посчитали их излишними.
На заметкуВ исполняющей системе Java для хранения простых типов может формально выделяться любой объем памяти, но диапазон допустимых значений остается неизменным.
Из всех целочисленных типов данных чаще всего применяется int. Переменные типа int нередко используются в качестве переменных циклов, индексов массивов и, конечно же, для выполнения универсальных операций над целыми числами.
Если диапазон значений, допустимых для типа int, не устраивает, можно выбрать тип long. Ниже приведен пример программы для расчета числа кубических дюймов в кубе, длина, ширина и высота которого равны одной миле./*Расчет числа кубических дюймов в кубе объемом в 1 милю.*/class Inches { public static void main(String args[]) { long ci; long im; im = 5280 * 12; ci = im * im * im; System.out.println("There are " + ci + " cubic inches in cubic mile."); }}
Результат выполнения данной программы выглядит следующим образом:There are 254358061056000 cubic inches in cubic mile.
Очевидно, что результирующее значение не умещается в переменной типа int.
Наименьшим диапазоном допустимых значений среди всех целочисленных типов обладает тип byte. Переменные типа byte очень удобны для обработки исходных двоичных данных, которые могут оказаться несовместимыми с другими встроенными в Java типами данных. Тип short предназначен для хранения небольших целых чисел. Переменные данного типа пригодны для хранения значений, изменяющихся в относительно небольших пределах по сравнению со значениями типа int.Типы данных с плавающей точкой
Как пояснялось в главе 1, типы с плавающей точкой могут представлять числовые значения с дробной частью. Существуют два типа данных с плавающей точкой: float и double. Они представляют числовые значения с одинарной и двойной точностью соответственно. Разрядность данных типа float составляет 32 бита, а разрядность данных типа double — 64 бита.
Тип double употребляется намного чаще, чем float, поскольку во всех математических функциях из библиотек классов Java используются значения типа double. Например, метод sqrt (), определенный в стандартном классе Math, возвращает значение double, являющееся квадратным корнем значения аргумента этого метода, также представленного типом double. Ниже приведен фрагмент кода, в котором метод sqrt () используется для расчета длины гипотенузы треугольника, при условии, что заданы длины катетов./*Определение длины гипотенузы, исходя из длины катетов по теореме Пифагора.*/class Hypot { public static void main(String args[]) { double x, y, z; x = 3; У = 4; // Обратите внимание на вызов метода sqrt(). Перед именем метода // указывается имя класса, членом которого он является. z = Math.sqrt(х*х + у*у); System.out.println("Hypotenuse is " + z) ; }}
Выполнение этого фрагмента кода дает следующий результат:Hypotenuse is 5.0
Как упоминалось выше, метод sqrt () определен в стандартном классе Math. Обратите внимание на вызов этого метода в приведенном выше фрагменте кода: перед его именем указывается имя класса. Аналогичным образом перед именем метода println () указывается имена классов System.out. Имя класса указывается не перед всеми стандартными методами, но для некоторых из них целесообразно применять именно такой способ.Символы
В отличие от других языков в Java символы не являются 8-битовыми значениями. Вместо этого в Java символы всех языков мира представлены в уникоде (Unicode). Таким образом, в Java тип char представляет 16-разрядное значение без знака в диапазоне от О до 65536. Стандартный набор 8-разрядных символов в коде ASCII является подмножеством уникода. В нем коды символов находятся в пределах от 0 до 127. Следовательно, символы в коде ASCII по-прежнему допустимы в Java.
Переменной символьного типа может быть присвоено значение, которое записывается в виде символа, заключенного в одинарные кавычки. В приведенном ниже фрагменте кода показано, каким образом переменной ch присваивается буква S.char ch;ch = 'S’;
Отобразить значение типа char можно с помощью метода println (). В приведенной ниже строке кода показано, каким образом этот метод вызывается для вывода на экран значения символа, хранящегося в переменной ch.System.out.println("This is ch:" + ch) ;
Тип char представляет 16-разрядное значение без знака, а это означает, что над пе ременной символьного типа можно производить различные арифметические операции. Рассмотрим в качестве примера следующую программу://С символьными переменными можно обращаться, как с целочисленными,class CharArithDemo { public static void main(String args[]) { char ch; ch = ' X' ; System.out.println("ch contains " + ch) ; ch++; // переменную типа char можно инкрементировать System.out.println("ch is now " + ch) ; ch = 90; // переменной типа char можно присвоить целочисленное значение System.out.println("ch is now " + ch) ; }}
Ниже приведен результат выполнения данной программы.ch contains Xch is now Ych is now Z
В приведенной выше программе переменной ch сначала присваивается значение кода буквы X. Затем содержимое ch увеличивается на единицу, в результате чего оно превращается в код буквы Y — следующего по порядку символа в коде ASCII (а также в уникоде). После этого переменной ch присваивается значение 90, представляющее букву Z в коде ASCII (и в уникоде). А поскольку символам в коде ASCII соответствуют первые 127 значений в уникоде, то все приемы, обычно применяемые для манипулирования символами в других языках программирования, вполне работоспособны и в Java.Логический тип данных
Тип boolean представляет логические значения “истина” и “ложь”, для которых в Java зарезервированы слова true и false соответственно. Следовательно, переменная или выражение типа boolean может принимать одно из этих двух значений.
Ниже приведен пример программы, демонстрирующий применение типа boolean в коде.// Демонстрация обращения с логическими значениями,class BoolDemo { public static void main(String args[]) { boolean b; b = false; System.out.println("b is " + b); b = true; System.out.println("b is " + b); // Логическое значение можно использовать для // управления условным оператором if. if(b) System.out.println("This is executed."); b = false; if(b) System.out.println("This is not executed."); // Логическое значение получается в результате // выполнения оператора отношения. System.out.println("10 > 9 is " + (10 > 9)); }}