티스토리 뷰
StringBuilder & StringBuffer
List-A V L array&vector 비슷한데 vector 멀티쓰레드
- StringBuffer : 문자열이 안전하게 변경되도록 보장한다.
- StringBuilder : 문자열이 안전하게 변경되도록 보장하지 않는다.
(멀티 쓰레드 프로그램이 아니라면 StringBuilder 속도가 좀더 빠르다)
identityHashCode
인스턴스가 처음 생성되었을 때 메모리 주소
String javaStr = new String("Java");
System.out.println("javaStr 문자열 주소 : " + System.identityHashCode(javaStr));
문자열을 추가해보자!
buffer.append(" and");
buffer.append(" android");
buffer.append(" programming is fun!");
System.out.println("연산 전 buffer 메모리 주소 : " + System.identityHashCode(buffer));
이 문자열을 String으로 변환해보면?
javaStr = buffer.toString();
System.out.println(javaStr);
System.out.println("새로 만들어진 문자열 주소 : " + System.identityHashCode(javaStr));
String 주소값을 비교해보자.
String str1 = "abc";
String str2 = str1+"de";
String str3 = "abc";
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
System.out.println(System.identityHashCode(str3));
System.out.println(str1==str3);
상수풀에서 생성되기 때문에 str1과 str3의 값이 같다. new로 생성했으면 달랐을 것이다!
String 문자열 뒤에 다른 문자열을 붙인다면?
String str = "abc";
System.out.println(System.identityHashCode(str));
str += "de";
System.out.println(System.identityHashCode(str));
주소값이 다르다!
int형은 어떨까?
// Stack 주소 확인한 것 아님 !!!!!!!!!!!!!!!!!
// int가 Integer로 오토박싱 -> Object로 업캐스팅
int a = 10;
System.out.println(System.identityHashCode(a));
a = 20;
System.out.println(System.identityHashCode(a));
int b = 10;
System.out.println(System.identityHashCode(b));
b = 20;
System.out.println(System.identityHashCode(b));
'배운 것 기록 > java' 카테고리의 다른 글
람다식 표현과 this (0) | 2022.07.02 |
---|---|
Thread (0) | 2022.06.28 |
Generic (0) | 2022.06.22 |
String 메서드 (0) | 2022.06.21 |
Iterator, Map (0) | 2022.06.20 |
댓글