Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

String과 StringBuffer의 차이점

<시간/>

String은 변경할 수 없는 클래스이며 해당 객체는 생성된 후에 수정할 수 없지만 다른 객체를 확실히 참조합니다. 다중 스레드는 객체의 상태를 변경할 수 없으므로 불변 객체는 스레드로부터 안전하기 때문에 다중 스레드 환경에서 매우 유용합니다.

문자열 버퍼는 문자열의 역순, 문자열 연결 등과 같은 문자열 개체에 대한 작업을 수행하는 데 사용할 수 있는 변경 가능한 클래스입니다. 문자열의 새 개체를 만들지 않고 문자열을 수정할 수 있습니다. 문자열 버퍼도 스레드로부터 안전합니다.

또한 string concat + 연산자는 내부적으로 StringBuffer 또는 StringBuilder 클래스를 사용합니다. 다음은 차이점입니다.

Sr. 아니요. 문자열 문자열 버퍼
1
기본
String은 변경할 수 없는 클래스이며 객체가 생성된 후에는 수정할 수 없습니다.
문자열 버퍼는 문자열 개체에 대한 작업을 수행하는 데 사용할 수 있는 변경 가능한 클래스입니다.
2
메소드
메서드가 동기화되지 않았습니다.
모든 메소드는 이 클래스에서 동기화됩니다.
3
성능
빠르다
여러 스레드가 동시에 액세스할 수 없으므로 느림
4.
메모리 영역
생성자나 메소드를 사용하여 문자열을 생성하면 해당 문자열은 SringConstantPool뿐만 아니라 힙 메모리에도 저장됩니다.
힙 공간

문자열의 예

public class Main {
   public static void main(String args[]) {
      String s1 = "Hello Tutorials Point";
      String upperCase = s1.toUpperCase();
      System.out.println(upperCase);
   }
}

StringBuffer의 예

public class StringBufferExample{
   public static void main(String[] args){
      StringBuffer buffer=new StringBuffer("Hi");
      buffer.append("Java 8");
      System.out.println("StringBufferExample" +buffer);
   }
}