본문 바로가기

Java

Java String 클래스

 

String클래스

- 문자열을 다루기 위한 클래스

-  데이터(char[]) + 메서드(문자열 관련)

- 내용을 변경할 수 없는 불변(immutable) 클래스

String a = "a";
String b = "b";
a = a + b; // a는 기존 "a"의 주소값을 a + b의 결과인 "ab" 주소값으로 바꾸는 것!

- 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐(문자열 결합이나 변경이 잦다면 내용 변경 가능한 StringBuffer사용하기)

 

1. String(문자열)을 만드는 방법에 따른 비교

1) 문자열을 리터럴로 지정하는 방법

2) String 클래스의 생성자를 사용해서 만드는 방법

// 문자열 리터럴은 이미 존재하는 것을 재사용(str1주소 == str2주소)
String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장
String str2 = "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장

// String 생성자를 이용한 경우
// new 연사자에 의해 메모리할당이 이루어지고 각각 새로운 String 인스턴스 생성
String str3 = new String("abc"); // 새로운 String 인스턴스 생성
String str4 = new String("abc"); // 새로운 String 인스턴스 생성

- String 생성

 

2. String(문자열) 리터럴

- 문자열 리터럴은 프로그램 실행 시 자동을으로 생성(constant pool에 저장)

- 같은 내용의 문자열은 리터럴은 하나만 생성됨

class Ex9_7 {
	public static void main(String args[]) {
		String s1 = "AAA"; // String class에 의해서 new String("AAA") 를 간단하게 입력할 수 있는 것
		String s2 = "AAA";
		String s3 = "AAA";
		String s4 = "BBB";
	}
}

 

 

3. 빈 문자열("", empty string)

- 내용이 없는 문자열

- 크기가 0인 char형 배열을 저장하는 문자열

String str = "";

 

- 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능

char[] chArr = new char[0] // 길이가 0인 char배열
int[] iArr = {}; // 길이가 0인 int 배열

 

- 문자(char)와 문자열(String)의 초기화

String s = ""; // 빈 문자열로 초기화
char c = ''; // 공백으로 초기화

 

4. String 클래스의 생성자

메서드 설명/예제  
String(String s) 문자열(s)을 갖는 String 인스턴스 생성 String s = new String("Hello");
String(char[] value) 문자열(value)을 갖는 String 인스턴스 생성 char[] c = {'H', 'I'};
String s = new String(c);
String(StringBuffer buf) StringBuffer인스턴스가 가진 문자열과 같은 String 인스턴스 생성 StringBuffer sb = new StringBuffer("Hello");
String s = new String(sb);
char charAt(int index) 지정된 위치(index)에 있는 문자를 알려줌 String s = ""

 

 

5. join()과 StringJoiner

String animals = "dog, cat, bear";
String[] arr = animals.split(","); // 문자열을 ','를 그분자로 나눠서 배열에 저장
String str = String.join("-", arr); // 배열의 문자열을 '-'로 구분해서 결합
System.out.println(str); // dog-cat-bear

 

 

6. 문자열과 기본형 간 변환

1) 기본형 -> 문자열

방법 1: 편리하고 가독성 좋은  + ""

방법 2: 속도가 빠른 valueOf()

2) 문자열 -> 기본형

방법 1: parse__()

방법 2: valueOf()

class Ex9_10 {
	public static void main(String[] args) {
		int iVal = 100;
		String strVal = String.valueOf(iVal); // 방법1. int를 String으로 변환 
		String strVal1 = iVal + ""; // 방법2.
		
		double dVal = 200.0;
		String strVal2 = dVal + "";	// int를 String으로 변환하는 또 다른 방법

		double sum  = Integer.parseInt("+"+strVal) // 문자열을 숫자로 바꾸는 방법
                                          + Double.parseDouble(strVal2);
		double sum2 = Integer.valueOf(strVal) + Double.valueOf(strVal2);
		
		System.out.println(String.join("",strVal,"+",strVal2,"=")+sum); // 100+200.0=300.0
		System.out.println(strVal+"+"+strVal2+"="+sum2); // 100+200.0=300.0
		System.out.println(strVal1+"+"+strVal2+"="+sum2); // 100+200.0=300.0
		
	}
}

 

 

 

 

'Java' 카테고리의 다른 글

Java Math 클래스  (0) 2022.12.30
Java StringBuilder / StringBuffer 클래스  (0) 2022.12.30
Java Object 클래스  (0) 2022.12.29
Java 예외처리(exception handeling)2  (0) 2022.12.29
Java 예외처리(exception handling)  (0) 2022.12.29