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 |