hashcode()
String 객체의 hashcode를 변환해줍니다.
해시코드는 간단하게 말하면 객체의 고유한 값이라고 합니다.
Object클래스로 구현된 객체라면 이 메소드를 모두 가지고 있습니다.
그래서 값을 서로 비교할때 사용됩니다.
사용방법은 다음과 같습니다.
String str1 = "WORD";
String str2 = "WORD";
System.out.println("str1's hashcode : " + str1.hashCode());
System.out.println("str2's hashcode : " + str2.hashCode());
String str3 = new String("WORD");
System.out.println("str3's hashcode : " + str3.hashCode());
str1, 2, 3모두 "WORD"라는 문자열입니다.
str3의 경우 new로 선언된 문자열이라 이전에 선언된 문자열과 비교(==)를 하면 주소값이 달라서 false가 나올것입니다.
하지만 hashcode는 모두 같은 값이 나옵니다.
원래 Object의 hashcode를 String에서 재정의했기때문에 두 문자열의 주소값이 달라도 값이 같으면 같은 hashcode가 나온 것입니다.
해당 내용 출처 : https://blog.naver.com/travelmaps/220930144030
trim()
문자열 앞뒤의 공백을 제거해주는 메소드입니다.
자바뿐만 아니라 다른 언어에도 흔하게 볼수있는 문자열 관련 함수입니다.
String str = " a b c ";
System.out.println("시작" + str.trim() + "끝");
intern()
intern에 대해서는 여기에 설명이 잘 나와있습니다.
https://www.latera.kr/blog/2019-02-09-java-string-intern/
간단하게 설명하자면 intern은 객체의 고유성을 유지시켜주는 메소드입니다.
문자열을 선언할때 intern을 사용하면 해당 문자열이 pool에 있는지 살펴보고 있으면 그 값을 가져오고 없으면 새로 만들어줍니다.
String str1 = "WORD";
String str2 = new String("WORD");
System.out.println("str1 == str2 result : " + String.valueOf(str1 == str2));
String str3 = new String("WORD").intern();
System.out.println("str1 == str3 result : " + String.valueOf(str1 == str3));
intern을 사용하지 않은 str2의 경우는 등호로 비교했을때 주소값이 다르기 때문에 false를 반환하고
intern을 사용하여 선언한 str3은 이미 str1에 "WORD"라는 값이 있기때문에 그 값을 가져오게 됩니다.
그래서 str1과 str3의 주소값이 같다고 나옵니다.