Чтение онлайн

на главную - закладки

Жанры

Программирование на Java
Шрифт:

double

tan(double a)

тангенс

double

exp(double a)

e в степени a

double

log(double a)

натуральный логарифм a

max(… a, … b)

большее из двух чисел (для типов double, float, long, int )

min(… a, … b)

меньшее из двух чисел (для типов double, float, long, int )

double

pow(double a, double b)

a в степени b

double

random

случайное число от 0.0 до 1.0

double

rint(double a)

значение int, ближайшее к a

round(… a)

значение long для double ( int для float ), ближайшее к a

double

sqrt(double a)

квадратный корень числа a

double

toDegrees(double a)

преобразование из радианов в градусы

double

toRadians(double a)

преобразование из градусов в радианы

Строки

String

Этот класс используется в Java для представления строк. Он обладает свойством неизменяемости. После того как создан экземпляр этого класса, его содержимое уже не может быть модифицировано.

Существует много способов создать объект String. Наиболее простой, если содержимое строки известно на этапе компиляции, – написать текст в кавычках:

String abc = "abc";

Можно использовать и различные варианты конструктора. Наиболее простой из них – конструктор, получающий на входе строковый литерал.

String s = new String("immutable");

На первый взгляд, эти варианты создания строк отличаются только синтаксисом. На самом же деле различие есть, хотя в большинстве случаев оно несущественно. Рассмотрим пример:

public class Test {

public Test {

}

public static void main(String[] args) {

Test t = new Test;

String s1 = "Hello world !!!";

String s2 = "Hello world !!!";

System.out.println("String`s equally = " +

(s1.equals(s2)));

System.out.println(

"Strings are the same = " + (s1==s2));

}

}

В результате на консоль будет выведено:

String`s equally = true

Strings are the same = true

Теперь несколько модифицируем код:

public class Test {

public Test {

}

public static void main(String[] args) {

Test t = new Test;

String s1 = "Hello world !!!";

String s2 = new String("Hello world !!!");

System.out.println("String`s equally = " +

(s1.equals(s2)));

System.out.println(

"Strings are the same = " + (s1==s2));

}

}

В результате на консоль будет выведено:

String`s equally = true Strings are the same = false

Почему результат изменился? Дело в том, что создание нового объекта – это одна из самых трудоемких процедур в Java. Поэтому компилятор стремится уменьшить их количество, если это не приводит к непредсказуемому поведению программы.

В примере объявляются две переменные, которые инициализируются одинаковым значением. Поскольку класс String неизменяемый, их значения всегда будут одинаковыми. Это позволяет компилятору завести скрытую вспомогательную текстовую переменную, которая будет хранить такое значение, а все остальные переменные будут ссылаться на него же, а не порождать новые объекты. В результате в первом варианте программы создается лишь один объект String. Для большинства операций это несущественная разница. Исключение составляют действия, которые привязаны к конкретному объекту, а не к его значению. Это метод equals, методы wait/notify.

Во втором варианте указано динамическое обращение к конструктору. В этом случае компилятор уже не имеет возможности заниматься оптимизацией и JVM во время исполнения программы действительно создаст второй объект с точно таким же значением. Что мы и видим по результату выполнения примера.

В Java для строк определен оператор +. При использовании этого оператора производится конкатенация строк. В классе String также определен метод:

public String concat(String s);

Он возвращает новый объект-строку, дополненный справа строкой s.

Рассмотрим другой пример.

public class Test {

public static void main(String[] args) {

Test t = new Test;

String s = " prefix !";

System.out.println(s);

s = s.trim;

System.out.println(s);

s = s.concat(" suffix");

System.out.println(s);

}

}

prefix !

prefix !

prefix ! suffix

В данном случае может сложиться впечатление, что строку (объект String, на который ссылается переменная s ), можно изменять. В действительности это не так. В результате выполнения методов trim (отсечение пробелов в начале и конце строки) и concat создаются новые объекты-строки и ссылка s начинает указывать на новый объект-строку. Таким образом, меняется значение ссылки, объекты же неизменяемы.

Как уже отмечалось, строка состоит из двухбайтных Unicode-символов. Однако во многих случаях требуется работать со строкой как с набором байт (ввод/вывод, работа с базой данных и т.д.). Преобразование строки в последовательность байтов производится следующими методами:

* byte[] getBytes – возвращает последовательность байтов в кодировке, принятой по умолчанию (как правило, зависит от настроек операционной системы);

* byte[] getBytes(String encoding) – возвращает последовательность байтов в указанной кодировке encoding.

Поделиться:
Популярные книги

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Княжья Русь

Мазин Александр Владимирович
6. Варяг
Приключения:
исторические приключения
9.04
рейтинг книги
Княжья Русь

Мент

Константинов Андрей Дмитриевич
8. Бандитский Петербург
Детективы:
боевики
8.58
рейтинг книги
Мент

Наследник

Назимов Константин Геннадьевич
3. Травник
Фантастика:
фэнтези
6.80
рейтинг книги
Наследник

Страж Тысячемирья

Земляной Андрей Борисович
5. Страж
Фантастика:
боевая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Страж Тысячемирья

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Первый среди равных. Книга XII

Бор Жорж
12. Первый среди Равных
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга XII

Ваше Сиятельство 6

Моури Эрли
6. Ваше Сиятельство
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 6

Локки 2. Потомок бога

Решетов Евгений Валерьевич
2. Локки
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Локки 2. Потомок бога

Государь

Мазин Александр Владимирович
7. Варяг
Фантастика:
альтернативная история
8.93
рейтинг книги
Государь

Ты - наша

Зайцева Мария
1. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Ты - наша

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой