4.1 Простые типы
Простые типы в Java не являются объектно-ориентированными, они аналогичны простым типам большинства традиционных языков программирования. В Java имеется восемь простых типов: — byte, short, int, long, char, float, double и boolean. Их можно разделить на четыре группы:
Целые. К ним относятся типы byte, short, int и long. Эти типы предназначены для целых чисел со знаком.
Типы с плавающей точкой — float и double. Они служат для представления чисел, имеющих дробную часть.
Символьный тип char. Этот тип предназначен для представления элементов из таблицы символов, например, букв или цифр.
Логический тип boolean. Это специальный тип, используемый для представления логических величин.
В Java, в отличие от некоторых других языков, отсутствует автоматическое приведение типов. Несовпадение типов приводит не к предупреждению при трансляции, а к сообщению об ошибке. Для каждого типа строго определены наборы допустимых значений и разрешенных операций.
Целые числа
Ниже приведена таблица разрядностей и допустимых диапазонов для различных типов целых чисел.
Имя | Разрядность | Диапазон |
long | 64 | -9, 223, 372, 036, 854, 775, 808.. 9, 223, 372, 036, 854, 775, 807 |
Int | 32 | -2, 147, 483, 648.. 2, 147, 483, 647 |
Short | 16 | -32, 768.. 32, 767 |
byte | 8 | -128.. 127 |
Числа с плавающей точкой
Характеристики этих типов приведены в таблице.
Имя | Разрядность | Диапазон |
double | 64 | 1. 7е-308.. 1. 7е+ 308 |
float | 32 | 3. 4е-038.. 3. 4е+ 038 |
Символы
Поскольку в Java для представления символов в строках используется кодировка Unicode, разрядность типа char в этом языке — 16 бит. В нем можно хранить десятки тысяч символов интернационального набора символов Unicode. Диапазон типа char — 0..65536. Unicode — это объединение десятков кодировок символов, он включает в себя латинский, греческий, арабский алфавиты, кириллицу и многие другие наборы символов.
Хотя величины типа char и не используются, как целые числа, можно оперировать с ними так, как если бы они были целыми. Это дает возможность сложить два символа вместе, или инкрементировать значение символьной переменной.
Тип boolean
В языке Java имеется простой тип boolean, используемый для хранения логических значений. Переменные этого типа могут принимать всего два значения — true (истина) и false (ложь). Значения типа boolean возвращаются в качестве результата всеми операторами сравнения, например (а < b).
Объявление переменной
Основная форма объявления переменной такова:
тип идентификатор [ = значение];
Тип — это либо один из встроенных типов, то есть, byte, short, int, long, char, float, double, boolean, либо имя класса или интерфейса. Ниже приведено несколько примеров объявления переменных различных типов. Некоторые примеры включают в себя инициализацию начального значения. Переменные, для которых начальные значения не указаны, автоматически инициализируются нулем.
int a, b, с; | Объявляет три целых переменных а, b, с. |
int d = 3, e, f = 5; | Объявляет ещё целые переменные, инициализирует d и f. |
byte z = 22; | Инициализирует z. |
double pi = 3. 14159; | Объявляет число пи. |
char x = 'x'; | Переменная х получает значение 'х'. |
4.2. Операторы
В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса - арифметические, битовые, операторы сравнения и логические.
Арифметические операторы
Арифметические операторы используются для вычислений так же как в алгебре (см. таблицу со сводкой арифметических операторов ниже). Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом char можно, поскольку в Java тип char — это подмножество типа int.
Оператор | Результат | Оператор | Результат |
+ | Сложение | + = | Сложение с присваиванием |
- | вычитание (также унарный минус) | -= | Вычитание с присваиванием |
* | Умножение | * = | Умножение с присваиванием |
/ | Деление | /= | Деление с присваиванием |
% | деление по модулю | %= | Деление по модулю с присваиванием |
++ | Инкремент | -- | декремент |
Операторы отношения
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
Оператор | Результат |
== | равно |
!= | не равно |
> | больше |
/TD td меньше/td /TR TR td >= | больше или равно |
java IfElse April is in the Spring. switch Оператор switch обеспечивает ясный способ переключения между различными частями программного кода в зависимости от значения одной переменной или выражения. Общая форма этого оператора такова: switch ( выражение ) { case значение1: break; case значение2: break; case значением: break; default: } Результатом вычисления выражения может быть значение любого простого типа, при этом каждое из значений, указанных в операторах case, должно быть совместимо по типу с выражением в операторе switch. Все эти значения должны быть уникальными литералами. Если же вы укажете в двух операторах case одинаковые значения, транслятор выдаст сообщение об ошибке. Циклы Любой цикл можно разделить на 4 части — инициализацию, тело, итерацию и условие завершения. В Java есть три циклические конструкции: while (с пред-условием), do-while (с постусловием) и for (с параметровм). while Этот цикл многократно выполняется до тех пор, пока значение логического выражения равно true. Ниже приведена общая форма оператора while: [ инициализация; ] while ( завершение ) { тело; [итерация;] } Инициализация и итерация необязательны. Ниже приведен пример цикла while для печати десяти строк «tick». class WhileDemo { public static void main(String args[]) { int n = 10; while (n > 0) { System.out.println("tick " + n); n--; } } } do-while Иногда возникает потребность выполнить тело цикла по крайней мере один раз — даже в том случае, когда логическое выражение с самого начала принимает значение false. Для таких случаев в Java используется циклическая конструкция do-while. Ее общая форма записи такова: [ инициализация; ] do { тело; [итерация;] } while ( завершение ); В следующем примере тело цикла выполняется до первой проверки условия завершения. Это позволяет совместить код итерации с условием завершения: class DoWhile { public static void main(String args[]) { int n = 10; do { System.out.println("tick " + n); } while (--n > 0); } } for В этом операторе предусмотрены места для всех четырех частей цикла. Ниже приведена общая форма оператора записи for. for ( инициализация; завершение; итерация ) тело; Любой цикл, записанный с помощью оператора for, можно записать в виде цикла while, и наоборот. Если начальные условия таковы, что при входе в цикл условие завершения не выполнено, то операторы тела и итерации не выполняются ни одного раза. В каноническая форме цикла for происходит увеличение целого значения счетчика с минимального значения до определенного предела. class ForDemo { public static void main(String args[]) { for (int i = 1; i 0; n--) System.out.println("tick " + n); } } continue В некоторых ситуациях возникает потребность досрочно перейти к выполнению следующей итерации, проигнорировав часть операторов тела цикла, еще не выполненных в текущей итерации. Для этой цели в Java предусмотрен оператор continue. Ниже приведен пример, в котором оператор continue используется для того, чтобы в каждой строке печатались два числа. class ContinueDemo { public static void main(String args[]) { for (int i=0; i < 10; i++) { System.out.print(i + " "); if (i % 2 == 0) continue; System.out.println(""); } }} Если индекс четный, цикл продолжается без вывода символа новой строки. Результат выполнения этой программы таков: С: \> java ContinueDemo 0 1 2 3 4 5 5 7 8 9 Глава 6. Java, как объектно-ориентированный язык. Система Java создавалась объектно-ориентированной с самого начала. Объектно-ориентированная парадигма наиболее удобна при создании программного обеспечения типа клиент-сервер, а также для организации распределенных вычислений. Одна из черт, присущих объектам, заключается в том, что объекты обычно переживают процедуру, их создающую. Они затем могут перемещаться по сети, храниться в базах данных и т.д. Идейными наследниками Java являются такие языки, как C++, Eiffel, Smalltalk и Objective C. За исключением примитивных типов данных, практически все в этом языке является объектом. Опыт показывает, что отсутствие стандартных базовых библиотек для языка С++ чрезвычайно затрудняет работу с ним. В силу того, что любое нетривиальное приложение требует наличия некоторого набора базовых классов, разработчикам приходится пользоваться различными несовместимыми между собой библиотеками или писать свой собственный вариант такого набора. Все это затрудняет как разработку, так и дальнейшую поддержку приложений, затрудняет стыковку приложений, написанных разными людьми. 6.1.Основные требования к объектно-ориентированной системе инкапсуляция -- сокрытие реализации за абстрактным интерфейсом полиморфизм -- одно и то же сообщение, посланное различным объектам, приводит к выполнению разных операций наследование -- новые классы могут наследовать данные и функциональность уже существующих классов динамическое связывание -- новые классы могут появляться в системе откуда угодно, в том числе и из сети. Необходимо иметь возможность динамически включать их в систему. 6.2. Базовая система классов Java Полная система Java включает в себя готовый набор библиотек, часто используемыми из которых являются следующие пакеты: java.lang -- базовый набор типов, отраженных в самом языке. Этот пакет обязательно входит в состав любого приложения. Содержит описания классов Object и Class, а также поддержку многопотоковости, исключительных ситуаций, оболочку для базовых типов, а также некоторые фундаментальные классы. java.io -- потоки и файлы произвольного доступа. Аналог библиотеки стандартного ввода-вывода системы UNIX. В библиотеке классов java.io собраны классы, имеющие отношение к вводу и выводу данных через потоки. С использованием этих классов можно работать не только с потоками байт, но также и с потоками данных других типов, например числами int или текстовыми строками. java.net -- поддержка сетевого доступа (sockets, telnet, URL). Язык программирования Java разрабатывался в предположении, что им будут пользоваться для создания сетевых приложений. Поэтому было бы странно, если бы в составе среды разработки приложений Java не поставлялась библиотека классов для работы в сети. Библиотека классов java.net предназначена как раз для этого. Она содержит классы, с помощью которых можно работать с универсальными сетевыми адресами URL, передавать данные с использованием сокетов TCP и UDP, выполнять различные операции с адресами IP. Эта библиотека содержит также классы для выполнения преобразований двоичных данных в текстовый формат, что часто бывает необходимо. java.util -- классы-контейнеры (Dictionary, HashTable, Stack) и некоторые другие утилиты. Кодирование и декодирование. Классы Date и Time. Библиотека классов java.util очень полезна при составлении приложений, потому что в ней имеются классы для создания таких структур, как динамические массивы, стеки и словари. Есть классы для работы с генератором псевдослучайных чисел, для разбора строк на составляющие элементы (токены), для работы с календарной датой и временем. java.awt -- AWT - это сокращение от Abstract Window Toolkit (инструментарий для работы с абстрактными окнами). Содержит базовые компоненты интерфейса, такие как события, цвета, фонты. Для создания пользовательского интерфейса аплеты Java могут и должны использовать библиотеку классов java.awt. Классы, входящие в состав библиотеки java.awt, предоставляют возможность создания пользовательского интерфейса способом, не зависящим от платформы, на которой выполняется апплет Java. Можно создавать обычные окна и диалоговые панели, кнопки, переключатели, списки, меню, полосы просмотра, однострочные и многострочные поля для ввода текстовой информации. java.applet -- библиотека классов java.applet инкапсулирует поведение апплетов Java. При создании апплетов, требуется класс Applet, расположенный в этой библиотеке классов. Дополнительно в библиотеке классов java.applet определены интерфейсы для подключения апплетов к содержащим их документам и классы для проигрывания звуковых фрагментов. 6.3. Объектная модель Java Классы Класс есть языковая конструкция, определяющая поля данных объектов данного класса (instance variables) и их поведение (methods). Практически класс в Java сам по себе не является объектом. Это лишь шаблон, который определяет, из каких частей будет состоять объект, созданный с помощью этого класса, и как он будет себя вести. Простейший пример описания классаclass Point extends Object { public double x; public double y; } Создание объекта определенного класса Создать объект описанного выше класса можно декларациейPoint myPoint; // объявление переменной типа Point myPoint = new Point(); // инициализация, а обратиться к полям данных следующим образом myPoint.x = 10.0; myPoint.y = 25.7; Конструкторы При объявлении класса возможно указать методы специального вида, называемые конструкторами и предназначенные для инициализации созданного объекта. Имя этих методов должно совпадать с именем класса, они могут иметь какое-то количество аргументов, например: class Point extends Object { Point() { x = 0.0; y = 0.0; } Point(double x, double y) { this.x = x; this.y = y; } public double x; public double y; } а использованы они могут быть следующим образом Point a; Point b; a = new Point(); b = new Point(1.0, 2.0); Имя this в определении конструктора с аргументами используется для обозначения самого объекта, в методе которого мы находимся, в тех случаях, когда ссылка на этот объект не подразумевается неявно. Методы и посылка сообщений Если один объект в программе заставляет другой выполнить какую-то операцию, то принято говорить, что он посылает сообщение другому объекту. Например, можно переопределить класс следующим образом: Pclass Point extends Object { private double x; private double y; public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } ... } Поля x и y теперь недоступны извне класса, но для изменения их состояния предусмотреys специальные методы setX и setY. Финализаторы Специальное имя finalize зарезервировано для метода, который будет вызван сборщиком мусора перед тем, как объект будет уничтожен. В силу того, что Java освобождает разработчиков от необходимости самим следить за освобождением памяти, занимаемой объектами, необходимость в таких методах обычно возникает лишь тогда, когда надо освободить какие-то внешние ресурсы, например, закрыть открытый файл: protected void finalize() { try { file.close(); } catch (Exception e) { } } Производные классы Наследование классов позволяет создавать новые типы объектов, эффективно использующие функциональность уже существующих типов. Новый тип обычно называется производным классом, а тот, чьи свойства наследуются -- базовым классом. Например, можно описать новый класс, соответствующий координатам точки в трехмерном пространстве, на основе уже описанного класса для точки на плоскости. class ThreePoint extends Point { protected double z; ThreePoint() { super(); z = 0.0; } ThreePoint(double x, double y, double z) { super(x, y); this.z = z; } } Здесь была добавлена новая координату z, а поля x и y (и методы доступа к ним) унаследовали от класса Point. Контроль доступа Контроль доступа к данным и методам объекта в Java несколько отличается от С++. Помимо трех уровней доступа, имеющихся в С++ (public, private, protected) имеется четвертый, находящийся где-то между уровнями public и protected. Он не имеет имени и используется по умолчанию, когда явно не указан другой уровень. Поля этого типа доступны внутри только одного программного пакета. Пакет представляет группу классов, объединенных в одну логическую группу. Например, классы, описывающие точку и прямоугольник в графическом пакете, могут иметь прямой доступ к полям данных друг друга, запрещенный обычно для остального мира. Также следует отметить, что контроль доступа в C++ помогает программисту лишь при построении программы. Различия между полями, помеченными public и private, отсутствуют в выполняемом модуле, созданном с использованием этого языка. В Java контроль доступа реален, т.к. он осуществляется не только при компиляции, но и непосредственно перед запуском кодов на выполнение виртуальной машиной. Переменные и методы класса Как и С++ язык Java позволяет использовать переменные и методы, принадлежащие классу целиком. Для определения их используется ключевое слово static. Естественно, что методы самого класса не могут оперировать данными и методами объекта класса, т.к. они не относятся ни к какому определенному объекту. Например, версия реализации класса Rectangle может быть задана следующим образом: class Rectangle extends Object { static final int version = 2 ; static final int revision = 0 ; } Ключевое слово final означает, что значение поля окончательное и изменению не подлежит (это константа). Абстрактные методы Абстрактные методы -- это методы, для которых в данном классе не определена их реализация. Мы указываем лишь на необходимость наличия методов с данным протоколом. Конкретная реализация должна быть осуществлена классами-наследниками. В то же время остальная, "неабстрактная" часть класса может содержать конкретную информацию, которая может быть использована производными классами.
Например: { protected Point lowerLeft; protected Point upperRight; ... public void setPosition(Point ll, Point ur) { lowerLeft = ll; upperRight = ur; } abstract void drawMyself(); } class Rectangle extends Graphical { void drawMyself() { .... } } Здесь был описан класс Graphical. В нем объявлено свойство всех графических элементов иметь какое-то положение на плоскости. Каждый элемент обязан также иметь метод для рисования самого себя, однако никакого метода рисования по умолчанию быть не может. Класс Rectangle, представляющий собой конкретную реализацию для типа Graphical, реализует также этот метода для объекта прямоугольной формы. Класс, содержащий хотя бы один абстрактный метод, должен быть объявлен как абстрактный. Создание экземпляров такого класса невозможно. Заключение В процессе написания данной работы были выяснены следующие свойства языка Java: язык программирования объектно-ориентирован, оснащён богатой библиотекой классов и в то же время довольно прост для освоения цикл разработки приложений сокращен за счет того, что система построена на основе интерпретатора приложение получается автоматически переносимым между множеством платформ и операционных систем за счет встроенной системы сборки мусора программист освобождается от необходимости явного управления памятью приложение легко сопровождается и модифицируется, т.к. модули могут быть загружены с сети в приложения встроена система безопасности, не допускающая незаконного доступа и проникновения вирусов В процессе написания данной курсовой работы была так же создана программа, которая хорошо иллюстрирует многие достоинства данной технологии и показывает её перспективность. Созданная программа может использоваться на различных Web сайтах для динамической загрузки и отображения информации. Текст программы находится в приложении. Список литературы Джон Родли Создание Java-апплетов .- The Coriolis Group,Inc.,1996, Издательство НИПФ "ДиаСофт Лтд.",1996 Майкл Эферган Java: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998 П. Киммел Borland C++5. – СПб.: BHV- Санкт-Петербург, 1999. Материалы интернет-сайтов: www.javable.com www.sun.ru www.sun.com www.infocity.kiev.ua |
... на Java. 5. Алексей Литвинюк. Введение в интегрированную среду разработки Eclipse — http://lib.juga.ru/article/articleview/174/1/69/. Приложение 1. Встроенные типы данных и основные конструкции языка Константы В языке Java можно записывать константы разных типов в разных видах. Перечислим их. Целые Целые константы можно записывать в трех системах счисления: · в ...
... -position – позиционирование заднего фона. background-image – ссылка на объект для заднего фона. background-repeat – способы отображения заднего фона. Литература 1. Картузов А.В. Программирование на языке JAVA 2002 г. 2. Управление сценариями просмотра Web-страниц Павел Храмцов, статья из ComputerWorld 3. JavaScript и Navigator 3.0 Павел Храмцов, статья из ComputerWorld 4. Язык ...
... =#989898> <TABLE cellSpacing=1 cellPadding=0 width=119 align=middle>Эта регистрация- чистая формальность.<BR> Она создана для демонстрации Java Script<TBODY> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD> <TD vAlign=top bgColor=#efdfff height="100%"> <TABLE height="100%" cellPadding=5 ...
... , а Java машина всегда будет работать с данными, записанными в формате языка Java. 5. Описание практической части Прототипная реализация выполнена посредством связывания вызова подпрограммы, реализованной на языке Fortran, из Java-программы через язык С (JNI). В настоящее время окружение Java не предоставляет возможности вызывать напрямую подпрограммы, реализованные на языке Fortran. Реализация ...
0 комментариев