String 자료형을 선언하고 자주 변경해야 할때 어떤 방법이 좋을까?
--> String을 자주 변경해야한다면 String 자료형 보다는 StringBuffer형을 사용하는 것을 추천한다.
Java에서 String을 선언하고 '+'를 사용해서 문자열을 추가해주는 경우가 있다.
예시)
String str = new String();
str = "초기 문장";
str += "추가 문장";
System.out.println(str); // "초기 문장추가 문장"
StringBuffer에서는 다음과 같이 문장을 추가(수정)할 수 있다.
StringBuffer strBuffer = new StringBuffer();
strBuffer.add("처음 문장");
strBuffer.add("추가 문장");
System.out.println(strBuffer); // "처음 문장추가 문장"
같은 효과를 내는 것을 볼 수 있다. 그런데 왜 자주 변경되는 상황에서는 StringBuffer를 추천하는 것일까?
String 자료형은 '+' 될때마다 새로운 객체를 생성해내지만 StringBuffer는 같은 객체가 변경되는 것이기 때문이다.
(String 자료형은 immutable한 객체로 수정이 불가능한 객체로 '+'를 사용할때 마다 새로운 객체를 생성해 낸다.)
+
StringBuffer의 또 다른 주요 메소드
1. insert(index,data)
index 위치에 data 추가
StringBuffer strBuffer2 = new StringBuffer();
strBuffer2.add('초기문장');
strBuffer2.insert(0,"추가문장");
System.out.println(strBuffer2); // "추가문장초기문장"
2. length()
StringBuffer 자료의 길이를 반환
StringBuffer strBuffer3 = new StringBuffer("초기문장");
int strLength = strBuffer.length();
System.out.println(strLength); // 4
+
자주 사용하지는 않지만 StringBuffer 자료형의 data를 역순으로 추출하기
3. reverse()
StringBuffer strBuffer4 = new StringBuffer("abcd");
System.out.printlne(strBuffer4.reverse()); // "dcba"
[Java] JsonObject , JsonArray 다루기 (JsonParser로 파싱하기) (4) | 2020.01.16 |
---|---|
[JavaScript] JSON 문자열로 변환하기 JSON.stringify() (0) | 2020.01.15 |
[Java] 제네릭스(Generics) ArrayList<String> - <Object> 알아보기 (1) | 2020.01.13 |
[Java] 문자열(String) 비교 equals() , == 와 차이점 (0) | 2020.01.09 |
[Java] 자바 List 자료형 알아보기(ArrayList) (0) | 2020.01.08 |