21. Особенности языка Java: интерпретируемость, независимость от платформы, мобильность. Типы Java-приложений, их особенности.
Sun так характеризует Java:
- простой (отсутствует множественное наследование, шаблоны, перегрузка) устойчивый (нет указателей, нет явного распределения памяти, развита система выявления ошибок на этапе выполнения) надежный (система безопасности) распределенный (ориентирован на работу с сетью), архитектурно-независимый интерпретируемый мобильный (переносимый) высокопроизводительный многопоточный (содержит средства организации параллельной работы) динамический
Язык Java можно использовать для разработки программ двух основных типов:
- автономные приложения (applications); мини-приложения, выполняемые в среде браузеров со встроенными JVM – апплеты (applets).
В автономных приложениях Java может быть использован либо интерфейс командной строки, либо графический интерфейс пользователя (GUI). В апплетах – только GUI. В первом случае нужно сначала загрузить реализацию JVM – модуль Java, который входит в состав JDK (java. exe).
- Существуют комбинированные приложения Java, которые могут выполняться и как автономное приложение, и как апплет. Сервлеты (servlets). Это мини-приложения Java, выполняемые на стороне Web-сервера (предназначены для формирования динамических HTML – страниц, организации связи с БД и т. д.).
Java – интерпретируемый язык, т. е. программа компилируется в промежуточный байт-код, который затем выполняется в рамках исполняющей среды (виртуальной машины Java).
22. Отличия Java от C++: простые и ссылочные типы данных; классы и пакеты; интерфейсы.
Java – строго типизированный язык. Во время компиляции Java-программы должен быть известен тип каждой переменной и каждого выражения. Компилятор проверяет соответствие типов и предотвращает некорректные операции присваивания.
В Java2 используются 2 вида типов данных – простые (примитивные) типы и ссылочные типы.
Простые типы имеют фиксированную разрядность, не зависящую от платформы. Разрядность фиксирована на уровне стандарта языка. В Java определены 8 простых типов данных.
Тип | Содержание | Размер, байт | Значение по умолчанию |
boolean | Логические значения | 1 | false |
byte | Целое со знаком | 8 | 0 |
char | Unicod-символ | 16 | ‘\u0000’ |
short | Целое со знаком | 16 | 0 |
int | Целое со знаком | 32 | 0 |
long | Целое со знаком | 64 | 0L |
float | Число с плавающей точкой | 32 | 0.0F |
double | Число с плавающей точкой | 64 | 0.0D |
Примечания:
1) Тип char применяется для хранения символов в кодировке Unicode, которая позволяет работать с алгоритмами различных языков. Первые 256 символов Unicode соответствуют кодировке ASCII. ‘\u0030’ -- ‘\u0039’
0 -- 9
2) В Java, в отличие от С++, нет беззнаковых целых типов.
3) Все простые типы данных по умолчанию инициализируются.
4) Переменные простых типов могут передаваться в функцию только по значению, но не по ссылке.
5) Приведение типов в Java осуществляется автоматически и с помощью операции явного приведения типов.
Существует неявное приведение простых типов (более длинному типу присваивается более короткий. Явное приведение простых типов: оператор (тип) значение.
f = (float) d;
i = (int) f;
s = (short) i;
b= (byte) i;
c = (char) i;
boolean нельзя присваивать даже с явным приведением. Преобразование можно выполнить, используя операцию эквивалентности и условную операцию.
Существуют специальные классы-оболочки (замещающие классы), для простых типов данных. Они содержатся в пакете java. lang; их названия соответствуют названиям простых типов, но с большой буквы: Boolean, Byte, Character, Short, Integer, Long, Float, Double. В них определены методы преобразования типов. Например, конструктор класса Integer – Integer (int val), метод этого класса int intValue(); static int parseInt (String s). В этих классах есть поля-константы MAX_VALUE, MIN_VALUE.
Ссылочные типы
Массивы, классы, интерфейсы. Величины ссылочного типа – ссылки на объекты. Объекты в Java – экземпляры классов и массивы. Ссылки – своего рода указатели, но они не аналогичны указателям в С++. Ссылочный тип может иметь имя любого класса или интерфейса. Объявление переменной ссылочного типа не создает соответствующий объект. Для этого используется оператор new(). Значение переменной по умолчанию – null.
Простого строкового типа нет; используется ссылочный тип java. lang. String. Строки являются объектами. Создание:
String str1 = new String (“New string”);
String str2 = “New string”;
Конкатенация: str2 = str2 +str1. Оператор + является единственным перегруженным оператором в Java.
Класс String предназначен для работы со строковыми константами. Методы, модифицирующие строку, реально не меняют, а создают новый объект типа String. Строковые объекты, которые можно менять, позволяет создавать класс StringBuffer.
String str1 = new String (“Строка”);
StringBuffer str2 = new StringBuffer(str1);
str2.insert(6, “ “);
String str3 = new String (str2);
Java - полностью объектно-ориентированный язык. Все хранится в объектах. Отсутствуют глобальные функции и переменные. Объект – экземпляр класса. Объект имеет данные (переменные) и поведение (определяется методами). Поведение – множество операций, которые можно выполнить над данными. Класс – шаблон, в котором определяются данные и поведение объекта. Суперклассом называется класс, на основе которого создаются другие классы, называемые производными классами (потомками). Java поддерживает только простое наследование: любой класс потомок является производным только от одного непосредственного суперкласса. Нет множественного наследования. Некоторой заменой ему является использование интерфейсов. Интерфейсы являются подобиями абстрактных классов, представляют собой набор абстрактных методов, т. е. методов без описания реализации. Интерфейсы предназначены для реализации классами. Класс наследует одному суперклассу, но может реализовывать несколько интерфейсов. В Java допускается несколько уровней наследования, что позволяет создавать иерархии классов.
java. lang. Object --------- косвенный суперкласс
java. ponent --------- косвенный суперкласс
java. awt. Container --------- косвенный суперкласс
java. awt. Panel --------- косвенный суперкласс
java. applet. Applet --------- непосредственный суперкласс
myApplet --------- производный класс
java. lang. Object – косвенный суперкласс для всех классов.
Непосредственный суперкласс в Java указывается ключевым словом extends. Если для класса не указан его суперкласс, то по умолчанию этот класс расширяет класс Object. Любой класс Java является производным от Object и может использовать все его методы. В Java имя класса является именем ссылочного типа данных. Тип объекта – экземпляра какого-либо класса в Java может быть определен с помощью instanceof.
Определение класса состоит из объявления класса и тела класса.
[модификаторы] class ИмяКласса [extends ИмяСуперкласса][implements СписокИнтерфейсов]
Имя класса должно начинаться с буквы _ ;. Модификаторы: abstract, final (модификатор ограничения иерархии классов), модификаторы доступа. Суперкласс должен быть доступным классом и не иметь модификатора final.
Тело класса заключается в [].Содержит список объявлений полей класса и определение методов. Метод с тем же именем, что у класса - конструктор.
Создание экземпляра класса – new. Выделяется память, загружается класс, инициализируются поля. Вызывается конструктор.
Поле – переменная, содержащая данные класса или экземпляра класса. Метод – некоторая часть исполнимого кода класса, вызов которой возможен как в классе, так и для его объектов. элементы класса – поля, методы и вложенные классы.
Уровень доступа | Спецификатор доступа | данный класс | класс в данном пакете | классы в др. пакетах | |
потомки | непотомки | ||||
Открытый | public | + | + | + | + |
Защищенный | protected | + | + | + | - |
Стандартный | по умолчанию | + | + | - | - |
Закрытый | private | + | - | - | - |
Пакеты (package) используются для объединения связанных между собой классов, интерфейсов и других пакетов. Используются для ограничения доступа. Имеют собственное пространство имен. Импортируются в программу с помощью import. Если в программе отсутствует пакет, то классы в текущем файле образуют анонимный пакет по умолчанию.
Поле в классе может быть:
- static (переменная класса, для всех экземпляров класса – 1 переменная), final (запрещает изменение переменной вне тела класса, часто используют для констант), transient (не сериализуется) volative (сообщает компилятору, что при выполнении программы значение переменной может изменяться асинхронно и независимо от действия программы).
Метод может быть:
- static. Метод класса. Ограничения: вызывается непосредственно из класса, может ссылаться только на static-методы и static-переменные, не может быть переопределен. abstract. Может быть объявлен только в абстрактном классе. Не имеет тела. final. Метод не может быть переопределен в дочерних классах. native. Метод не имеет тела. Используется, если требуется реализовать машинно-зависимый код. synchronized. Для организации корректной работы в многопоточных приложениях.
Если метод ничего не возвращает, то тип_возвр_знач – void. В теле метода – return (может не быть).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


