Beny's Study
22_1. [강의] 문자열의 저장소 본문
String 사용 tip
1. String 의 저장소는 Heap과 String constant pool두가지가 있다.
2. String constant pool을 사용하는 것이 메모리 관리측면세어 유리하다.
3. String 은 new 생성하지 않는다,
4.Haep을 생으로 생성하지 않는다.
*String pool이란? String존재하는 수영장(영역)!
String constant pool
String str1 = "Test String";
// 제일 표준 문법,String constant pool
String str2 = new String("Test String");
// 스캐너 사용같은 경우, Heap
String str3 = str1.toString();
// str1에 toString 찍어서 가져온거//Heap->heap constant pool
String str4 = str3.intern();
// String constant pool
// .intern() 이란? ==와 같은기능! (속도빠르게 하려고 String에서 ==나equlas대신 사용함)
// =>String constant pool로 바로연결
.intern() 이란?
==와 같은기능! (속도빠르게 하려고 String에서 ==나equlas대신 사용함)
hashcode비교
System.out.println(str1.hashCode());
System.out.println(str2.hashCode()); 1/40억의 확률(보안상 유추가 어렵다!)
System.out.println(str3.hashCode());
System.out.println(str4.hashCode());
hashCode
객체를 유일하게 식별하기 위한 대표값,유추할수 없다(왜냐 위의 Test를 test로 바꾸면 완전 값이 다르게바뀜)
[출력]
432811871
432811871
432811871
432811871
equal의 문자열비교
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
System.out.println(str1.equals(str4));
* equal의 문자열비교 원리는 hashCode기반으로 비교함
[출력]
true
true
true
*위의 결과가 전부true인 이유?
해시코드가 동일하기 때문!
==는 의 비교
System.out.println(str1 == str2);
System.out.println(str1 == str3); //str3은 str1의 문자열 출력하는 String메소드
System.out.println(str1 == str4);
* ==는 의 비교 원리는 메모리의 주소값을 비교한다!
str3은 str1의 문자열 출력하는 String메소드
[출력]
false
true
true
메모리주소출력 (identityHashCode)
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
System.out.println(System.identityHashCode(str3));
System.out.println(System.identityHashCode(str4));
* 메모리주소출력의 기능 : identityHashCode
[출력]
617901222
1159190947
617901222
617901222
문자열 초기화
String temp = " ";
// 공백으로 초기화, null로 초기화 하면 null이 기본으로 출력됨,
//공백으로 초기화하면 아무값도 출력이 안됨!
temp += "123" + "," + "홍길동";
// null에러가 발생하지도 않고 쓰기 편리하다.
temp = temp + "123" + "," + "홍길동";
//위와 같음
"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.
이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우
민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."
'[JAVA] > 10. API' 카테고리의 다른 글
22_3. [강의] String 메소드 (0) | 2022.05.29 |
---|---|
22_2. [강의] API 파싱 (영화정보) (0) | 2022.05.29 |
21. Format 관련 클래스 (0) | 2022.04.15 |
20.Date, Calendar 날짜 관련 클래스 (0) | 2022.04.15 |
19. Wrapper (0) | 2022.04.15 |