반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.String/StringBuilder 본문

[IT]/java

java.String/StringBuilder

givemebro 2021. 3. 10. 17:35
반응형

String 과 StringBuilder

 

String 

문자열 상수, 변하지 않는 속성

문자열 상수 영역(literal pool)에 저장되고 이를 공유해 사용 >메모리 절약

문자열에 변화를 가하면 새로 생성

동일한 문자열이 여러번 사용될 때 적합

 

StringBuilder

변하는 속성

문자열 자체가 변경

문자열 자체가 자주 변경될 때 적합

(StringBuilder와 StringBuffer는 동일하지만, StringBuffer는 thread-safe (동기화 처리)한 특징이 있음)

package step3;

public class TestStringAndStringBuilder {
	public static void main(String[] args) {
		String s1 = "아이유";
		System.out.println(s1.concat("짱"));// 새로 생성, String은 변하지 않음 / 아이유짱
		System.out.println(s1);// 아이유

		StringBuilder sb = new StringBuilder("박보검");
		System.out.println(sb);// StringBuilder는 가변(변경시 자체가 저장됨) / 박보검
		System.out.println(sb.append("짱"));// 박보검짱
		System.out.println(sb);// 박보검짱
	}
}

package test1;

import java.util.StringTokenizer;

public class TestStringAndStringBuilder {
	public static void main(String[] args) {
		// name1과 name2는 String이기 때문에 문자열 상수영역에 저장되고 동일한 문자열을 참조
		String name1 = "고슬링";
		String name2 = "고슬링";
		System.out.println(name1.concat("선생님"));
		System.out.println(name1);
		System.out.println(name2);
		StringBuilder sb = new StringBuilder("아이유");
		System.out.println(sb);
		System.out.println(sb.append("가수"));
		System.out.println(sb);
		// 문자열 비교
		String name3 = new String("고슬링");
		System.out.println(name3);
		System.out.println(name1 == name3); // false == 연산자로는 문자열 비교x
		System.out.println(name1.equals(name3));
		StringBuilder sb2 = new StringBuilder("고슬링");

		/*
		 * name3은 STirng, sb2는 StringBuilder이므로 sb2.toString()을 하면 String으로 변환되고 이를 통해
		 * equals로 비교하면 됨 or contentEquals를 이용
		 */
		System.out.println(name3.equals(sb2));// false
		System.out.println(name3.equals(sb2.toString()));// true
		// 타입이 다른 문자열의 내용을 비교
		System.out.println(name3.contentEquals(sb2));// true

		System.out.println("***********String API method 활용*************");
		String name4 = "강하늘";
		System.out.println(name4.startsWith("강하"));// true
		System.out.println(name4.startsWith("강"));// true
		System.out.println(name4.endsWith("늘"));// true
		System.out.println(name4.contains("하"));// true
		System.out.println(name4.indexOf("늘"));// 2
		System.out.println(name4.indexOf("크"));// -1
		System.out.println(name4.substring(1));// 하늘 / 1:beginIndex

		String name5 = "제임스 고슬링";
		System.out.println(name5.substring(4, 6));// 고슬
		System.out.println("***********StringBuilder API method 활용*************");
		StringBuilder sname = new StringBuilder("제임스");
		System.out.println(sname.append(" 고슬링"));

		StringBuilder test = new StringBuilder("뻐이장가가니");
		System.out.println(test.reverse());
		
		System.out.println("***********StringTokenizer 활용*************");
		String info="아이유,강하늘,옹성우";
		StringTokenizer stk=new StringTokenizer(info,",");
		while(stk.hasMoreTokens()) {
			System.out.println(stk.nextToken());
			/*
			아이유
			강하늘
			옹성우
			 */
		}
	}
}
반응형
Comments