Top Banner
1 Библиотека классов Java Класс Object Object clone() – создает новый объект, являющийся копией вызывающего boolean equals(Object object) – определяет, является ли один объект равным другому int hashCode() – вычисляет хэш-код объекта void finalize() – завершающие действия перед вызовом gc String toString() – возвращает строку, содержащую описание вызывающего объекта. Этот метод вызывается автоматически, когда объект выводится методом print() или println(). Класс Object – вершина иерархии классов библиотеки Java
33

9. java lecture library

Jun 30, 2015

Download

Education

MERA_school
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 9. java lecture library

1

Библиотека классов Java

Класс Object

• Object clone() – создает новый объект, являющийся копией вызывающего

• boolean equals(Object object) – определяет, является ли один объект равным другому

• int hashCode() – вычисляет хэш-код объекта

• void finalize() – завершающие действия перед вызовом gc

• String toString() – возвращает строку, содержащую описание вызывающего объекта. Этот метод вызывается автоматически, когда объект выводится методом print() или println().

Класс Object – вершина

иерархии классов библиотеки Java

Page 2: 9. java lecture library

2

Библиотека классов Java

Переопределение equals() и hashCode()

1. При переопределении метода equals() надо соблюдать следующие правила (general contract):

- obj.equals(null) == false

- obj.equals(obj) == true

- если obj1.equals(obj2) == true, то obj2.equals(obj1) == true

- если ob1.equals(obj2) == true & ob2.equals(obj3) == true, то

obj1.equals(obj3) == true

2. Если класс переопределяет метод equals(), он должен также

переопределять hashCode()

Page 3: 9. java lecture library

3

Библиотека классов Java

Пример переопределения equals() и hashCode()

public final class PhoneNumber {

private final short areaCode;

private final short exchange;

private final short extension;

public boolean equals(Object o) {

if (o==this) return true;

if (!(o instanceof PhoneNumber))

return false;

PhoneNumber pn = (PhoneNumber)o;

return pn.extensions == extension &&

pn.exchange == exchange &&

pn.areaCode == areaCode;

}

public int hashCode() {

int result = 17;

result = 31 * result + areaCode;

result = 31 * result + prefix;

result = 31 * result + lineNumber;

return result;

}

}

Page 4: 9. java lecture library

4

Библиотека классов Java

Метод finalize()

Метод finalize() не переопределять!!!

Причины:

1)Невозможно предсказать, когда он будет вызван

2)Внутри finalize() не обрабатываются исключения

3)Если в finalize() есть «медленный» код, то он будет препятствовать своевременному освобождению памяти сборщиком мусора -> OutOfMemory

Page 5: 9. java lecture library

5

Библиотека классов Java

Классы оболочки

Для чего необходимы оболочки:

1. Использование в методах, сигнатура которых требует объекта

2. Использование специальных констант, имеющихся в классах-оболочках (MIN_VALUE, MAX_VALUE)

3. Использование специальных методов преобразования типов (например, преобразование в строки и из строк)

Page 6: 9. java lecture library

6

Библиотека классов Java

Классы оболочки

Переход от простого типа к классу-оболочке

(boxing) и обратный переход (unboxing) часто

выполняется компилятором автоматически

Integer x, y;

x = 12; y = 15;

System.out.println(x+y);

auto-boxing

Integer x, y;

x = new Integer(12); y = new Integer(15);

System.out.println(

x.intValue()+y.intValue()); auto-unboxing

Page 7: 9. java lecture library

7

Библиотека классов Java

Классы оболочки

byte byteValue() short shortValue()

int intValue() long longValue()

float floatValue() double doubleValue()

int compareTo(Byte anotherByte)

int compareTo(Double anotherDouble)

int compareTo(Float anotherFloat)

int compareTo(Integer anotherInteger)

int compareTo(Long anotherLong)

int compareTo(Short anotherShort)

Page 8: 9. java lecture library

8

Библиотека классов Java

Классы оболочки

Метод Описание

static Integer decode(String s) String –> Integer (может принимать строковое представление в 10-й, 8-й, 16-й системах счисления)

