② String 클래스
: String 클래스란 문자열을 다루기 위한 클래스이다. 또한 내용을 변경할 수 없는 불변 클래스이다.
String클래스 = 데이터 (char[]) + 메서드(문자열 관련)
- 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어지므로, 문자열의 결합이나 변경이 잦다면 내용을 변경가능한 'StringBuffer'를 사용하는 것이 좋다.
- 문자열의 비교
class JavaJungsuk_String_Ex9_6 {
public static void main(String args[]) {
String str1="abc";
String str2="abc"; //문자열 "abc"의 주소가 저장됨.
System.out.println("String str1 = \"abc\";");
System.out.println("String str2 = \"abc\";");
System.out.println("str1 == str2 ? "+(str1==str2));
System.out.println("str1.equals(str2) ? "+(str1.equals(str2));
System.out.println();
String str3=new String("abc");
String str4=new String("abc"); //새로운 String인스턴스 생성.
System.out.println("String str3 = new String(\"abc\");");
System.out.println("String str4 = new String(\"abc\");");
System.out.println("str3 == str4 ? "+(str3==str4));
System.out.println("str3.equals(str4) ? "+str3.equals(str4));
}
}
결과
String str1 = "abc";
String str2 = "abc";
str1 == str2 ? true
str1.equals(str2) ? true
String str3 = new String("abc");
String str4 = new String("abc");
str3 == str4 ? false
str3.equals(str4) ? true
→ equals()를 사용했을 때는 두 문자열의 내용을 비교하기 때문에 두 경우 모두 true를 반환하지만,
String인스턴스의 주소를 등가비교연산자 '=='로 비교했을 때는 false를 반환한다.
- 빈 문자열
: 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열.
String s= null;
char c='\u0000';
↓
String s="";
char c=' ';
→ char형 변수에는 반드시 하나의 문자를 지정해야한다. 그렇기 때문에 ' '사이를 띄어 공백을 만들어준 것이다.
class JavaJungsuk_String_Ex9_8 {
public static void main(String[] args) {
char[] cArr=new char[0];
String s=new String(cArr);
System.out.println("cArr.length="+cArr.length);
System.out.println("@@@"+s+"@@@");
}
}
결과
cArr.length=0
@@@@@@
→ String은 참조형 타입의 기본값인 null보다는 빈 문자열("")로, char형은 기본값인 '\u0000'보다는 공백(' ')으로 초기화 하는 것이 보통이다. 기본값을 null로 입력하게 된다면, NullPointerException이 발생할 수 있기 때문에 빈문자열로 초기화 하는 것이 좋다.
- join()과 StringJoiner
: join()은 여러 문자열 사이에 구분자를 넣어서 결합한다.
import java.util.StringJoiner;
class JavaJungsuk_StringJoiner_Ex9_9 {
public static void main(String[] args) {
String animals="dog, cat, bear";
String[] arr=animals.spliet(",");
System.out.println(String.join("-", arr));
StringJoiner sj=new StringJoiner("/","[","]");
for(String s : arr)
sj.add(s);
System.out.println(sj.toString());
}
}
결과
dog-cat-bear
[dog/cat/bear]
- 문자열과 기본형 간의 변환
int i=100;
String str1=i+""; //편리
String str2=String.valueOf(i); //빠름
→ 숫자를 문자열로 변환.
int i = Integer.parseInt("100"); //"100"을 100으로 변환하는 방법1
int i2 = Integer.valueOf("100"); //"100"을 100으로 변환하는 방법2
→ 문자열을 숫자로 변환.
class JavaJungsuk_String_Ex9_10 {
public static void main(String[] args) {
int iVal=100;
String strVal=String.valueOf(iVal);
double dVal=200.0;
String strVal2=dVal+"";
double sum=Integer.parseInt("+"+strVal)+Double.parseDouble(strVal2);
double sum2=Integer.valueOf(strVal)+Double.valueOf(strVal2);
System.out.println(String.join("",strVal,"+",strVal2,"=")+sum);
System.out.println(strVal+"+"+strVal2+"="+sum2);
}
}
결과
100+200.0=300.0
100+200.0=300.0
→ 위 예제에서 쓰인 parseInt나 parseDouble을 valueOf로 바꿔써도 똑같다.
'프로그래밍 > Java' 카테고리의 다른 글
Java_Java.lang패키지와 유용한 클래스(4)_Math클래스와 메서드, 래퍼 클래스, 오토박싱&언박싱 (0) | 2022.12.14 |
---|---|
Java_java.lang패키지와 유용한 클래스(3)_StringBuffer클래스 (0) | 2022.12.10 |
Java_java.lang패키지와 유용한 클래스(1)_Object클래스의 메서드 (0) | 2022.12.04 |
Java_예외처리(2)_멀티 catch블럭, 예외 발생시키기, 체크드예외와 언체크드예외, 메서드에 예외 선언하기, finally블럭 (0) | 2022.11.30 |
Java_예외처리(1)_try-catch문 (0) | 2022.11.27 |