Kelly's journey to a coding master

StringBuffer class in Java 본문

Android

StringBuffer class in Java

개발하는 통계학도 켈리 2023. 5. 8. 14:10

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