Лекция A2. Некоторые классы ####################################################################################### Классы оболочек =========================================================== Для чего необходимы оболочки: * Использование в методах, сигнатура которых требует объекта * Использование специальных констант, имеющихся в классах-оболочках (MIN_VALUE, MAX_VALUE) * Использование специальных методов преобразования типов (например, преобразование в строки и из строк) Переход от простого типа к классу-оболочке (**boxing**) и обратный переход (**unboxing**) часто выполняется компилятором автоматически. .. code-block:: java Integer x, y; x = 12; y = 15; System.out.println(x+y); .. code-block:: java 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) .. code-block:: java 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** и статические методы для выполнения математических функций .. code-block:: none (sin, cos, max, min, ceil, floor, exp, log, pow и др.) Класс Random `````````````````````````````````````````````````````````` .. code-block:: java 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**: .. code-block:: java 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); Форматированный вывод: .. code-block:: java 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); .. code-block:: java 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); .. code-block:: java 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" .. code-block:: java 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]); .. code-block:: java 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()** .. code-block:: java StringBuffer output = new StringBuffer(110); output.append("Some text"); for(int i =0; i