Kelly's journey to a coding master
StringBuffer class in Java 본문
https://www.geeksforgeeks.org/stringbuffer-class-in-java/
StringBuffer class in Java - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
Mobile App Dev 자료를 공부하던 중 buffer 부분에서 StringBuffer라는 클래스를 사용한 것이 눈에 띄여 서칭을 해보았다. Geeks For Geeks 사이트에서 원하던 답변을 찾을 수 있었다.
// Mobile App Dev lab project (궁금증의 시초)
public void viewAll(){
Cursor res = myDB.viewAllRecords();
if (res.getCount() == 0){
showMessage("Error", "No record found");
return;
}
StringBuffer buffer = new StringBuffer();
while(res.moveToNext()) {
buffer.append("ID : " + res.getString(0) + "\n");
buffer.append("Item Name : " + res.getString(1) + "\n");
buffer.append("Remarks : " + res.getString(2)+ "\n");
buffer.append("Qunatity : " + res.getString(3) + "\n\n");
}
showMessage("Record(s) View:", buffer.toString());
}
String 클래스와 StringBuilder, StringBuffer 모두 문자열 데이터를 다룬다는 점에서 공통점이 지니다.
그러나 String 클래스는 불변(immutable) 자료형인 반면 StringBuilder와 StringBuffer 클래스는 메모리를 새로 할당하지 않고도 데이터를 수정할 수 있는 가변(mutable) 자료형이다. 즉, String 클래스를 사용하면 String을 더하는 연산을 하게되면 원래의 메모리 공간이 아닌 새로운 공간에 메모리가 할당되어서 수정된 값이 새롭게 저장되게 된다. 즉, 원래의 메모리는 그자리에 그대로 두고 새로운 곳에서 메모리를 또 사용하는 것이다. 이렇게 되면 수정이 빈번한 데이터는 메모리를 많이 잡아먹게 된다. 이럴때 쓰면 좋은 클래스들이 바로 StringBuilder와 StringBuffer인 것!
StringBuilder와 StringBuffer의 차이점은 간단히 말하면 StringBuffer는 StringBuilder와 달리 thead-safety가 보장되기 때문에 multi-thread에서 안전하다.
아래의 코드를 보면 String클래스와 StringBuilder/StringBuffer의 차이점을 바로 확인할 수 있다.
public class GFG {
public static void main(String args[])
{
String a1 = "geeks";
String a2 = a1;
a1 = a1 + "for geeks";
if (a1 == a2)
System.out.println("Same");
else
System.out.println("Not Same"); //result1
StringBuilder b1 = new StringBuilder("geeks");
StringBuilder b2 = b1;
b1 = b1.append("for greeks");
if(b1 == b2)
System.out.println("Same"); //result2
else
System.out.println("Not Same");
}
}
'Android' 카테고리의 다른 글
AnimationDrawable class in Java (0) | 2023.05.15 |
---|