static int parseInt(String s) String -> int (только десятичный)

static int parseInt(String s, int radix) String -> int (radix = 2, 8, 10, 16)

String toString() Integer -> String

static String toString(int i) int -> String

static Integer valueOf(int i) int -> Integer

static Integer valueOf(String s) String -> Integer

static Integer valueOf(String s, int radix)

String -> Integer (radix = 2, 8, 10, 16)

Page 9: 9. java lecture library

9

Библиотека классов Java

Класс Math

Класс Math содержит 2 статические константы:

Math.E, Math.PI

и статические методы для выполнения

математических функций (sin, cos, max, min,

ceil, floor, exp, log, pow и др.)

double x = 11.635;

System.out.println("The value of e is” + Math.E);

System.out.println("exp” + x + “is” + Math.exp(x));

System.out.println("log” + x + “is” + Math.log(x));

Page 10: 9. java lecture library

10

Библиотека классов Java

Класс Math

При необходимости можно импортировать

статические константы и методы с помощью

директивы import static

import static java.lang.Math.*;

double x = 11.635;

System.out.println("The value of e is” + E);

System.out.println("exp” + x + “is” + exp(x));

System.out.println("log” + x + “is” + log(x));

Page 11: 9. java lecture library

11

Библиотека классов Java

Класс Random

import java.util.*;

Random r = new Random();

int i = r.nextInt(100);

Page 12: 9. java lecture library

12

Библиотека классов Java

Класс String

Два способа создания объекта String:

1) String greeting = "Hello world!";

2) char[ ] helloArray = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘ ’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’,’!’ };

String greeting = new String(helloArray);

System.out.println(greeting);

Внимание! Класс String работает с неизменяемыми строками

Page 13: 9. java lecture library

13

Библиотека классов Java

Класс String

String()

String(String source)

String(StringBuffer buffer)

String(char charArray[ ])

String(char charArray[ ], int offset, int count)

String(byte byteArray[ ])

String(byte byteArray[ ], int offset, int count)

String(byte byteArray[ ], String enc)

String(byte byteArray[ ], int offset, int count, String enc)

Конструкторы класса String

Page 14: 9. java lecture library

14

Библиотека классов Java

Класс String

Длина строки:

String s = "Dot saw I was Tod";

int len = s.length();

Конкатенация:

String s3 = s1 + s2;

String s3 = s1.concat(s2);

“2” + 2 + 2 = 222

2 + 2 + “2” = 42

“2” + (2 + 2) = 24

Page 15: 9. java lecture library

15

Библиотека классов Java

Класс String

Форматированный вывод:

public PrintStream format(String format, Object... args)

public PrintStream format(Locale l, String format, Object... args)

public PrintStream printf(String format, Object... args)

public PrintStream printf(Locale l, String format, Object... args)

System.out.printf("The value of the float variable is %f, while the

value of the " + “integer variable is %d, and the string is %s",

floatVar, intVar, stringVar);

Page 16: 9. java lecture library

16

Библиотека классов Java

Класс String

Метод Описаниеchar charAt(int index) Возвращает символ строки с индексом index.

void getChars(int srcBegin, int srcEnd, char[ ] dest, int destBegin)

Включает в массив символов dest[ ], начиная с индекса dstBegin, часть строки от индекса srcBegin вкл. до индекса srcEnd искл.

byte[ ] getBytes() Содержимое строки записывается в массив байтов.

char[ ] toCharArray() Преобразует строку в массив символов типа char.

boolean equals

(Object obj)

boolean equalsIgnoreCase (String s)

Возвращают true, если аргумент obj не равен null, является объектом класса String, и строка, содержащаяся в нем, полностью идентична данной строке с учетом (без учета) регистра символов.

Page 17: 9. java lecture library

17

Библиотека классов Java

Класс String

Метод Описаниеint compareTo (String str)

int compareToIgnoreCase (String str)

Возвращают целое число типа int, вычисленное по следующим правилам:

1. Сравниваются символы данной строки и строки str с одинаковыми индексами, пока не встретятся различные символы (с учетом регистра) или одна из строк не закончится.

2. Пусть разные символы встретились в позиции k. Тогда метод возвращает значение

this.charAt(k)-str.charAt(k)

3. Пусть символы в строках были одинаковыми, пока не за-кончилась одна из строк. Тогда метод вернет значение: this.length()-str.length()

4. Если строки совпадают, метод вернет 0.

Page 18: 9. java lecture library

18

Библиотека классов Java

Класс String

Метод Описаниеboolean regionMatches (int toffset, String other, int ooffset, int len)

Сравнивает подстроку данной строки с подстрокой той же длины len строки, заданной аргументом str. Сравнение начинается с позиции toffset данной строки и c позиции ooffset строки, заданной аргументом str. Метод возвращает false, если в сравниваемых участках строк встретилась хотя бы одна пара несовпадающих (с учетом регистра) символов.

boolean startsWith (String str)

boolean startsWith (String str, int toffset)

Возвращает true, если данная строка начинается с подстроки str (начиная с позиции toffset)

boolean endsWith (String suffix)

Возвращает true, если данная строка заканчивается подстрокой str

Page 19: 9. java lecture library

19

Библиотека классов Java

Класс String

Метод ОписаниеString substring (int beginIndex, int endIndex)

Возвращает подстроку данной строки, начиная с индекса beginIndex до индекса endIndex.

String replace (char oldChar, char newChar)

Заменяет в данной строке все вхождения символа oldChar символом newChar

String toUpperCase() Преобразует все символы строки к верхнему регистру.

String toLowerCase() Преобразует все символы строки к нижнему регистру.

String trim() Удаляет пробельные символы в начале и конце строки

static String valueOf (<type> b) Преобразует аргумент в его строковое представление.

Page 20: 9. java lecture library

20

Библиотека классов Java

Класс StringBuffer

StringBuffer – это строковый буфер переменной длины.

Создать объект класса StringBuffer можно только с помощью

конструкторов:

StringBuffer() - пустой строковый буфер с емкостью 16 символов.

StringBuffer(int length) - пустой строковой буфер с емкостью length

StringBuffer(String str) - строковый буфер емкостью str.length()+16, содержащий строку str.

Если строковый буфер начинает переполняться, его емкость

автоматически увеличивается.

Page 21: 9. java lecture library

21

Библиотека классов Java

Класс StringBuffer

Увеличение емкости буфера:

ensureCapacity(int minCapacity)

Установка емкости буфера:

setLength(int newLength)

Длина строки в буфере:

length()

Емкость буфера:

capacity()

Page 22: 9. java lecture library

22

Библиотека классов Java

Класс StringBuffer

Метод Описание

append (<type> elem) Добавление аргумента к буферу

append (String str) Добавление строки к буферу

append (Object obj) Добавление объекта к буферу (выполняется метод toString() )

insert (int ind, <type> elem)

Вставка элемента в буфер в позицию ind

insert (int ind, String str) Вставка строки в буфер в позицию ind

insert (int ind, Object obj) Вставка объекта в буфер в позицию ind

Page 23: 9. java lecture library

23

Библиотека классов Java

Класс StringBuffer

Метод Описаниеdelete(int begin, int end) Удаление подстроки

deleteCharAt(int ind) Удаление символа

replace(int begin, int end, String str)

Замена подстроки

reverse() Обращение строки

Page 24: 9. java lecture library

24

Библиотека классов Java

Класс StringTokenizer

Выполняет синтаксический разбор (парсинг) строки.

Конструкторы:

StringTokenizer(String str)

StringTokenizer(String str, String delim)

Методы:

String nextToken()

boolean hasMoreTokens()

int countTokens()

Page 25: 9. java lecture library

25

Библиотека классов Java

Класс StringTokenizer

String s = “Строка, предназначенная для разбора”;

StringTokenizer st = new StringTokenizer(s,” \t\n\r,.”);

while (st.hasMoreTokens())

{

System.out.println(st.nextToken());

}

Page 26: 9. java lecture library

26

Библиотека классов JavaКласс Runtime

Класс Runtime инкапсулирует JVM.

Метод Описаниеstatic Runtime getRuntime() получить ссылку на текущий Runtime-объект

Process exec(String progname) Передает строку progname командному процессору. Возвращает объект типа Process.

void exit(int exitCode) Останавливает выполнение JVM. Возвращает код завершения родительскому процессу (0 – нормальное завершение).

long freeMemory() Возвращает приблизительное количество свободной памяти (в байтах), доступное JVM.

void gc() Инициирует процесс сборки мусора

long totalMemory() Возвращает общее количество памяти (в байтах), доступное JVM.

Page 27: 9. java lecture library

27

Библиотека классов Java

Класс Runtime

class MemoryDemo

{public static void main(String args[ ])

{Runtime r = Runtime.getRuntime();

long mem1, mem2;

System.out.println(“Полный объем памяти: “ + r.totalMemory());

System.out.println(“Свободная память: “ + r.freeMemory());

{ Integer massiv[ ] = new Integer[1000];

System.out.println(“Свободная память: “ + r.freeMemory());

}

r.gc();

System.out.println(“Свободная память после gc:” + r.freeMemory());

Page 28: 9. java lecture library

28

Библиотека классов Java

Класс Process

Класс Process инкапсулирует процесс.

void destroy()

Завершает процесс.

int waitFor()

Приостанавливает выполнение текущего

потока до завершения вызывающего процесса

Page 29: 9. java lecture library

29

Библиотека классов Java

Класс Process

class ExecDemo

{public static void main(String args[ ])

{Runtime r = Runtime.getRuntime();

Process p = null;

try

{p = r.ехес("notepad"); p.waitFor () ; }

catch (Exception e)

{System.out.println("Ошибка выполнения notepad.");}

System.out.println("Notepad завершился " + p.exitValue());

}

}

Page 30: 9. java lecture library

30

Библиотека классов Java

Класс System

Класс System выполняет функции, аналогичные

классу Runtime, т.е. взаимодействие с системой в

ходе выполнения программы. В этом классе

продублировано большинство методов класса

Runtime (loadLibrary(), exit(), gc()) но, в отличие от

Runtime, в классе System эти методы являются

статическими.

Page 31: 9. java lecture library

31

Библиотека классов Java

Класс System

Для любой среды Java 2 доступны переменные

среды, приведенные в табл. Часть из этих

переменных в целях безопасности доступны

только для приложений (не для апплетов).

Чтобы получать значения переменных среды либо

изменять их, в классе System существуют методы

String getProperty(String variable)

String setProperty(String variable, String value)

Page 32: 9. java lecture library

32

Библиотека классов JavaКласс System

Имя Значение Доступ для апплета java.version Версия интерпретатора Java да java.vendor Строка идентификатора, заданная разработчиком да java.vendor.url URL разработчика да java.class.version Версия Java API да java.class.path Значение переменной CLASSPATH нет java.home Каталог, в котором инсталлирована среда Java нет java.compiler Компилятор JIT нет os.name Название операционной системы да os.arch Архитектура компьютера, на котором выполняется программа да os.version Версия операционной системы Web-узла да file.separator Зависящие от платформы разделители файлов (/ или \) да path.separator Зависящие от платформы разделители пути (: или ;) да line.separator Зависящие от платформы разделители строк (\n или \r\n) да user.name Имя текущего пользователя нет user.home Домашний каталог пользователя нет user.dir Текущий рабочий каталог нет user.language 2-символьный код языка для местности по умолчанию нет user.region 2-символьный код страны для местности по умолчанию нет user.timezone Временной пояс по умолчанию нет user.encoding Кодировка сиволов для местности по умолчанию нет user.encoding.pkg Пакет, содержащий конверторы для преобразования символов

из местной кодировки в Unicode нет

Page 33: 9. java lecture library

33

Библиотека классов Java

Класс System

//отображаем путь к текущему каталогу пользователя

System.out.println(System.getProperty(“user.dir”));

//устанавливаем текущим каталогом пользователя c:\java

System.setProperty(“user.dir”,”c:\java”);