ABOUT ME

95.12.1 / 취준생 / Java

Today
Yesterday
Total
  • CHAPTER 9. (2) ★ String클래스란? (★★★ String 클래스 생성자, 메서드 포함)
    java/ㄴ CHAPTER 9. java.lang 패키지와 유용한 클래스 2020. 4. 23. 12:16


    String클래스
     - 문자열을 위한 클래스
     - 문자열을 저장, 이를 다루는 메서드 제공
     - 불변객체
      => 한번 생성한 문자열은 읽기만 가능 (변경 불가)
      ㄴ 바뀌던데? : 바뀌는 게 아니라 새로운 문자열이 담긴 인스턴스가 생성됬던 것
     ㄴ 덧셈 연산자로 인한 연산 시마다 새로운 문자열을 가진 인스턴스가 생성됨 (메모리 공간 낭비) => 가능한 자제
    ㄴ 만약 문자열 간 결합, 추출 등이 필요한 작업이라면 String 클래스 말고 StringBuffer 클래스 사용 추천


    문자열 작성 시 방법
     - 문자열 리터럴 지정
     ㄴ 이미 존재하는 경우 재사용

     - String 클래스 생성자 사용
     ㄴ new 연산자에 의해 메모리 할당, 항상 새로운 인스턴스 생성


    ★ 두 문자열 비교?
     equals 사용 시 내용을 비교하기 때문에 true 지만,
     등가비교 연산자 == 사용시 String 인스턴스의 주소를 비교하기 때문에 결과가 다름 (false)

     


    빈 문자열
     - 길이가 0인 문자열

    ex.
    char c = ' '; // 가능, 기본값 \u0000보다는 ' ' 로 사용 권장, ''는 오류
    String str = ""; // 가능, 기본값 null 보다는 ""로 사용 권장



    ★★★
    String 클래스 생성자, 메서드


    int compareTo(String str)
     - 문자열(str)과 사전 순서로 비교. 같으면 0 , 이전이면 음수, 이후면 양수 반환
    ex.
    int i1 = "aaa".compareTo("aaa"); // i = 0
    int i2 = "aaa".compareTo("bbb"); // i = -1
    int i3 = "bbb".compareTo("aaa");  // i = 1


    boolean contains(CharSequence s)
     - 지정된 문자열이 포함되었는지 검사
    ex.
    String s = "abcdfg"
    boolean bl = s.contains("bc");
    // b = true


    boolean endsWith(String suffix)
     - 지정된 문자열(suffix)로 끝나는지 검사
    ex.
    String file = "Hello.txt";
    boolean b = file.endsWith("txt");
    // b = true


    boolean equals(Object obj)
     - 매개변수로 받은 문자열(obj)가 String인스턴스 문자열 비교 , 다르면 false 반환
    ex.
    String s = "Hello";
    boolean b1 = s.equals("Hello"); // b1 = true
    boolean b2 = s.equals("hello"); // b2 = false


    boolean equalsIgnoreCase(String str)
     - 문자열과 String인스턴스 문자열을 대소문자 구분없이 비교
    ex.
    String s = "Hello";
    boolean b1 = s.equalsIgnoreCase("HELLO"); // b1 = true
    boolean b2 = s.equalsIgnoreCase("hello"); // b2 = true



    int indexOf(int ch)
     - 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려줌, 못 찾으면 -1 반환
    ex.
    String s = "Hello";
    int idx1 = s.indexOf('o'); // idx1 = 4
    int idx2 = s.indexOf('k'); // idx2 = -1


    int indexOf(int ch, int pos)
     - 주어진 문자(ch)가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치(index)를 알려줌. 못 찾으면 -1 반환
    ex.
    String s = "Hello";
    int idx1 = s.indexOf('e'. 0); // idx1 = 1
    int idx2 = s.indexOf('e'. 2); // idx2 = -1


    int indexOf(String str)
     - 주어진 문자열이 존재하는지 확인하여 그 위치(index)를 알려줌. 없으면 -1 반환
    ex.
    String str = "ABCDEFG";
    ind idx = str.indexOf("CD");
    // idx = 2


    int lastIndexOf(int ch)
     - 지정된 문자 or 문자 코드를 문자열의 오른쪽 끝부터 찾아서 위치 알려줌. 못 찾으면 -1 반환
    ex.
    String str = "java.lang.Object";
    int idx1 = str.lastIndexOf('.'); // idx1 = 9
    int idx2 = str.IndexOf('.'); // idx2 = 4
    // ??? 먼저 문자열 길이 확인하고 그 다음부터 세는건가?


    int lastIndexOf(String str)
     - 지정딘 문자열을 인스턴스 문자열 끝부터 찾아서 위치 알려줌. 못 찾으면 -1 반환
    ex.
    String str = "java.lang.Object";
    int idx1 = str.lastIndexOf("java"); // idx1 = 10
    int idx2 = str.indexOf("java"); // idx2 = 0
    // ??? 이건 뭐지


    int length()
     - 문자열의 길이 알려줌
    ex.
    String str = "Hello";
    int length = str.length();
    // length = 5


    String replace(char old, char nw)
     - 문자열 중의 문자(old)를 새로운 문자(nw)로 바꾼 문자열 반환
    ex.
    String str = "Hello";
    String s1 = str.replace('H', 'C');
    // s1 = "Cello"



    String replace(CharSequence old, CharSequence nw)
     - 문자열 중의 문자열(old)을 새로운 문자열(cw)로 모두 바꾼 문자열을 반환
    ex.
    String str = "Hellollo";
    String s1 = str.replace("ll", "LL");
    // s1 = "HeLLoLLo"


    String replaceAll(String regex, String replacement)
     - 문자열 중에서 지정된 문자열(regex)과 일치 하는 것을 새로운 문자열(replacement)로 모두 변경
    ex.
    String str = "AABBAABB";
    String r = str.replaceAll("BB", "bb");
    // r = "AAbbAAbb"


    boolean isEmpty()
     - 문자열 길이가 0이면 true 반환


    String[] split(String regex)
     - 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환
    ex.
    String animals = "dog,cat,bear";
    String[] arr = animals.split(",");

    // arr[0] = dog;
    // arr[1] = cat;
    // arr[2] = bear;



    String[] split(String regex, int limit)
     - 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환, 단 문자열 전체를 지정된 수(limit)로 자름
    ex.
    String animals = "dog,cat,bear";
    String[] arr = animals.split("," , 2);
    // arr[0] = "dog"
    // arr[1] = "cat, bear"


    boolean startWith(String prefix)
     - 주어진 문자열(prefix)로 시작하는지 검사
    ex.
    String s = "java.lang.Object";
    boolean b = s.startWith("java"); // b = true
    boolean b2 = s.startWith("lang"); // b2 = false
    * 주어진 문자열(endsWith)로 끝나는지 검사 도 있음



    String substring(int begin)
    String substring(int begin, int end)
     - 주어진 시작위치(begin)부터 끝 위치(eng) 범위에 포함된 문자열을 얻음
    이때, 시작위치의 문자는 범위에 포함되지만 끝 위치 문자는 포함되지 않음 ex.
    String s = "java.lang.Object";
    String c = s.substring(10); // Object
    String p = s.substring(5, 9); // lang


    String toLowerCase()
     - String 인스턴스에 저장되어있는 모든 문자열을 소문자로 변환하여 반환
    ex.
    String s = "Hello";
    String s1 = s.toLowerCase();
    // s1 = "hello"


    String trim()
     - 문자열의 왼쪽 끝과 오른쪽 끝에 있는 공백을 없앤 결과 반환
    (문자열 중간에 있는 공백은 제거되지 않음)
    ex.
    String s = " Hello World ";
    String s1  = s.trim();
    // s1 = "Hello World"



    String valueOf(int i)
     - 지정된 값을 문자열로 변환하여 반환
    ex.
    String i = String.indexOf(100);
    // i = "100"

    or

    int i = 100;
    String str = String.valueOf(i);
    // i = "100"


    join()
     - JDK 1.8부터 추가됨
     - 여러 문자열 사이에 구분자를 넣어서 결합
     - 구분자로 문자열을 자르는 split()의 반대 작업
    ex.
    String str = "dog,cat,bear";
    String[] arr = str.split(",");
    String result = String.join("-", arr); 
    System.out.println(result)
    // result = "dog-cat-bear"

     

     

     

    문자열과 기본형 간의 변환

    valueOf()
    ex.
    int i  = 100;
    String str = String.valueOf(i);



    parseInt()
    int i = Integer.parseInt("100");
    int i = Integer.valueOf("100");

     - 원래는 parseInt()를 썼는데 메서드 이름 통일시하기 위해 valueOf() 가 나중에 추가됨
     = 두 메서드는 반환 타입만 다르지 같은 메서드

Designed by Tistory.