Java Строки…


Строка Java

В Java строка — это объект, представляющий собой последовательность символов. Массив символов работает так же, как и строка Java. Например:

char[] ch={'A','B','C','D','E','F','G','H','I','J'};  
String s=new String(ch);  
Is same as
String s="ABCDEFGHIJ"; 

Войти в полноэкранный режим Выйти из полноэкранного режима

Класс Java String предоставляет множество методов для выполнения операций над строками, таких как compare(), concat(), equals(), split(), length(), replace(), compareTo().

Интерфейс CharSequence

Интерфейс CharSequence используется для представления последовательности символов. Его реализуют классы String, StringBuffer и StringBuilder. Это означает, что мы можем создавать строки в Java, используя эти три класса.

Строка Java является неизменяемой, что означает, что она не может быть изменена. Каждый раз, когда мы изменяем какую-либо строку, создается новый экземпляр Строковые объекты неизменяемы. Immutable означает «неизменяемый» или «неизменяемый». Для работы с изменяемыми строками можно использовать классы StringBuffer и StringBuilder.

Вообще говоря, строка — это последовательность символов. Но в Java строка — это объект, представляющий последовательность символов. Для создания объекта string используется класс java.lang.String.

Существует два способа создания объекта String:
1. С помощью строкового литерала
2. С помощью ключевого слова new

  1. Когда строковый литерал используется для создания строкового объекта, сначала проверяется, существует ли уже эта строка в String Pool. String Pool — это набор строковых констант, который находится в области кучи. Если строка уже существует в этом String Pool, то возвращается ссылка, в противном случае в этом пуле создается новый строковый объект и возвращается ссылка на этот вновь созданный объект.

  2. Когда ключевое слово new используется для создания строкового объекта, всегда создается объект в области кучи и возвращается ссылка на этот объект. При создании строкового объекта в области кучи проверяется, присутствует ли этот строковый объект в пуле строк или нет. Если строковый объект не присутствует в String Pool, то создается новый объект в String Pool. Но вновь созданная строковая переменная всегда будет указывать на строковый объект в куче, а не в String Pool.

String Pool Example
public class Main {

        public static void main(String[] args) {

            String name1 = "Tom";
            String name2 = "Tom";//name1.intern();

            String name3 = new String("Bob");
            String name4 = "Bob";

            System.out.println(name1 == name2);
            System.out.println(name3 == name4);

        }
    }

Вход в полноэкранный режим Выход из полноэкранного режима

выход
true
false

StringBuilder

— StringBuilder представляет собой изменяемую последовательность символов.
— Экземпляр этого класса не гарантирует синхронизацию и поэтому не должен использоваться в многопоточных средах.
— По возможности мы всегда должны стараться использовать StringBuilder вместо StringBuffer, так как StringBuilder быстрее StringBuffer в большинстве реализаций.

Ниже приведены методы класса StringBuilder и их описания. Они могут использоваться как по отдельности, так и в комбинации.

  1. append(): Добавляет строковое представление указанного аргумента к указанной последовательности экземпляров StringBuilder.
  2. insert(): Вставляет строковое представление указанного аргумента в указанную последовательность экземпляров StringBuilder.
String builder example
public class Main {

        public static void main(String[] args) {

            StringBuilder stringBuilder = new StringBuilder("Abhiram");
            System.out.println(stringBuilder);
            stringBuilder.append(" Karnam");
            System.out.println(stringBuilder);
            stringBuilder.insert(8," Rama");
            System.out.println(stringBuilder);
}}
output:
Abhiram
Abhiram Karnam
Abhiram Rama Karnam

Вход в полноэкранный режим Выход из полноэкранного режима
Note: insert method can be used for appending the string at the end of the specified string using the length() function.
stringBuilder.insert("Abhiram".length()," Karnam");
//this results "Abhiram Karnam"
Войти в полноэкранный режим Выход из полноэкранного режима

