79
программы, и которая называется “куча” (heap), а этот механизм
требуют сложного
управления памятью и потребляет гораздо больше места для хранения.
По соображениям производительности, класс String в Java разработан, так,
чтобы быть чем-то промежуточным между примитивными типами данных и типами
данных типа класс. Как уже было отмечено выше специальные характеристики типа
String включают в себя:
•
'+'
оператор, который выполняет сложение примитивных типов
данных (таких, как int и double), и перегружен, чтобы работать на объектах
String. Операция '+' выполняет конкатенацию двух операндов типа String.
•
Java не поддерживает механизма перегрузки операций по
разработке программного обеспечения. В языке, который поддерживает
перегрузку операций, например C ++, вы можете превратить оператор '+' (с
помощью перегрузки) в оператор для выполнения сложения или вообще
вычитания, например двух матриц, кстати это будет примером плохого кода.
В Java оператор '+' является единственным оператором, который внутренне
перегружен, чтобы поддержать конкатенацию (сложение) строк в Java.
Нужно
принять к сведению, что '+' не работает на любых других произвольных
объектах, помимо строк,
например, таких как рассмотренные нами ранее
классы Point или Circle.
Теперь, собственно о строках. Существуют несколько
способов создания
строк. Строка String может быть получена одним из способов:
•
непосредственно из присвоения строкового литерала ссылке типа
String – таким же
способом как примитивные типы данных;
•
или с помощью оператора new и конструктора класса String,
аналогично вызову конструктора любого другого класса. Тем не менее, этот
способ не часто используется и использовать его не рекомендуется.
Для
примера
:
String str1 = "Java is Hot"; //
неявный
вызов
конструктора
через
присваивание
строкового
литерала
String str2 = new String("I'm cool");
//
явный
вызов
конструктора
через
new
80
char[] array = { 'h', 'e', 'l', 'l', 'o', '.' }
;
//
еще
один
способ
создания
строки
В
первом случае str1 объявлена как cсылка типа String и инициализируется
строкой "
Java is Hot
" . Во второй строрке, str2 объявлена как ссылка на строку и
инициализируется с помощью вызова оператора new и конструктора, который
инициализирует ее значением “
I'm cool
” .
•
Строковые литералы хранятся в общем пуле. Это облегчает совместное
использование памяти для строк с тем же содержанием в целях сохранения
памяти. Объекты строк , выделенные с помощью оператора new хранятся в
куче (heap), а там нет разделяемого хранилища для того же самого контента
(содержания).
Достарыңызбен бөлісу: