기본 API
"지금 이 메소드의 반환값은 무엇이며, 이 메소드는 어떤 매개변수를 가지며(각 매개변수는 어떤 역할을 하며) 어떻게 동작하고 흘러가는지 주석을 다는 게 좋다."
String str = "안녕";
String str2 = "안녕";
똑같이 String pool(Constant pool, Literal pool)의 안녕을 가리킴 => str과 str2가 가지고 있는 주소값이 같게 된다.
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
이 코드는 자바에서 객체의 해시코드를 계산하기 위한 메소드입니다. 이 메소드는 문자열(String) 객체를 대상으로 작성된 것으로 추정됩니다.
해시코드(hash code)란 객체를 식별하기 위한 정수값입니다. 자바에서 모든 객체는 hashCode() 메소드를 가지며, 객체의 내용이 같으면 항상 동일한 해시코드를 반환해야 합니다. 해시코드를 사용하여 객체를 빠르게 비교하거나 검색하는 등의 용도로 활용됩니다.
위 코드는 먼저 변수 h를 선언하고, 이 변수에 객체의 현재 해시코드 값을 저장합니다. 그 다음, h가 0이고 value 배열의 길이가 0보다 큰 경우에 한해서, value 배열의 각 요소에 대해 31을 곱하고 이전 해시코드 값에 더하여 새로운 해시코드 값을 계산합니다. 이 때, value 배열은 문자열의 문자들을 저장하고 있으므로, val[i]는 i번째 문자를 나타냅니다. 계산된 해시코드 값을 변수 h에 저장한 후, 이 값을 리턴합니다.
이 메소드는 문자열의 내용이 변경되지 않는 한, 동일한 문자열 객체에 대해서는 항상 동일한 해시코드 값을 반환합니다. 그러나 문자열의 내용이 변경될 경우에는 해시코드 값도 변경될 수 있습니다. 이 때문에 문자열은 불변(immutable) 객체로 구현되어 있습니다.
int hashCode()
Returns a hash code value for the object.
주소값을 가지고 해싱기법 사용해서 int로 반환한 게 hashCode()라는 메소드
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
public static int identityHashCode(Object x)
Returns the same hash code for the given object as would be returned by the default method hashCode(), whether or not the given object's class overrides hashCode(). The hash code for the null reference is zero.
public static native int identityHashCode(Object x);
StringBuffer()
Constructs a string buffer with no characters in it and an initial capacity of 16 characters.
String[] java.lang.String.split(String regex)
regex
정규표현식은 줄여서 정규식(영어로는 Regular Expression이고 줄여서 Regex, Regexp 등으로 불린다.) 이라고도 하는데, 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어이다.
함수 길이를 반환하는 데이터 타입
length 배열
length() 문자열 (String Object)
String 관련 클래스 - StringTokenizer 클래스
StringTokenizer(String str, String delim)
delim은 구분 문자(영어: Delimiter)를 뜻한다.
JDK 1.5부터 오토박싱, 오토언박싱이 가능하게됐다.
기본 자료형을 Wrapper Class로 바꾸는 것을 박싱이라고 하고,
Wrapper Class을 기본 자료형으로 바꾸는 것을 언박싱이라고 한다.
Integer num1 = new Integer(4);
Integer num2 = 4; // 오토박싱
int num3 = num1; // 오토언박싱