언어(Language)/Java

[Java] String

송기동 2023. 8. 11. 11:48
728x90

String

- 문자열을 나타내는 클래스

 

String 클래스의 주요 특징과 기능

# 불변성(Immutable)

- String 객체는 한 번 생성되면 내부 데이터를 변경할 수 없다.

- 새로운 문자열을 생성할 때마다 새로운 String 객체가 생성

- 이러한 불변성은 문자열의 안정성을 보장

- 멀티스레드 환경에서 안전하게 사용할 수 있도록 해줌

 

# 리터럴 사용

- 문자열 리터럴은 큰따옴표("")

- 자바에서 문자열 리터럴을 사용하면 자동으로 String 객체가 생성

- ex) String str = "Hello, World!"; 와 같이 문자열을 변수에 할당 가능

 

# 메서드 제공

- String 클래스는 다양한 메서드를 제공하여 문자열을 다루고 조작

- 메서드를 사용하여 문자열의 길이를 구하거나 특정 문자를 찾을 수 있음

- ex) length( ), charAt( ), substring( ), indexOf( ) 등

 

# 문자열 연산

- 문자열 연산을 수행하는 메서드 제공

- 두 개의 문자열을 연결하는 concat( ), 문자열을 분할하는 split( ) 등

 

# 문자열 비교

- 두 문자열을 비교하기 위한 equals( ) 메서드 제공

- compareTo( ) 메서드를 사용하여 두 문자열을 사전식으로 비교 가능

 

# 문자열 변환

- 대소문자를 변환 해주는 toUppserCase( ), toLowerCase( )

- 공백 제거 trim( ) 등의 메서드 제공

 

# String Pool

- 문자열 리터럴은 내부적으로 String Pool에 저장

- 동일한 문자열 리터럴은 메모리 절약을 위해 하나의 인스턴스만을 참조


# 예시

package ch09;

public class StringTest1 {

	public static void main(String[] args) {

		// String
		// 문자열이라는 데이터를 보관, 연산 사용
		// static 영역, 데이터영역, --> 상수 풀 영역

		String str1 = "반가워";
		String str2 = new String("반가워");
		String str3 = "반가워";

		System.out.println(str1);
		System.out.println(str2);

		// 시나리오 1
		if (str1 == str2) {
			System.out.println("주소값이 같아요!");
		} else {
			System.out.println("주소값이 달라요");
		}

		// 시나리오 2
		// 리터럴 방식으로 생성한 문자열은
		// 이미 생성한 값이 똑같다면 새로 만들지 않고
		// 재활용 한다.
		if (str1 == str3) {
			System.out.println("주소 같음");
		} else {
			System.out.println("주소 다름");
		}

		System.out.println("******************");
		// 시나리오 3
		str3 = "반갑습니다"; // 값을 변경
		if (str1 == str3) {
			System.out.println("주소 같아요~ 다시 확인");
		} else {
			System.out.println("주소 달라요! 다시 확인");
		}

		System.out.println("---------------------------");
		// 시나리오 4
		// 문자열에 값을 비교할려면 equals를 반드시 사용하세요
		if (str1.equals(str2)) {
			System.out.println("같은 값이에요. ");
		} else {
			System.out.println("다른 값이에요. ");
		}
	} // end of main
} // end of class
반가워
반가워
주소값이 달라요
주소 같음
******************
주소 달라요! 다시 확인
---------------------------
같은 값이에요.
728x90