StringBuffer

— Класс StringBuffer представляет собой безопасную для потока, изменяемую последовательность символов.

— Строковый буфер подобен строке, но может быть изменен. В любой момент времени он содержит определенную последовательность символов, но длина и содержание этой последовательности могут быть изменены с помощью определенных вызовов методов.

— Методы класса StringBuffer синхронизированы, где это необходимо, так что все операции над конкретным экземпляром ведут себя так, как будто они происходят в некотором последовательном порядке, который соответствует порядку вызовов методов, выполняемых каждым из отдельных потоков.

— Основными операциями над экземпляром StringBuffer являются методы append и insert, которые перегружены так, чтобы принимать данные любого типа. Каждый из них преобразует заданные данные в строку, а затем добавляет или вставляет символы этой строки в строковый буфер.

— Метод append всегда добавляет символы в конец буфера, а метод insert добавляет символы в указанную точку.

Ниже приведены методы класса StringBuffer и их описания. Их можно использовать как по отдельности, так и в комбинации. Эти методы синхронизированы и могут быть использованы в многопоточной среде.

  1. append(): Добавляет строковое представление указанного аргумента к указанной последовательности экземпляров StringBuffer.

  2. insert(): Вставляет строковое представление указанного аргумента в указанную последовательность экземпляров StringBuffer.

String buffer example
public class Main {

        public static void main(String[] args) {

            StringBuffer stringBuffer = new StringBuffer("Abhiram");
            System.out.println(stringBuffer);
            stringBuffer.append(" Karnam");
            System.out.println(stringBuffer);
            stringBuffer.insert(8, "Rama ");
            System.out.println(stringBuffer);
        }
    }

output:
Abhiram
Abhiram Karnam
Abhiram Rama Karnam

Вход в полноэкранный режим Выход из полноэкранного режима
Java String Example
public class StringExample{    
public static void main(String args[]){    
String s1="java";//creating string by Java string literal    
char ch[]={'s','t','r','i','n','g','s'};    
String s2=new String(ch);//converting char array to string    
String s3=new String("example");//creating Java string by new keyword    
System.out.println(s1);    
System.out.println(s2);    
System.out.println(s3);    
}}    

Войти в полноэкранный режим Выход из полноэкранного режима

Приведенный выше код преобразует массив char в объект String. И выводит объекты String s1, s2 и s3 на консоль с помощью метода println().

Ниже перечислены некоторые особенности String, которые делают объекты String неизменяемыми.

1. ClassLoader:

ClassLoader в Java использует в качестве аргумента объект String. Если объект String является изменяемым, то его значение может быть изменено, и класс, который должен быть загружен, может быть другим. Чтобы избежать такого рода неправильного толкования, String является неизменяемым.

2. Безопасность потока:

Поскольку объект String неизменяем, нам не нужно заботиться о синхронизации, которая требуется при совместном использовании объекта в нескольких потоках.

3. Безопасность:

Как мы видели при загрузке классов, неизменяемые объекты String позволяют избежать дальнейших ошибок, загружая правильный класс. Это приводит к повышению безопасности прикладной программы. Рассмотрим пример банковского программного обеспечения. Имя пользователя и пароль не могут быть изменены злоумышленниками, поскольку объекты String являются неизменяемыми. Это может сделать прикладную программу более безопасной.

4. Пространство кучи:

Неизменяемость String помогает минимизировать использование памяти кучи. Когда мы пытаемся объявить новый объект String, JVM проверяет, существует ли уже это значение в пуле String или нет. Если оно существует, то это же значение присваивается новому объекту. Эта функция позволяет Java эффективно использовать пространство кучи.

Почему класс String является конечным в Java?

Причина, по которой класс String является конечным, заключается в том, что никто не может переопределить методы класса String. Таким образом, он может предоставлять одинаковые возможности как новым объектам String, так и старым.

**Happy reading friends....**
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий