Лекция A2. Некоторые классы¶
Классы оболочек¶
Для чего необходимы оболочки:
- Использование в методах, сигнатура которых требует объекта
- Использование специальных констант, имеющихся в классах-оболочках (MIN_VALUE, MAX_VALUE)
- Использование специальных методов преобразования типов (например, преобразование в строки и из строк)
Переход от простого типа к классу-оболочке (boxing) и обратный переход (unboxing) часто
выполняется компилятором автоматически.
Integer x, y;
x = 12;
y = 15;
System.out.println(x+y);
Integer x, y;
x = new Integer(12);
y = new Integer(15);
System.out.println(
x.intValue()+y.intValue());
Преобразование из строки (или в строку)
- static Integer decode(String s)
- static int parseInt(String s)
- static int parseInt(String s, int radix)
- String toString()
- static String toString(int i)
- static Integer valueOf(int i)
- static Integer valueOf(String s)
- static Integer valueOf(String s, int radix)
class Test{
public static void main(String Args[]){
Integer x;
x = Integer.decode("123");
System.out.println(x);
}
}
Класс Math¶
Класс Math содержит 2 статические константы:
Math.E, Math.PI
и статические методы для выполнения математических функций
(sin, cos, max, min, ceil, floor, exp, log, pow и др.)
Класс Random¶
import java.util.*;
Random r = new Random();
int i = r.nextInt(100);
Методы:
- boolean nextBoolean() - возвращает следующее случайное значение типа boolean
- void nextBytes(byte[] buf) - заполняет массив случайно созданными значениями
- double nextDouble() - возвращает следующее случайное значение типа double
- float nextFloat() - возвращает следующее случайное значение типа float
- synchronized double nextGaussian() - возвращает следующее случайное значение гауссова случайного числа, т.е. значения, центрированное по 0.0 со стандартным отклонением в 1.0 (кривая нормального распределения)
- int nextInt(int n) - возвращает следующее случайное значение типа int в диапазоне от 0 до n
- int nextInt() - возвращает следующее случайное значение типа int
- long nextLong() - возвращает следующее случайное значение типа long
- synchronized void setSeeD(long seed) - устанавливает начальное значение
Класс String¶
Класс String работает с неизменяемыми строками
Два способа создания объекта String:
String greeting = "Hello world!";
char[ ] helloArray = {'H','e','l','l','o',' ','w','o','r','l','d','!'};
String greeting = new String(helloArray);
System.out.println(greeting);
Форматированный вывод:
System.out.format("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);
String[] auto = {"Волга", "Чайка", "Жигули"}; //задан массив строк
String result = "В гараже стоят машины: "; //задана строка
//прибавляем к строке элементы массива
for(int i = 0; i < auto.length; i++){
//если элемент не последний, разделяем запятой
if(i != auto.length-1 )
result += auto[i] + ", ";
//если последний, ставим после него точку
else
result += auto[i] + ".";
}
//выводим результат
System.out.print(result);
String s = "www.mysite.com";
String name = s.substring(4, s.length()-4);
System.out.println(name); // на консоль выведет "mysite"
String domain = s.substring(4);
System.out.println(domain); // на консоль выведет "mysite.com"
String isbn = "978-3-16-148410-0";
String[] isbnParts = isbn.split("-");
System.out.println("префикс EAN.UCC: " + isbnParts[0]);
System.out.println("номер регистрационной группы: " + isbnParts[1]);
System.out.println("номер регистранта: " + isbnParts[2]);
System.out.println("номер издания: " + isbnParts[3]);
System.out.println("контрольная цифра: " + isbnParts[4]);
String s = "www.mysite.com";
boolean isContain1 = s.contains("mysite");
System.out.println(isContain1);// нашел - выведет true
boolean isContain2 = s.contains("mysite.ru");
System.out.println(isContain2);// не нашел - выведет false
boolean equals(Object anObject) — проверяет идентичность строк. Возвращает true только в том случае, если встроках представлена одинаковая последовательность символов одной величины.
int compareTo(String anotherString) — так же проверяет идентичность строк, однако, в отличии от метода equals возвращает:
- нулевое значение, если строки равны,
- целое отрицательное число, если первая строка предшествует второй
- целое положительное число, если первая строка следует за второй
Класс StringBuffer¶
StringBuffer – это строковый буфер переменной длины.
Создать объект класса StringBuffer можно только с помощью
конструкторов:
- StringBuffer() - пустой строковый буфер с емкостью 16 символов.
- StringBuffer(int length) - пустой строковой буфер с емкостью length
- StringBuffer(String str) - строковый буфер емкостью str.length()+16, содержащий строку str.
Если строковый буфер начинает переполняться, его емкость
автоматически увеличивается.
- Увеличение емкости буфера: ensureCapacity(int minCapacity)
- Установка емкости буфера: setLength(int newLength)
- Длина строки в буфере: length()
- Емкость буфера: capacity()
StringBuffer output = new StringBuffer(110);
output.append("Some text");
for(int i =0; i<count; i++) {
output.append(i);
}
return output.toString();
Класс 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());
}
}
Класс System¶
Содержит средства для взаимодействия с системой.
- System.gc() - вызов сборщика мусора.
- System.exit() - выход из JVM.
//отображаем путь к текущему каталогу пользователя
System.out.println(System.getProperty("user.dir"));
//устанавливаем текущим каталогом пользователя c:\java
System.setProperty("user.dir","c:\java");