티스토리 뷰
Goal
- Java에서 제공되는 String 클래스의 특징에 대해 알아본다
- Wrapper 클래스에 대해 사진을 통해 간단히 알아본다
1. String 클래스
1-1 힙메모리와 상수풀
String str1 = new String("abc"); //인스턴스로 생성됨
String str2 = "abc"; //리터럴이 모여있는 상수풀에 있는 문자열을 가르킴
1-2 String은 immutable
- 한번 선언되거나 생성된 문자열을 변경할 수 없음
- String 클래스의 concat() 메서드 혹은 "+"를 이용하여 String을 연결하는 경우 문자열은 새로 생성됨.
1) System.identityHashCode를 활용하여 java 주소값 확인.
- java와 android를 concat하고 다시 java 변수에 저장하면
- 기존에 생성되어 "java"값을 담고있는 참조변수 java는 가비지 메모리가 됨.
- 즉, 새로운 참조변수 java를 생성함.
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));
System.out.println(java);
}
}
1-3 StringBuffer, StringBuilder
- String 작업시에, immutable한 속성 때문에, String을 연결할 때, 이전의 String은 가비지 메모리되어 메모리의 낭비를 초래함
- 가변적인 char[] 배열을 멤버변수로 가지고 있는 클래스 StringBuffer와 StringBuilder를 사용함 (API를 확인하면, 변수가 final이 아닌것을 확인할 수 있음)
- StringBuffer는 멀티 쓰레드프로그래밍에서 동기화(Synchronization)이 보장됨, 단일 쓰레드 프로그래밍에서는 StringBuilder를 사용하는것이 더 좋음.
- toString() 메서드로 String 반환
1) StringBuilder 사용 예시
public class StringBuilderTest {
public static void main(String[] args) {
String java = new String("java");
String android = new String("android");
StringBuilder buffer = new StringBuilder(java);
buffer.append("android"); //append된 buffer값과 처음 생성된 buffer값의 주소값은 같음.
java = buffer.toString(); //String 반환
System.out.println(java);
}
}
2. Wrapper 클래스
- 기본자료형에 대한 클래스
'Java > Java 올인원 패키지' 카테고리의 다른 글
23. 컬렉션 프레임워크 (Java) (0) | 2020.03.19 |
---|---|
22. 제네릭 (Java) (0) | 2020.03.19 |
20. Object 클래스 (Java) (0) | 2020.03.18 |
19. 인터페이스 (Java) (0) | 2020.03.18 |
18. 템플릿 메서드 (Java) (0) | 2020.03.17 |
- 20200413
- 20200424
- 20200420
- 20200427
- chapter8
- 20200417
- 20200415
- 20200317
- 20200804
- 20200330
- 20200319
- 20200624
- 20200403
- 20200421
- 20200510
- likelion
- 생활코딩리눅스
- 20200504
- 20200622
- 20200512
- 20200406
- 20200423
- 20200503
- chapter7
- 20200502
- 20200425
- 20200429
- 백준
- 20201204
- 20200428
- Total
- Today
- Yesterday