언어(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