본문 바로가기

Java 개념정리

[java] String 클래스

String 란?

: 문자열을 나타내는 클래스

  String 인스턴스는 한 번 생성되면 그 값을 '읽기'만 가능하다(변경 불가)(=불변객체라고도 함)

 

//String 사용법
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println("name : " + name); // 출력값 --> name : Rimmee

        String name2 = "rim".substring(1,3); // substring(int a, int b) -> 문자열 자르기
        System.out.println(name2);// 출력값 --> im
    }
}

 


String 클래스의 메소드

1) length()

: 문자열의 길이를 반환하는 메소드

// length 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println(name.length()); // 출력값 -> 6
    }
}

 

2) isEmpty()

: 문자열의 길이가 0이면 true를 반환하고, 아니면 false를 반환하는 메소드

// isEmpty() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        String name2 = "";
        System.out.println(name.isEmpty()); // 출력값 -> false
        System.out.println(name2.isEmpty()); // 출력값 -> true
    }
}

 

3) charAt()

: 문자열의 특정 인덱스에 해당하는 문자를 반환하는 메소드

  해당 문자열의 길이보다 큰 인덱스나 음수를 전달하면, IndexOutOfBoundsException 오류가 발생한다. 

// charAt() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";

        System.out.println(name.charAt(3)); // 출력값 : m
        System.out.println(name.charAt(5)); // 출력값 : e
        System.out.println(name.charAt(6)); // IndexOutOfBoundsException 오류 발생
        System.out.println(name.charAt(-1));// IndexOutOfBoundsException 오류 발생
    }
}

* 인덱스의 범위는 0부터 length() - 1까지이다.

 

4) equals()

: 문자열을 참조변수와 비교하는 메소드, 같으면 true를 반환하고 아니면 false를 반환한다.

// equals() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println(name.equals("Rimmee")); // 출력값 : true
        System.out.println(name.equals("apple")); // 출력값 : false

        System.out.println(name.equalsIgnoreCase("rimmee")); // 출력값 : true
        
    }
}

* equalsIgnoreCase 를 사용하면 대소문자 구분없이 비교할 수 있다.

 

5) compareTo()

: 문자열을 사전순으로 비교하는 메소드(같은 위치의 문자열을 비교한다.)

// compareTo() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println(name.compareTo("Rimmee")); // 출력값 -> 0
        System.out.println(name.compareTo("Rimm")); // 출력값 -> 2
        System.out.println(name.compareTo("Ri")); // 출력값 -> 4
        System.out.println(name.compareTo("a")); // 출력값 -> -15

        System.out.println(name.compareToIgnoreCase("rimmee")); // 출력값 -> 0
    }
}

* 문자열이 같으면 '0'을 리턴해준다. 

  기준값에 비교대상이 일부 포함되어 있는 경우, 문자열 길이의 차이값을 리턴해준다.

  "Rimmee"와 "a"를 비교했을 때 출력값이 -15가 나오는 이유는, 비교 불가능한 지점의 아스키 코드 값을 기준으로

   비교하기 때문이다.(a -> 97 / R -> 82이므로 82 - 97 = -15)

compareToIgnoreCase 를 사용하면 대소문자 구분없이 비교할 수 있다.

 

6) indexOf()

: 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환하는 메소드

만약 문자열에 전달된 문자나 문자열이 포함되어 있지 않으면 -1을 반환한다.

// indecOf() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println(name.indexOf("i")); // 출력값 -> 1
        System.out.println(name.indexOf("a")); // 출력값 -> -1
    }
}

 

 7) Substring()

: 문자열에서 임의의 문자열을 추출하는 메소드

  해당 문자열의 길이보다 큰 인덱스나 음수를 전달하면, IndexOutOfBoundsException 오류가 발생한다. 

//subString() 메소드
public class Main {
    public static void main(String args[]){

        String name = "Rimmee";
        System.out.println(name.substring(1)); // 출력값 -> immee
        System.out.println(name.substring(1,4)); // 출력값 -> imm
        System.out.println(name.substring(7)); // StringIndexOutOfBoundsException 오류 발생 ( 범위 초과 )
    }
}

* 받은 인수가 1개인 경우, 시작되는 인덱스 지점을 가리킨다.

* 받은 인수가 2개인 경우, subString(from, to) 로 사용되는데, 이 경우 from부터~to미만까지의 문자열을 반환한다.

 

8) concat()

: 지정된 문자열을 해당 문자열 끝에 추가해주는 메소드

//concat() 메소드

public class Main {
    public static void main(String args[]){

        String str = "my";
        System.out.println(str.concat("house")); // 출력값 -> myhouse
        String first = "A ";
        String middle = "happy ";
        String last = "Day!";

        System.out.println(first.concat(middle.concat(last))); // 출력값 -> A happy Day!
    }
}

 

9) replace()

: 변경하고 싶은 문자로 문자열을 치환해주는 메소드

 

//replace() 메소드

public class Main {
    public static void main(String args[]){

        String str = "my house";
        System.out.println(str.replace("m","b")); // 출력값 -> by house
    }
}

10) toUpperCase(), toLowerCase()

: 해당 문자열을 대문자 / 소문자로 변경해주는 메소드

//toUpperCase(), toLowerCase() 메소드

public class Main {
    public static void main(String args[]){

        String str = "my house";
        String str2 = "HAPPY DAY!";
        System.out.println(str.toUpperCase()); // 출력값 -> MY HOUSE
        System.out.println(str2.toLowerCase()); // 출력값 -> happy day!
    }
}

 

11) trim()

: 앞, 뒤 공백을 제거해주는 메소드(중간에 있는 공백은 제거되지 않음)

//trim() 메소드

public class Main {
    public static void main(String args[]){

        String str = " my house ";
        System.out.println(str.trim()); // 출력값 : "my house"
    }
}

 


출처

String (Java Platform SE 7 ) (oracle.com)

'Java 개념정리' 카테고리의 다른 글

[Java] Queue  (0) 2022.10.04
[Java] Stack  (0) 2022.10.02
[java] Dynamic Programming(DP / 동적 계획법)  (0) 2022.09.27
[Java] 변수  (0) 2022.08.17
[Java] Math 클래스  (0) 2022.08.11