Программирование. Программирование на Java Конспект лекций (ИТМО 2010). Справочник по языку Java и может использоваться как конспект лекционного курса Системы программирования Интернетприложений
Скачать 0.85 Mb.
|
Перечисляемые типы Перечисляемый тип (enum) — это тип, значения которого ограничены набором констант. public enum Season { WINTER, SPRING, SUMMER, AUTUMN } public class TestSeason { public static void main(String[] args) { Season s = Season.SUMMER; System.out.println("Current season is " + s); } } Использование объектов объявление объекта ( a = null ) Point a; создание объекта (выделяется память) a = new Point(10,10); доступ к переменным a.x = 20; вызов методов a.show(); уничтожение неиспользуемого объекта "сборщик мусора" метод finalize() : protected void finalize() throws Throwable { super.finalize(); if (file != null) { file.close(); file = null; } } 27 Пакеты, входящие в JDK 1.6 java.applet Классы для реализации апплетов. java.awt Классы для реализации графического пользова- тельского интерфейса. java.awt.color Классы для раскраски компонентов пользова- тельского интерфейса. java.awt.datatransfer Классы для поддержки передачи информации внутри приложений и между ними. java.awt.dnd Классы для реализации механизма drag-n-drop в пользовательских интерфейсах. java.awt.event Классы и интерфейсы для обработки событий. java.awt.font Классы и интерфейсы, связанные со шрифтами. java.awt.geom Классы для генерации объектов двухмерной графики. java.awt.im Классы и интерфейсы для реализации ввода данных. java.awt.image Классы для обработки изображений. java.awt.print Классы и интерфейсы, реализующие механизм вывода данных на печать. java.beans API для модели компонентов JavaBeans. java.io Классы для различных потоков ввода-вывода, сериализации и работы с файловой системой. java.lang Базовые классы и интерфейсы языка Java. java.lang.ref Классы, обеспечивающие ряд возможностей по взаимодействию со «сборщиком мусора» вир- туальной машины. java.lang.reflect Классы для проверки структуры классов и ее отражения. java.math Классы для чисел произвольной точности java.net Классы для поддержки сетевого взаимодействия. java.nio Классы, реализующие расширенные возмож- ности ввода-вывода с использованием буферизо- ванных контейнеров для различных типов данных. java.rmi Классы и интерфейсы для обеспечения удален- ного вызова методов. java.rmi.activation API, реализующее возможности по активации RMI-объектов. java.rmi.dgc Классы и интерфейсы для реализации распреде- ленной "сборки мусора". java.rmi.registry Классы для поддержки базы данных объектов и услуг. 28 Рисунок 2. Пакет java.lang 31 Класс Object Класс Object лежит в основе всей иерархии классов Java Методы класса: public final native Class getClass() возвращает класс объекта public final native void notify() пробуждает поток, ожидающий монитор объекта public final native void notifyAll() пробуждает все потоки, ожидающие монитор объекта public final native void wait() ждет оповещения другим потоком public native int hashCode() возвращает хэш-код объекта public boolean equals(Object obj) сравнивает объекты на равенство public native Object clone() возвращает копию объекта public String toString() преобразует объект в строку символов protected void finalize() вызывается сборщиком мусора при разрушении объекта Класс Class Экземпляры этого класса описывают классы, интерфейсы, массивы и примитивные типы данных работающего приложения. У этого класса нет конструкторов, объекты создаются либо динамически виртуальной машиной Java, либо с помощью метода getClass() любого объекта. Методы: forName(String className) возвращает объект Class для заданного имени getName() возвращает имя класса newInstance() создает новый экземпляр класса getSuperclass() возвращает суперкласс isInterface() определяет, является ли объект интерфейсом getInterfaces() возвращает интерфейсы класса isArray() определяет, является ли объект массивом isPrimitive() определяет, является ли тип примитивным 32 Класс System Содержит набор методов для доступа к системным функциям, а также переменные in , out и err , представляющие соответственно стандартные потоки ввода, вывода и ошибок. getProperty(String name) возвращает значение свойства с именем name getenv(String name) возвращает значение переменной окружения arraycopy(Object src, nt pos1, Object dst, int pos2, int n) копирует элементы массива в другой массив exit(int status) выполняет выход из программы gc() запускает сборщик мусора loadLibrary(String name) загружает динамическую библиотеку runFinalization() запускает методы finalize() объектов currentTimeMillis() возвращает миллисекунды с 1 января 1970 г. Класс Math Содержит константы и методы для реализации математических функций: E, PI abs(x), max(a,b), min(a,b), round(x), rint(x), ceil(x), floor(x); pow(x,y), exp(x), log(x), sqrt(x), IEEEremainder(x,y), random(x); sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(x,y). Классы-оболочки Используются для объектного представления примитивных типов данных. Реализуют методы преобразования из примитивных типов и обратно, а также в строковое представление и обратно. К классам-оболочкам относятся: Boolean , Character , Byte , Short , Integer , Long , Float , Double , Void 33 Автоупаковка и автораспаковка Допускается присваивать переменным примитивного типа значения соответствующих классов-оболочек и наоборот — в этом случае вызов метода преобразования будет автоматически добавлен компилятором: Integer answer = new Integer(42); int i = answer.intValue(); Integer answer = 42; int i = answer; Класс Exception Является предком всех классов исключений, сигнализирующих о нестандартных ситуациях, которые должны быть специальным образом обработаны. Исключения, которые может вызывать какой-либо метод должны объявляться в операторе throws этого метода (кроме исключений, порожденных от класса RuntimeException ). Классы исключений, входящие в состав пакета java.lang, приведены на рис. 3. Рисунок 3. Исключения пакета java.lang 34 Класс RuntimeException Данные исключения описывают исключения времени выполнения, которые могут возникать в любом месте программы, и которые не нужно объявлять в операторе throws Основные классы необрабатываемых исключений приведены на рис. 4. Рисунок 4. Необрабатываемые исключения Класс Error Объекты Error , в отличие от исключений, не должны перехватываться, и обычно приводят к экстренному завершению программы. Основные классы ошибок приведены на рис. 5. 35 Рисунок 5. Потомки класса Error Пакет java.util Основные классы и интерфейсы, входящие в состав пакета java.util показаны на рис. 6. 36 Рисунок 6: Пакет java.util Классы и интерфейсы пакета java.util BitSet представляет битовый массив произвольной длины Date описывает значения даты и времени в миллисекундах Calendar работает с единицами измерения даты 37 GregorianCalendar реализует стандартный Григорианский календарь TimeZone описывает временные пояса SimpleTimeZone временная зона для Григорианского календаря Random используется для генерации псевдослучайных чисел EventObject определяет базовый тип события EventListener является меткой слушателя событий Observer интерфейс для объектов-наблюдателей Observable базовый класс для всех наблюдаемых объектов Dictionary шаблон для создания ассоциативных массивов Properties используется для хранения списка системных свойств Locale описывает понятие местности ResourceBundle описывают набор локализованных ресурсов 38 Работа с текстом и многоязыковая поддержка Класс String Используется для представления символьных строк (констант). Конструкторы: public String() public String(char chars[]) public String(char chars[], int offset, int length) public String(byte bytes[]) public String(byte bytes[], int offset, int length, String encoding) public String(String str) public String(StringBuffer buffer) Методы: public int length() длина строки public char charAt(int index) символ в заданной позиции public boolean equals(Object o) сравнение строки с объектом public int compareTo(String s) сравнение со строкой public boolean startsWith(String s) истина, если строка начинается с префикса public boolean endsWith(String s) истина, если строка заканчивается суффиксом public int indexOf(int char) позиция символа public int indexOf(String str) позиция подстроки public int lastIndexOf(int char) позиция символа с конца public int lastIndexOf(String str) позиция подстроки с конца public static String valueOf(…) преобразование в строку Класс StringBuffer Используется для представления изменяемых строк. Конструкторы: public StringBuffer() public StringBuffer(int length) public StringBuffer(String str) |
наследуется из
Component и используется для прорисовки изображения getParameter(String name)
используется для получения параметров, переданных апплету
Безопасность при работе с апплетами
Апплет, загруженный по сети не может:
•
производить чтение и запись информации в локальной файловой системе;
•
создавать сетевые соединения (кроме компьютера, с которого был загружен апплет);
•
осуществлять выход, запускать процессы и загружать библиотеки;
•
производить печать, использовать системный буфер и системную очередь событий;
•
использовать системные свойства (кроме специально оговоренных);
•
получать доступ к потокам или группе потоков других приложений;
•
пользоваться классом
ClassLoader
;
•
пользоваться методами отражения для получения информации о защищенных или частных членах классов;
•
работать с системой безопасности.
Типы данных
Тип
Размер, бит
Диапазон значений
byte
8
-128 … 127
short
16
-32768 … 32767
int
32
-2147483648 … 2147483647
long
64
-9223372036854775808 … 9223372036854775807
float
32 (IEEE 754)
3.4e-038 … 3.4e+038
double
64 (IEEE 754)
1.7e-308 … 1.7e+308
char
16 0 … 65536 (символы Unicode)
boolean false, true byte a;
short b = 32;
int c = 1000000;
int cOctal = 011;
itn cHex = 0xCAFE;
long d = 123456789012345L;
22
double doublePrecisionValue = 1.23456789E-100;
char symbol = 'a';
char cyrillic = '\u0401';
char newLine = '\n';
boolean toggle = true;
int arr[] = {1,2,3,4,5,6};
final double ¶ = 3.14159265358979323846;
Переменные
Имя переменной должно состоять из символов Unicode. Оно не должно совпадать с любым из ключевых слов языка Java, а также с логическими константами true и false. Две переменных не могут иметь одинаковые имена, если они находятся в одной области видимости.
Ключевые слова Java abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
Зарезервированные литералы — null, true и false
Операторы
Приоритеты операторов постфиксные операторы
[] . () expr++ expr-- унарные операторы
++expr –-expr +expr -expr !
операции с типами new (cast)expr умножение/деление
* / %
сложение/вычитание
+ - операторы сдвига
<< >> >>>
операторы отношения
< > <= >= instanceof операторы равенства
== !=
23
&
поразрядное искл. ИЛИ
^
поразрядное ИЛИ
|
логическое И
&&
логическое ИЛИ
||
условный оператор
?:
операторы присваивания
= += -= *= /= %= >>= <<= >>>= &= ^= |=
Области видимости
Области видимости различных категорий переменных, использующихся в классах и их методах, приведены на рис. 1.
class A {
глобальные переменные int global;
void method(float parameter) {
параметры метода boolean local;
локальные переменные
} catch (Exception e) {
параметры обработчика исключений
}
}
}
Рисунок 1. Области видимости переменных
Управляющие конструкции if (boolean expr) {
op1;
} else {
op2;
}
switch (int expr) {
case const1:
op1;
case const2:
op2;
break;
for (initialization; boolean expr;
increment) {
op;
}
// array - массив for (Type x : array) { op;
}
24
op3;
}
// Type — перечисляемый тип switch (Type x) {
case CONST_1:
op1;
break;
case CONST_2:
op2;
break;
default:
op3;
}
// collection - коллекция for (Type x : collection){
op;
}
while (boolean expr) {
op;
}
do {
op;
} while (boolean expr);
try {
op;
} catch (Exception e) {
block1;
} finally {
block2;
}
throw new Exception();
label:
for (...) {
for (...) {
op;
continue label;
}
}
return;
Модификаторы abstract метод только описан, но не реализован; класс содержит абстрактные методы final переменная является константой; метод не может быть переопределен; класс не может быть расширен static переменная является переменной класса; метод является методом класса; инициализатор запускается при загрузке класса; класс является классом верхнего уровня public метод или переменная доступны везде protected метод или переменная доступны в подклассах и в пределах пакета private метод или переменная доступны только в пределах класса
(package)
метод или переменная доступны только в пределах пакета synchronized метод, для которого осуществляется блокировка доступа к ресурсу transient переменная не должна быть сериализована
25
Аннотации
Аннотации — это модификаторы, семантически не влияющие на программу, но содержащие метаданные, которые могут быть использованы при анализе кода, в процессе компиляции программы или во время её исполнения.
Стандартные аннотации языка Java:
@Deprecated
/*
* Этот метод устарел, заменён
* на aBetterAlternative() и
* не рекомендуется к использованию.
*/
@Deprecated public void theDeprecatedMethod() {
} public void aBetterAlternative() {
}
@SupressWarnings public static void main(String[] args) {
// Блокирует предупреждение компилятора
@SuppressWarnings("unchecked")
Collection
}
@Override class BaseClass { public void toBeOverriddenMethod() { }
}
public class ClassWithOverrideMethod {
// Переопределяет метод родительского
// класса
@Override public void toBeOverriddenMethod() { }
}
26
Классы для обеспечения удаленного доступа со стороны сервера.
java.security
Классы и интерфейсы для обеспечения защиты данных от несанкционированного доступа.
java.sql
Стандартный интерфейс доступа к базам данных.
java.text
Классы и интерфейсы для обеспечения много- языковой поддержки java.util
Вспомогательные классы, обеспечивающие рабо- ту со структурами данных и форматирование текста с учетом локализации.
java.util.concurrent
Классы, обеспечивающие расширенные возмож- ности многопоточного программирования.
java.util.jar
Классы для работы с JAR-архивами.
java.util.logging
Классы и интерфейсы, реализующие журналиро- вание исполнения программ.
java.util.prefs
API для работы с пользовательскими и системными конфигурационными параметрами.
java.util.regex
Классы для обработки данных с помощью регулярных выражений.
java.util.zip
Классы для обеспечения архивации.
javax.annotation.processing Классы, реализующие разнообразные механизмы обработки аннотаций.
javax.crypto
Классы и интерфейсы для криптографических операций.
javax.imageio
API для ввода-вывода графических изображений.
javax.management
Классы и интерфейсы, реализующие API Java
Management Extensions.
javax.naming
Классы и интерфейсы для доступа к службам имён.
javax.net
Дополнительные классы для поддержки сетевого взаимодействия.
javax.print
Классы и интерфейсы, реализующие вывод данных на печать.
javax.rmi
API для RMI-IIOP.
javax.script
Классы и интерфейсы, позволяющие использо- вать программы, написанные на скриптовых языках программирования.
javax.security.auth
Классы и интерфейсы, реализующие механизмы аутентификации и авторизации.
javax.security.cert
Классы и интерфейсы, реализующие поддержку сертификатов открытых ключей.
javax.security.sasl
Классы и интерфейсы, реализующие поддержку
SASL.
29
API для создания и воспроизведения MIDI- звуков.
javax.sound.sampled
Классы и интерфейсы для захвата, преобразо- вания и воспроизведения дискретных звуковых данных.
javax.sql
API для доступа к базам данных.
javax.swing
Набор легковесных компонентов для создания графических интерфейсов пользователя.
javax.swing.border
Классы и интерфейсы для создания рамок вокруг компонентов Swing.
javax.swing.colorchooser
Классы и интерфейсы, используемые компонен- том JColorChooser.
javax.swing.event
Классы событий, создаваемых компонентами
Swing.
javax.swing.filechooser
Классы и интерфейсы, используемые компонен- том JFileChooser.
javax.swing.plaf
Классы и интерфейсы, реализующие возмож- ности изменения внешнего вида компонентов
Swing.
javax.swing.table
Классы и интерфейсы для работы с компонентом javax.swing.JTable.
javax.swing.text
Классы и интерфейсы, реализующие редактиру- емые и нередактируемые текстовые компоненты.
javax.swing.tree
Классы и интерфейсы для работы с компонентом javax.swing.JTree javax.swing.undo
API для реализации функций undo / redo
(«отменить» / «вернуть»).
javax.tools
Интерфейсы для вызова внешних утилит
(например, компиляторов). javax.transaction
Классы и интерфейсы, описывающие правила взаимодействия менеджеров транзакций и менеджеров ресурсов для разных протоколов.
javax.xml
Классы и интерфейсы, необходимые для работы с XML, а также с основанными на XML протоколами.
org.w3c.dom
Базовые интерфейсы для DOM (Document Object
Model), использующиеся при обработке XML.
org.w3c.sax
Базовые классы и интерфейсы SAX API
Пакет java.lang
Основные классы и интерфейсы, входящие в пакет java.lang показаны на рис. 2.
30