String 클래스 선언하기
String str1 = new String("abc"); //인스턴스로 생성된다.
String str2 = "abc"; //상수풀에 있는 문자열을 가리킴
public class StringTest {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);
//결과는 힙메모리에 할당되어 메모리 위치가 다르기 때문에 false
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4);
//결과는 상수풀에 같은 값을 갖기 때문에 true
}
}
String은 immutable하다.(불변)
한번 선언되거나 생성된 문자열은 변경할 수 없음.
String클래스의 concat() 메서드 혹은 "+"를 이용하여 String을 연결하는 경우 문자열은 새로 생성된다.
public class StringTest2 {
public static void main(String[] args) {
String java = new String("Java");
String android = new String("android");
System.out.println(System.identityHashCode(java));
java = java.concat(android);
System.out.println(System.identityHashCode(java));
}
}
//결과
//209813603
//1057941451
기존의 java변수와 concat이후의 java는 서로 다른 메모리위치를 가진다.
그렇기 때문에 String객체를 사용하여 문자열을 연결하고 추가하는 것은 메모리를 많이 잡아먹게 된다.
StringBuilder 와 StringBuffer
가변적인 char[] 배열을 멤버변수로 가지고 있는 클래스이다. 문자열을 변경하거나 연결하는 경우 사용하면 편리하다.
StringBuffer는 멀티쓰레드 프로그래밍에서 동기화가 보장된다. 단일 쓰레드 프로그래밍에서는 StringBuilder를 사용하는 것이 좋다.
toString()메서드를 사용하여 String을 반환한다.
public class StringBuilderTest {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("def");
StringBuilder buffer = new StringBuilder(str1);
System.out.println(System.identityHashCode(buffer));
buffer.append(str2);
System.out.println(System.identityHashCode(buffer));
str1 = buffer.toString();
}
}
//같은 결과를 출력함
//209813603
//209813603
Wrapper클래스
8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 한다.
Wrapper클래스는 기본형 데이터 타입을 Object로 변환할 수 있다.
참조: http://tcpschool.com/java/java_api_wrapper
'공부 > 자바 (Java)' 카테고리의 다른 글
[Java] 컬렉션 프레임 워크 (List 인터페이스, Stack, Queue) (0) | 2022.01.06 |
---|---|
[Java] 제네릭 프로그래밍 (0) | 2022.01.06 |
[Java] JPA, MySQL연동 (Entity), JPA를 통한 CRUD (0) | 2021.12.31 |
[Java] Lombok(롬복)이란? Lombok설치 (0) | 2021.12.30 |
[Java] Object 클래스 & Class 클래스 - toString(), equals(), hashCode(), clone(), forName() (0) | 2021.12.29 |
댓글