기본 API

Robyn·2023년 5월 8일
0

Java

목록 보기
14/15

기본 API
"지금 이 메소드의 반환값은 무엇이며, 이 메소드는 어떤 매개변수를 가지며(각 매개변수는 어떤 역할을 하며) 어떻게 동작하고 흘러가는지 주석을 다는 게 좋다."

String 관련 클래스


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);

  • 쓰레드
    메모리라는 한정된 공유자원을 가지고 일을 하는데, 여러 가지에 줄을 세워서 들어오는 게 safe 기능

  • 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 클래스

    • String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스로
      생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장
    • split() 메소드는 하나로만 구분이 가능하지만, StringTokenizer클래스는 여러 개로 구분이 가능하다.
  • StringTokenizer(String str, String delim)
    delim은 구분 문자(영어: Delimiter)를 뜻한다.

Wrapper 클래스

  • Wrapper 클래스
    Primitive Data Type을 객체화 해주는 클래스 (primitive data type은 객체가 아니라 갖다 쓰는 예약어)



    int의 기본값은 0인데, 이게 JVM기본값으로 0인지 아님 0을 집어넣은 상태인지 알 수 없을 때, Integer를 통해 판단할 수 있다. (null인지 0인지)

JDK 1.5부터 오토박싱, 오토언박싱이 가능하게됐다.
기본 자료형을 Wrapper Class로 바꾸는 것을 박싱이라고 하고,
Wrapper Class을 기본 자료형으로 바꾸는 것을 언박싱이라고 한다.

	Integer num1 = new Integer(4);
	Integer num2 = 4;	// 오토박싱
	int num3 = num1;	// 오토언박싱

날짜 관련 클래스

Format 관련 클래스


0개의 댓글