Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС-Информационные технологии.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
71.81 Кб
Скачать

3. Основные возможности Java. Компиляции и исполнение программ на Java.

Основные возможности Java: 

  • автоматическое управление памятью

  • расширенные возможности обработки исключительных ситуаций;

  • богатый набор средств фильтрации ввода/вывода;

  • набор стандартных коллекций, таких как массив, список, стек и т. п.;

  • наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);

  • наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;

  • встроенные в язык средства создания многопоточных приложений;

  • унифицированный доступ к базам данных:

  • на уровне отдельных SQL-запросов — на основе JDBC, SQLJ;

  • на уровне концепции объектов, обладающих способностью к хранению в базе данных — на основе Java Data Objects (англ.) и Java Persistence API (англ.).

  • поддержка шаблонов (начиная с версии 1.5) 

Как вы знаете, программа, написанная на одном из языков высокого уровня, к которым относится и язык Java, так называемый исходный модуль ("исходник" или "сырец" на жаргоне, от английского "source"), не может быть сразу же выполнена. Ее сначала надо откомпилировать, т. е. перевести в последовательность машинных команд — объектный модуль. 

Программа компилируется сразу в машинные команды, но не команды какого-то конкретного процессора, а в команды так называемой виртуальной машины Java (JVM, Java Virtual Machine). Виртуальная машина Java — это совокупность команд вместе с системой их выполнения. Другая особенность Java — все стандартные функции, вызываемые в программе, подключаются к ней только на этапе выполнения, а не включаются в байт-коды.

Итак, на первом этапе программа, написанная на языке Java, переводится компилятором в байт-коды. Эта компиляция не зависит от типа какого-либо конкретного процессора и архитектуры некоего конкретного компьютера. Она может быть выполнена один раз сразу же после написания программы. Байт-коды записываются в одном или нескольких файлах, могут храниться во внешней памяти или передаваться по сети. Это особенно удобно благодаря небольшому размеру файлов с байт-кодами. Затем полученные в результате компиляции байт-коды можно выполнять на любом компьютере, имеющем систему, реализующую JVM. При этом не важен ни тип процессора, ни архитектура компьютера. Так реализуется принцип Java "Write once, run anywhere" — "Написано однажды, выполняется где угодно".

Фирма SUN Microsystems выпустила микропроцессоры PicoJava, работающие на системе команд JVM, и собирается выпускать целую линейку все более мощных Java-процессоров. Есть уже и Java-процессоры других фирм. Эти процессоры непосредственно выполняют байт-коды. Но при выполнении программ Java на других процессорах требуется еще интерпретация команд JVM в команды конкретного процессора, а значит, нужна программа-интерпретатор, причем для каждого типа процессоров, и для каждой архитектуры компьютера следует написать свой интерпретатор.

4. Типы данных языка Java., объектные переменные, объекты, ссылки.

 Java является строго типизированным языком. Это означает, что любая переменная и любое выражение имеют известный тип еще на момент компиляции. Такое строгое правило позволяет выявлять многие ошибки уже во время компиляции. Компилятор, найдя ошибку, указывает точную строку и причину ее возникновения. Все типы данных разделяются на две группы. Первую составляют 8 простых или примитивных типов данных. Они подразделяются на три подгруппы:

• целочисленные (- byte – short – int – long – char- (также является целочисленным типом))

• дробные (float, double)

• булевский ( boolean)

Вторую группу составляют объектные или ссылочные (от английского reference) типы данных. Это все классы, интерфейсы и массивы. Иллюстрировать логику работы с типами данных проще всего на примере переменных.

Переменные используются в программе для хранения данных. Любая переменная имеет три базовых характеристики: • имя; • тип; • значение.

Имя уникально идентифицирует переменную и позволяет к ней обращаться в программе.

Тип описывает, какие величины может хранить переменная. Значение - текущая величина, хранящаяся в переменной на данный момент.

В Java любая переменная имеет строгий тип, который также задается при объявлении и никогда не меняется. Некоторые примеры объявления переменных примитивного типа int с инициализаторами и без таковых:

int a;

int b = 0, c = 3+2;

int d = b+c;

int e = a = 5;

Из примеров видно, что инициализатором может быть не только константа, но и арифметическое выражение.

Примитивные и ссылочные типы данных

Ссылочный тип данных. Переменные таких типов всегда хранят ссылки на некоторые объекты. Различные переменные могут ссылаться на один и тот же объект. Очень важно помнить, что объектная переменная, в отличие от примитивной, может иметь значение другого типа, не совпадающего с типом переменной. Например, если тип переменной - некий класс, то переменная может ссылаться на объект, порожденный от наследника этого класса.

Примитивные типы

существует 8 простых типов данных, которые делятся на целочисленные (integer), дробные (floating-point) и булевские (boolean).

Целочисленные типы

Целочисленные типы - это byte, short, int, long, также к ним относят и char. Первые четыре типа имеют длину 1, 2, 4 и 8 байт соответственно, длина char - 2 байта, что непосредственно следует из того, что все символы Java описываются стандартом Unicode.

Дробные типы . Дробные типы - это float и double. Их длины - 4 и 8 байт соответственно. Оба типа знаковые.

Для дробных типов добавляется еще одно ограничение - насколько можно приблизиться к нулю, другими словами - каково наименьшее положительное ненулевое значение. Таким образом, нельзя задать литерал заведомо больший, чем позволяет соответствующий тип данных, это приведет к ошибке overflow. И нельзя задать литерал, значение которого по модулю слишком мало для данного типа, компилятор сгенерирует ошибку underflow.

// пример вызовет ошибку компиляции

float f = 1e40f; // значение слишком велико, overflow

double d = 1e-350; // значение слишком мало, underflow

Булевский тип . Булевский тип представлен всего одним типом boolean, который может хранить всего два возможных значения - true и false. Величины именно этого типа получаются в результате операций сравнения.

Ссылочные типы. Итак, выражение ссылочного типа имеет значение либо null, либо ссылку, указывающую на некоторый объект в виртуальной памяти JVM. Объект (object) - это экземпляр некоторого класса или экземпляр массива. Класс - это описание объектов одинаковой структуры, и если в программе такой класс используется, то описание присутствует в единственном экземпляре. Объекты всегда создаются с использованием ключевого слова new, причем одно слово new порождает строго один объект (или вовсе ни одного, если происходит ошибка). После ключевого слова указывается имя класса, от которого мы собираемся породить объект.