Слайд 2Goals
Get to know “java.lang” package and classes
Get to know mechanism of exception
handling
Слайд 3java.lang package
Основные классы пакета java.lang:
• Object
• String
• Wrapper Clases
• Math,
• System,
• Runtime,
•
Throwable/Exception/Error
...
Слайд 4java.lang.Object
В Java “почти” все данные является объектами и наследуют Object.
"Основные" методы класса
Object:
• boolean equals(Object)
• int hashCode()
• String toString()
Д.з.: Изучить как реализованы эти методы в классах java.lang.String, java.lang.Integer и java.util.ArrayList.
Слайд 5Оператор instanceof
Object obj = new Object();
if (obj instanceof Object) {...}
...
String[] strArray
= {};
if (strArray instanceof String[]) {...}
...
int[] intArray = {1, 2, 3};
if (intArray[0] instanceof Object) {...}
Слайд 6java.lang.String
String - контейнер для 16-bit Unicode-символов.
Все строковые литералы в Java (например
"abc") являются объектами класса String.
Определение: String str;
Создание: str = new String();
str = new String("hi");
str = "hi";
str = "hi" + " there";
Слайд 7java.lang.String (продолжение)
Некоторые методы String:
• int length()
• boolean equals(String)
• boolean startsWith(String)
• String toUpperCase()
•
String toLowerCase()
• int indexOf(String)
• String subString(int)
Слайд 8Wrapper Classes
• Boolean • Character • Number
• Byte • Short • Integer
• Long • Double •
Float
Используются там, где нужны объекты. Содержат "полезные" поля и методы. Например:
• MAX_VALUE, MIN_VALUE
• SIZE
• byte byteValue(), int intValue(), ...
• int parseInt(String), long parseLong(String)
...
Слайд 9String и Wrapper classes. Особенности
• Перегруженные операции
• Передача в метод по значению
public static void summ(Integer i) {
i = i + new Integer(2);
}
public static void main(String[] args) {
Integer i1 = 10;
summ(i1);
int i2 = 10;
summ(i2);
System.out.println("i1="+i1+";i2="+i2);
}
Слайд 10java.lang.Math
Статические методы для операций над числами.
• int abs(int), long abs(long), ...
• double
cos(double), double acos(double), ...
• double exp(double), double log(double), ...
• int max(int, int), long min(long, long), ...
• double pow(double, double)
• double random()
...
Слайд 11java.lang.System
Содержит "полезные" поля и методы. Конструктор недоступен. Все поля и методы статические.
Класс
предоставляет доступ к потокам in, out, err, методы доступа к properties и другие.
System.out.println("Hello World!");
System.currentTimeMillis();
System.exit(1);
System.getProperty("path.separator");
...
Слайд 12java.lang.Runtime
Позволяет получить доступ к "окружению" и запускать независимые процессы.
Process process =
runtime.exec(...);
Во время выполнения в JVM есть только один экземпляр Runtime. Конструктор этого класса недоступен, но (в отличии от System) здесь нестатические методы.
Как можно получить доступ к ним?
Слайд 13java.lang.Runtime (продолжение)
Объект Runtime получают с помощью “static” метода getRuntime().
* Это паттерн
Синглтон о котором ещё будет отдельный разговор.
try {
Runtime.getRuntime().exec("notepad.exe");
} catch(IOException e) {
e.printStackTrace();
}
Что такое try/catch?
Слайд 14Exceptions: try catch final
Exception handling - способ обработки "исключительных" ситуаций во время
выполнения программы.
try {
doSomething(); // code that may throw exception/error
} catch(AnyThrowable1 e) {
... // exception handler 1
} catch(AnyThrowable2 | AnyThrowable3 e) {
... // exception handler 2 and 3
} finally {
... // clean-up code
}
Слайд 15Throwable, Exception, Error
RuntimeException - наследник Exception, зарезервированный для исключений связанных с некорректным
использованием "стандартных" API.
Исключения, которые не являются наследниками RuntimeException, должны "отлавливаться".
Слайд 16Exceptions: throw throws
public class ThrowDemo {
static void demo1() {
throw
new NullPointerException(); // RuntimeExceptions- OK
}
static void demo2() {
throw new IOException(); // compile error
// IOException must be caught or declared to be thrown
}
static void demo3() throws IOException {
throw new IOException();
// IOException is declared to be thrown - OK
}
}