Лекция 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");

Вопросы для самоконтроля