본문 바로가기
Java/기본 개념 및 클래스

[Java] 53. String, StringBuffer 클래스

글: Song hyun 2024. 4. 26.
728x90
반응형

[Java] 53. String, StringBuffer 클래스

1. String 클래스란?

2. StringBuffer 클래스란?

3. text block(java13) 사용하기


 

1. String 클래스란?

-String 클래스는 (1) 힙 메모리에 인스턴스로 생성하거나, (2) 상수 풀(constant pool)에 있는 주소를 참조하는 방법이 있다.

-힙 메모리는 생성될 때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가지고 있다.

 

*상수 풀에 올라간 String 값은 먼저 존재하는지 확인부터 하게 된다.
만약 같은 문자열이 존재한다면, 새로 생성하지 않고, 다시 재사용한다.

 

**==는 객체의 주소값을 비교하는 연산자이다.

***equals는 문자열 값을 비교하는 클래스이다.

=>문자열 비교는 논리적인 판단으로, 같은지 다른지를 true/false 값을 반환하게 된다.


2. StringBuffer 클래스란?

String 클래스에 잦은 변화가 있을 때 메모리가 낭비된다.

이를 대처하기 위해 StringBuilder/StringBuffer가 자주 활용된다.

 

(1) StringBuffer 클래스: java.lang 패키지에 존재하는 클래스. 문자열을 계속해서 더하거나, 변경시킬 수 있다.

 

-내부적으로 가변적인 char[]를 멤버 변수로 가진다.

-문자열을 여러번 연결하거나, 변경할 때 사용하면 유용하다.

-새로운 인스턴스를 생성하지 않고, 내부의 멤버변수 char[]를 변경한다.

-멀티 쓰레드 프로그래밍에서(백엔드 서버) 동기화(Synchronization)을 보장한다.

-단인 쓰레드 프로그램에서는 StringBuilder 사용을 권장한다.

-toString() 메서드를 사용해, String을 반환할 수 있다.


3. text block 사용하기

text block이란?: String형 변수 여러개를 더하지 않아도, 긴 문장을 출력할 수 있게 도와주는 기능이다. """ """(쌍따옴표 각각 3개)로 표기한다.

 

-HTML,json 문자열을 만드는 데 유용하게 사용할 수 있다.

-json (JavaScript Object Notation): 자바스크립트 객체 문법

 

package useful;

public class StringTextBlock {
	public static void main(String[] args) {
		// """ 찍고 한 줄 내리기
		String strBlock="""
				This is a Text Block Test.""";
		
		String jSonText=""" 
				 {
    "userId": 10,
    "id": 195,
    "title": "rerum ex veniam mollitia voluptatibus pariatur",
    "completed": true
  },
				""";
		
		// html, json 문자열을 만드는 데 유용하게 사용할 수 있다.
		// json(JavaScript Object Notation): 자바스크립트 객체 문법
		
	}

}
728x90
반응형