HiDevelop

[Java] StringBuilder Method 본문

Java

[Java] StringBuilder Method

꽃달린감나무 2021. 11. 13. 21:25
728x90

자바의 String클래스의 경우 변경이 불가능한 시퀀스를 생성하기 때문에 이미 정해진 문자열의 값을 변경할 수 없습니다. 그래서 이 대안으로 변경 가능한 시퀀스를 생성하는 클래스 StringBuilder 와 StringBuffer를 사용하면 됩니다.

 

String 클래스는 왜 불변할까요? 그 이유는 String 클래스 내부에서 값을 final로 고정하여 값을 공유하는데 중점을 두기위해서 입니다. 

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {

    /**
     * The value is used for character storage.
     *
     * @implNote This field is trusted by the VM, and is a subject to
     * constant folding if String instance is constant. Overwriting this
     * field after construction will cause problems.
     *
     * Additionally, it is marked with {@link Stable} to trust the contents
     * of the array. No other facility in JDK provides this functionality (yet).
     * {@link Stable} is safe here, because value is never null.
     */
    @Stable
    private final byte[] value;

 

그럼 StringBuilder와 StringBuffer 중에 어떤 것을 사용해야 될까요?

 

싱글 쓰레드 와 멀티 쓰레드에 환경에 따라 달라집니다. 만약에 한 번에 하나의 작업만을 실행하는 싱글 쓰레드라면 동기화가 되어있지 않고 구현이 빠른 StringBuilder를 사용하고, 한 번 에 여러 개의 작업을 실행하는 멀티 쓰레드라면 동기화가 되어있는 StringBuffer를 사용하시면 됩니다.

 

 

public class stringBuilder {

	public static void main(String[] args) {
	
		//문자가 없고 초기 용량이 16자인 문자열 빌더를 생성합니다.
		StringBuilder str = new StringBuilder();
		String c = "";
		//to.String은 str이 나타내는 문자열을 반환합니다!
		System.out.println(str.toString());
		
		//str 문자열에 hello world 문자열을 추가합니다.
		str.append("hello world");
		
		System.out.println(str);
		
		//set.CharAt(index,변환하고 싶은 문자)는 해당하는 index의 값의 문자를 변환하고 싶은 문자로 바꿔줍니다.
		for(int i = 0; i <str.length(); i++) 
			str.setCharAt(i ,'k');
		//단, 음수값이 지정되면 java.lang.StringIndexOutOfBoundsException: String index out of range 오류가 발생
		
		//str의 내용을 초기화된 str1을 생성합니다.
		StringBuilder str1 = new StringBuilder(str);
		
		System.out.println(str1);
		
		
		//지정된 문자열을 생성합니다.
		StringBuilder str2 = new StringBuilder("Hi String!");
		
		System.out.println(str2);
		
		
	
	}
	
}

 

https://www.geeksforgeeks.org/stringbuilder-class-in-java-with-examples/ (StringBuilder에 대한 참조문헌)

728x90

'Java' 카테고리의 다른 글

[Java] 재귀 메소드  (0) 2021.11.17
[Java] 원의 넓이와 둘레 구하기 && 소수 판별하기  (0) 2021.11.16
[JAVA]Math.min/max Method  (0) 2021.11.05
[Java]2차원 배열과 for each문  (0) 2021.11.04
Jave(Swtich문)  (0) 2021.10.23