10-2: JAVA String Method

jk·2024년 1월 12일
0

kdt 풀스택

목록 보기
17/127



1. String 에서 concat 메소드에 대해서 설명하시오.

//java.lang.String.class 에서 가져옴
public String concat(String str) {
    if (str.isEmpty()) {
        return this;
    }
    if (coder() == str.coder()) {
        byte[] val = this.value;
        byte[] oval = str.value;
        int len = val.length + oval.length;
        byte[] buf = Arrays.copyOf(val, len);
        System.arraycopy(oval, 0, buf, val.length, oval.length);
        return new String(buf, coder);
    }
    int len = length();
    int olen = str.length();
    byte[] buf = StringUTF16.newBytesFor(len + olen);
    getBytes(buf, 0, UTF16);
    str.getBytes(buf, len, UTF16);
    return new String(buf, UTF16);
}
  • parameter 가 비었으면 값이 변하지 않는다.
  • parameter 에 String 이 들어있으면 그 String 을 기존 String 에 더해준다.



2. String 에서 substring 메서드 사용법은

//java.lang.String.class 에서 가져옴
public String substring(int beginIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    int subLen = length() - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    if (beginIndex == 0) {
        return this;
    }
    return isLatin1() ? StringLatin1.newString(value, beginIndex, subLen)
                      : StringUTF16.newString(value, beginIndex, subLen);
}
public String substring(int beginIndex, int endIndex) {
    int length = length();
    checkBoundsBeginEnd(beginIndex, endIndex, length);
    int subLen = endIndex - beginIndex;
    if (beginIndex == 0 && endIndex == length) {
        return this;
    }
    return isLatin1() ? StringLatin1.newString(value, beginIndex, subLen)
                      : StringUTF16.newString(value, beginIndex, subLen);
}
  • oneString.substring(int beginIndex): parameter 를 int 로 하나 넣었을 때 oneString 을 byte[] 로 받아내고 그 byte[] 의 index 로 beginIndex 부터의 마지막 값까지를 받아내서 String 으로 변환하고 return 한다.
  • oneString.substring(int beginIndex, int endIndex): parameter 를 int 로 2개 넣었을 때 oneString 을 byte[] 로 받아내고 그 byte[] 의 index 로 beginIndex 부터 (endIndex - 1) 값까지를 받아내서 String 으로 변환하고 return 한다.



3. String compareTo 사용법은?

//java.lang.String.class 에서 가져옴
public int compareTo(String anotherString) {
    byte v1[] = value;
    byte v2[] = anotherString.value;
    if (coder() == anotherString.coder()) {
        return isLatin1() ? StringLatin1.compareTo(v1, v2)
                          : StringUTF16.compareTo(v1, v2);
    }
    return isLatin1() ? StringLatin1.compareToUTF16(v1, v2)
                      : StringUTF16.compareToLatin1(v1, v2);
 }
  • oneString.compareTo(String anotherString): parameter 를 anotherString 으로 하나 넣었을 때 oneString 과 anotherString 을 각각 byte[] 로 받아내고 첫번째 자리부터 비교해서 다르면 값을 반환하고 같으면 다른 자리 문자가 나올 때까지 비교해서 다르거나 한쪽만 문자가 있는 경우에 값을 반환한다.
  • (oneString.substring(0, n)).equals((anotherString.substring(0, n))) 가 true 지만 (oneString.substring(0, n + 1)).equals((anotherString.substring(0, n + 1))) 이 false 인 경우에서 oneString 을 byte[] 로 v1[], anotherString 을 byte[] 로 v2[] 로 받았다고 할때, (v1[n] - v2[n]) < 0 이면 (-1 + (v1[n] - v2[n])) 이 return 값으로 나오고, (v1[n] - v2[n]) > 0 이면 (1 + (v1[n] - v2[n])) 이 return 값으로 나온다.
  • (oneString.substring(0, n)).equals((anotherString.substring(0, n))) 가 true 지만 ((oneString.length() == n) && (anotherString.length() > n)) 도 true 인 경우에는 (-1) 이 return 된다.
  • 마찬가지로 (oneString.substring(0, n)).equals((anotherString.substring(0, n))) 가 true 지만 ((anotherString.length() == n) && (oneString.length() > n)) 도 true 인 경우에는 1 이 return 된다.
  • 아예 oneString.equals(anotherString) 이 true 인 경우에는 0 이 return 된다.



4. String.valueOf 에 대하여 설명하시오.

  • String 으로 명시적 형변환을 시켜준다.
  • static method 이기 때문에 선언 없이 사용할 수 있다.
  • method overloading 이 적용돼서 다양한 data types 를 String 으로 casting 시킬 수 있다.



5. 아래가 실행되는 원리(함수)를 표현해 보세요.

String str = "age" + 17;
//함수로 표현된 코드
String str = "age".concat(String.valueOf(17));
profile
Brave but clumsy

0개의 댓글