понедельник, 21 марта 2016 г.

Типы в ЯП Java

Преобразование типа
В ЯП Java, как и во многих других, имеются простые встроенные типы данных, имеющие приблизительно те же свойства

При выполнении операций с числами часто требуется преобразование типов (данные разного типа в одном выражении, тип результата не совпадает с типом данных).
Система выполняет автоматическое преобразование типа, если:
  • оба типа совместимы 
  • длина целевого типа больше длины исходного типа.
Преобразование типа производится по следующей схеме:
Сплошные линии обозначают преобразования, выполняемые без потери данных. Штриховые линии говорят о том, что при преобразовании может произойти потеря точности.

Типы char и boolean не совместимы ни между собой, ни с числовыми типами.

Программист может выполнить явное приведение типов,  которое обычно необходимо, когда преобразование из одного типа в другой автоматически не выполняется (преобразование с сужением). Для этого имя типа указывается в скобках явно перед преобразуемым значением:

double a = 3.14;
byte b1 = (byte) a;

Классы-обертки

Простые (примитивные) типы в Java используются из соображений производительности.
Однако, многие из стандартных структур данных, реализованных в Java, оперируют с объектами, и их нельзя использовать с примитивными типами.

В таких ситуациях используют обертки примитивных типов, которые представляют собой классы, помещающие примитивный тип в объект. Наименование класса-обертки обычно то же, что и у примитивного типа, только пишется с заглавной буквы (исключение - класс Character).
Пример работы с классами-обертками:

Задание 1
Наберите и отладьте пример.  Добавьте вычисление и вывод на экран значение выражения  ln(a)/(3,14a+1). Превратите это значение в строку вида " ln(a)/(3,14a+1)=..." вместо точек - значение.

Классы BigInteger и BigDecimal
Для работы с большими числами в в ЯП Java созданы специальные классы. BigInteger - для работы с длинными целыми, и BigDecimal - для работы с очень большими или очень малыми по модулю действительными числами.
Пример работы с классом BigInteger (для увеличения рисунка - нажмите на него):


Задание 2

Наберите и отладьте пример.  Добавьте блок, который складывает числа 1.234Е15 и 1.234Е-15. Воспользуйтесь примитивным типом double и классом BigDecimal. Сравните результаты.

Строки

Строка — это упорядоченная последовательность символов.

Для работы со строками в Java используютсяклассы:
  • String (созданный объект класса String не может быть изменен) 
  • StringBuilder (созданный объект класса String может быть изменен, обрабатывается быстрее, чем StringBuffer, но не используется в многопоточных средах) 
  • StringBuffer (созданный объект класса String может быть изменен, используется в многопоточных средах)


Пример работы с классом String
String str1 = "Мама мыла раму";
int length = str1.length(); // возвращает длину строки
char ch = str1.charAt(2); // возвращает символ, находящийся по указанному индексу в строке
String name = str1.substring(4, str1.length()-4); // возвращает новую строку, которая является подстрокой используемой строки.

Можно вызывать методы объекта при выводе на экран, и помните, что объект не меняется:
System.out.println("Большие буквы, сравните! "+str1.toUpperCase()+" "+str1);


Дополнительные примеры найдете здесь:

Пример работы с классом StringBuffer


Задание 3

  1. Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка. Вывести на экран все символы, расположенные внутри этих скобок. 
  2. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. (Можно использовать разные методы, в том числе разбиение строк, показанное в примере на http://study-java.ru/ )

Комментариев нет:

Отправить комментарий