문자열과 기본형 간의 변환
숫자 => 문자열 변환
int i = 100;
String str1 = i + " "; // 100을 "100"으로 변환하는 방법1
String str2 = String.valueOf(i) // 100을 "100"으로 변환하는 방법2
성능은 valueOf()가 더 좋지만 편하기 때문에 + " " 을 자주사용한다.
문자열 => 숫자
int i = Integer.parseInt("100"); // "100"을 100으로 변환하는 방법1
int i2 = Integer.valueOf("100"); / "100"을 100으로 변환하는 방법2
StringBuffer클래스
String클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만 StringBuffer클래스는 변경이 가능하다.
내부적으로 문자열 편집을 위한 버퍼를 가지고 있으며, 인스턴스를 생성할 때 그 크기를 지정할 수 있다.
StringBuffer의 생성자
StringBuffer클래스의 인스턴스를 생성할 때, 적절한 길이의 char형 배열이 생성되고,
이 배열은 문자열을 저장하고 편집하기 위한 공간(버퍼)이다. 버퍼의 크기를 지정해주지 않으면 16이 된다.
StringBuffer의 변경
String과 달리 StringBuffer는 내용을 변경 할 수 있다.
StringBuffer sb = new StringBuffer("abc"); // sb주소가 0x100 이라고 가정.
sb.append("123"); //sb의 내용 뒤에 "123"을 추가한다
StringBuffer sb2 = sb.append("ZZ");
//sb에 새로운 문자열이 추가되고 sb자신의 주소를 반환하여 sb2에는 sb의 주소가 저장된다.
System.out.println(sb);
System.out.println(sb2);
----------------------------------------------------------------------------------------
결과
abc123zz
abc123zz
----------------------------------------------------------------------------------------
=> append()는 반환타입이 StringBuffer이라 자신의 주소를 반환하므로
sb2에는 sb의 주소인 0x100이 저장된다
StringBuffer의 비교
StringBuffer sb = new StringBuffer("abc");
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb==sb2); //false
System.out.println(sb.equals(sb2)); //false
//StringBuffer은 equals를 오버라이딩 하지 않아서 false이다.
String s = sb.toString(); //StringBuffer을 String으로 변환
String s2 = sb2.toString();
System.out.println(s.contentEquals(s2)); //true
'Java' 카테고리의 다른 글
자바의 정석( String클래스 / join() / StringJoiner ) (0) | 2023.04.07 |
---|---|
자바의 정석 ( hashCode() / toString() ) (0) | 2023.04.06 |
자바의 정석( Object 클래스 / equals()의 오버라이딩 ) (0) | 2023.04.04 |
자바의 정석 ( 예외 발생시키기 / 메서드 예외 선언 하기 / finally 블럭 / 사용자 정의 예외 만들기 / 예외 되던지기 ) (0) | 2023.03.29 |
자바의 정석 ( 컴파일 에러 / 런타임 에러 / 논리적 에러 / 예외 클래스 / try - catch문 / printStackTrace() / getMessage() ) (0) | 2023.03.28 |