이 StringBuffer 클래스에서 제공하는 문자열은 수정될 수 있습니다. 문자 데이터가 변경될 것이라는 것을 알고 있는 경우 StringBuffer를 사용할 수 있습니다. 일반적으로 StringBuffer를 사용하여 문자 데이터를 동적으로 생성합니다.
자바에는 문자 연산을 담당하는 세 가지 클래스가 있습니다.
1.Character는 단일 문자에 대해 작동하고
2.String은 문자열에 대해 작동합니다. 불변 클래스.
3.StringBuffer도 문자열에 대해 작동하지만 변수 클래스입니다.
String:
은 기본 유형이 아닌 객체입니다.
은 일단 생성되면 해당 값을 수정할 수 없습니다.
기존 String 객체에 대한 수정은 모두 새로운 것입니다. 새 개체를 만들고 새 값을 저장합니다.
String은 최종 클래스입니다. 즉,
StringBuffer:
는 수정될 때 변경 가능한 개체입니다. 객체는 String처럼 다시 생성되지 않습니다
생성자
StringBuffer sb = new StringBuffer();
참고: 값 기호
sb를 통해서만 생성할 수 있습니다. = "welcome to here!";//error
객체가 생성된 후 메모리 공간이 메모리에 할당되고 처음에는 StringBuffer
에 값을 지불할 때 해당 추가 항목을 전달할 수 있습니다. method.
sb.append("hello");
위 내용은 인터넷에서 흔히 볼 수 있는 내용을 발췌한 것입니다. 다음은 제가 직접 추가한 의견입니다.
주소는 불가능합니다. 변경되면 길이와 내용이 변경될 수 있습니다. Append() 메소드는 예약된 메모리를 초과하면 메모리가 두 배가 됩니다.
효율성 비교: StringBuffer가 String보다 높습니다. StringBuffer는 공간을 예약하고 계속 추가하기 때문에 하나의 개체에서만 작동합니다. 문자열은 수정할 수 없으며 객체는 수정을 위해 반복적으로만 생성될 수 있습니다. ——문자열을 자주 추가, 교체, 수정, 삽입, 삭제하는 경우에는 StringBuffer를 사용하는 것이 가장 좋습니다. 문자열을 사용해야 하는 경우 StringBuffer를 사용하여 toString()을 호출하여 문자열로 변환할 수 있습니다.
public static void main(String[] args) { String a=""; long begin=System.currentTimeMillis(); for (int i = 0; i <10000; i++) { a+=i; } long end=System.currentTimeMillis(); System.out.println("String运行时间:"+(end-begin)); System.out.println("-----------------"); StringBuffer b=new StringBuffer(); long begin2=System.currentTimeMillis(); for (int i = 0; i <10000; i++) { b.append(i); } long end2=System.currentTimeMillis(); System.out.println("StringBuffer运行时间:"+(end2-begin2)); }
실행 후 결과는
문자열 실행 시간: 164593
-----------------<입니다. 🎜 >StringBuffer 실행 시간: 31
public static void main(String[] args) { String a="abc"; boolean str=a.contains("b"); System.out.println(str); }