>  기사  >  Java  >  Java에서 String과 StringBuffer의 연결과 차이점

Java에서 String과 StringBuffer의 연결과 차이점

Y2J
Y2J원래의
2017-04-27 13:14:001612검색

이 글은 Java에서 String과 StringBuffer의 차이점에 대한 관련 정보와 자세한 예를 주로 소개합니다. String과 StringBuffer의 시간 및 공간 사용량 차이를 테스트하기 위한 작은 예입니다.

Java에서 String과 StringBuffer의 차이점에 대한 자세한 예

String:

Primitive 유형이 아닌 객체입니다.
일단 생성되면 해당 값을 수정할 수 없습니다.
기존 String 객체를 수정하면 새 객체가 생성되고 그 안에 새 값이 저장됩니다. .
문자열은 최종 클래스입니다. 즉,

StringBuffer:

변경 가능한 객체이므로 수정 시 문자열처럼 객체가 다시 생성되지 않습니다.

생성자를 통해서만 생성할 수 있습니다.
StringBuffer sb = new StringBuffer();
객체 이후 생성되면 메모리에 저장됩니다. 처음에는 추가 메서드를 통해 값을 할당합니다. 분명히 String보다 높습니다.


String 개체는 변경할 수 없습니다. Sting이 연산될 때마다 새로운 객체가 다시 생성되어 새로운 값을 저장하게 됩니다.

StringBuffer 객체가 인스턴스화된 후에는 이 An 객체 연산만 수행됩니다.


String과 StringBuffer의 시간 및 공간 사용량 차이를 테스트하기 위해 여기에 작은 예제를 작성했습니다.

public class Test {  
  public static void main(String args[]) {  
    String str = "abc";  
    StringBuffer sb = new StringBuffer("abc");  
    Runtime runtime = Runtime.getRuntime();  
    long start = System.currentTimeMillis();  
    long startFreememory = runtime.freeMemory();  
    for (int i = 0; i < 10000; i++) {  
      str += i;  
      //测试StringBuffer时候把注释打开  
      //sb.append(i);  
    }  
    long endFreememory = runtime.freeMemory();  
    long end = System.currentTimeMillis();  
    System.out.println("操作耗时:" + (end - start) + "ms," + "内存消耗:"  
        + (startFreememory - endFreememory)/1024 + "KB");  
  }  
}


테스트 결과:

String을 사용하여 문자열을 문자열에 10,000번 추가

작업 시간: 1872ms, 메모리 소비: 1301KB

StringBuffer를 사용하여 문자열에 문자열을 10,000번 추가

작업 시간: 15ms, 메모리 소비: 162KB

위 내용은 Java에서 String과 StringBuffer의 연결과 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.