Java Types Flashcards
Назовите Целочисленные типы
byte, short, char, int, long
Назовите типы с плавающей точкой
float, double
Какие типы данных в Java вы знаете
Целочисленные типы, типы с плавающей точкой, логический(boolean)
максимальное значение в типе byte
127
максимальное значение в типе short
32к
максимальное значение в типе char
1 символ
максимальное значение в типе int
2млрд
максимальное значение в типе long
19-ти знач.
отличие float от double
float в 2 раза меньше, double точнее
“строковые” классы
String/StringBuffer /StringBuilder
String
бъект, что представляет последовательность символов. Для создания и манипулирования строками Java платформа предоставляет общедоступный финальный (не может иметь подклассов) класс java.lang.String. Данный класс является неизменяемым (immutable) — созданный объект класса String не может быть изменен.
StringBuffer
Строки являются неизменными, поэтому частая их модификация приводит к созданию новых объектов, что в свою очередь расходует драгоценную память. Для решения этой проблемы был создан класс java.lang.StringBuffer, который позволяет более эффективно работать над модификацией строки. Класс является mutable, то есть изменяемым — используйте его, если Вы хотите изменять содержимое строки. StringBuffer может быть использован в многопоточных средах, так как все необходимые методы являются синхронизированными.
StringBuilder
ласс, что представляет изменяемую последовательность символов. Класс был введен в Java 5 и имеет полностью идентичный API с StringBuffer. Единственное отличие — StringBuilder не синхронизирован. Это означает, что его использование в многопоточных средах нежелательно. Следовательно, если вы работаете с многопоточностью, Вам идеально подходитStringBuffer, иначе используйте StringBuilder, который работает намного быстрее в большинстве реализаций.
Можно ли наследовать строковый тип?
Классы объявлены final, поэтому наследоваться не получится.
конкатенация строк.
объединение строк
stringBuffer.append(“DDD”).append(“EEE”);
преобразовать строку в число?
Integer.valueOf(x);
сравнить значение двух строк?
equals();
обрезать пробелы в конце строки?
s.trim()
заменить символ в строке?
replace()
получить часть строки?
substring()
пул строк
Пул строк – это набор строк, который хранится в памяти Java heap. Мы знаем, что String это специальный класс в Java, и мы можем создавать объекты этого класса, используя оператор new точно так же, как и создавать объекты, предоставляя значение строки в двойных кавычках.
Диаграмма ниже объясняет, как пул строк размещается в памяти Java heap и что происходит, когда мы используем различные способы создания строк. Пул строк помогает экономить большой объем памяти, но с другой стороны создание строки занимает больше времени. Когда мы используем двойные кавычки для создания строки, сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка.
Тем не менее, когда мы используем оператор new, мы принуждаем класс String создать новый объект строки, а затем мы можем использовать метод intern() для того, чтобы поместить строку в пул, или получить из пула ссылку на другой объект String с таким же значением.
String s1 = “Cat”;
String s2 = “Cat” //будут одинаковые сылки;
String s3 = new String(“Cat”); ///ссылка будет отличаться
разбить строку на подстроки по заданному разделителю?
split()
Можно ли синхронизировать доступ к строке?
String сам по себе потокобезопасный класс. Если мы работаем с изменяемыми строками, то нужно использовать StringBuffer.
intern()?
Когда метод intern() вызван, если пул строк уже содержит строку, эквивалентную к нашему объекту, что подтверждается методом equals(Object), тогда возвращается ссылка на строку из пула. В противном случае объект строки добавляется в пул и ссылка на этот объект возвращается.