String

홍정완·2022년 8월 8일
0

lay the ground work

목록 보기
3/18
post-thumbnail

String 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없다.

이러한 객체를 자바에서는 불변 객체(immutable object)라고 한다.


즉, 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 수행하면, 기존 문자열의 내용이 변경되는 것이 아니라 내용이 합쳐진 새로운 String 인스턴스가 생성되는 것이다.



charAt()


charAt() 메서드는 해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다.

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


String str = new String("Java");
System.out.println("원본 문자열 : " + str);

for (int i = 0; i < str.length(); i++) {
	System.out.print(str.charAt(i) + " ");
}

System.out.println("\ncharAt() 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 : Java

// J a v a 
// charAt() 메서드 호출 후 원본 문자열 : Java



compareTo()


compareTo() 메서드는 해당 문자열을 인수로 전달된 문자열과 사전 순으로 비교한다.

이 메서드는 문자열을 비교할 때 대소문자를 구분하여 비교한다.

만약 두 문자열이 같다면 0 반환, 해당 문자열이 인수로 전달된 문자열보다 작으면 음수, 크면 양수 반환.


만약 문자열을 비교할 때 대소문자를 구분하지 않기를 원한다면, compareToIgnoreCase() 메서드 사용


String str = new String("abcd");
System.out.println("원본 문자열 : " + str);

System.out.println(str.compareTo("bcef"));
System.out.println(str.compareTo("abcd") + "\n");

System.out.println(str.compareTo("Abcd"));
System.out.println(str.compareToIgnoreCase("Abcd"));
System.out.println("compareTo() 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 : abcd

// -1
// 0
// 32
// 0
// compareTo() 메서드 호출 후 원본 문자열 : abcd



concat()


concat() 메서드는 해당 문자열 뒤에 인수로 전달된 문자열을 추가한 새로운 문자열을 반환한다.

만약 인수로 전달된 문자열의 길이가 0이면, 해당 문자열을 그대로 반환


String str = new String("Java");
System.out.println("원본 문자열 : " + str);

System.out.println(str.concat("수업"));
System.out.println("concat() 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 : Java

// Java수업
// concat() 메서드 호출 후 원본 문자열 : Java



indexOf()


indexOf() 메서드는 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환한다.

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


indexOf() 메서드는 문자나 문자열을 찾을 때 대소문자를 구분


String str = new String("Oracle Java");
System.out.println("원본 문자열 : " + str);

System.out.println(str.indexOf('o'));
System.out.println(str.indexOf('a'));
System.out.println(str.indexOf("Java"));
System.out.println("indexOf() 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 : Oracle Java

// -1
// 2
// 7
// indexOf() 메서드 호출 후 원본 문자열 : Oracle Java



trim()


trim() 메서드는 해당 문자열의 맨 앞과 맨 뒤에 포함된 모든 공백 문자를 제거한다.


String str = new String(" Java     ");
System.out.println("원본 문자열 : " + str);

System.out.println(str + '|');
System.out.println(str.trim() + '|');
System.out.println("trim() 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 :  Java

//   Java        |
// Java|
// trim() 메서드 호출 후 원본 문자열 :  Java



toLowerCase(), toUpperCase()


toLowerCase() 메서드는 해당 문자열의 모든 문자를 소문자로 변환

toUpperCase() 메서드는 해당 문자열의 모든 문자를 대문자로 변환


String str = new String("Java");
System.out.println("원본 문자열 : " + str);

System.out.println(str.toLowerCase());
System.out.println(str.toUpperCase());
System.out.println("두 메서드 호출 후 원본 문자열 : " + str);

// 실행 결과
// 원본 문자열 : Java

// java
// JAVA
// 두 메서드 호출 후 원본 문자열 : Java



substring()


substring 메서드는 문자열 중 특정 부분을 뽑아낼 경우에 사용한다.

String a = "Hello Java";
System.out.println(a.substring(0, 4));  

// 출력 결과

// Hell

substring(시작 위치, 끝 위치)을 사용하면 문자열의 시작 위치에서 끝 위치까지의 문자를 뽑아내게 된다.
단 끝 위치는 포함이 안된다.



contains()


boolean contains(CharSequence s)

  • 대상 문자열에 특정 문자열이 포함되어 있는지 확인하는 함수이다.
  • 대 / 소문자를 구분한다.
String str = "my java test";

System.out.println(str.contains("java"));  // true
System.out.println(str.contains(" my"));  // false



split()


split 메서드는 문자열을 특정 구분자로 분리하는 메서드이다.

String a = "a:b:c:d";
String[] result = a.split(":");  // result는 {"a", "b", "c", "d"}

위의 예처럼 "a:b:c:d"라는 문자열을 ":" 문자로 나누어 {"a", "b", "c", "d"} 문자열 배열을 만들 수 있다.


응용

int n = 123;
String[] array = String.valueOf(n).split("");

for(String s : array) System.out.println(s);

// 출력 결과

// 1 
// 2
// 3



equals()와 ==(동등 연산자)의 차이


공통점 : 양쪽에 있는 내용을 비교해서 boolean type 반환


형태의 차이 

  • equals()는 메서드

    • 객체끼리 내용을 비교할 수 있도록 합니다.
  • == 연산자

    • 비교를 위한 연산자



주소값 비교와 내용 비교

  • equals 메서드

    • 비교하고자 하는 대상의 내용 자체를 비교
  • == 연산자

    • 비교하고자 하는 대상의 주소값을 비교



응용

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        String str = new String("김서방은 ");

        for(int i = 0; i<seoul.length; i++){
            if(seoul[i].equals("Kim")) {
                answer = str.concat(String.valueOf(i)+"에 있다");
                break;
            }
        }
        return answer;
    }
}



etc.


valueOf() - 지정 값을 문자열로 변환

int a=12;  

String A =String.valueOf(a);  

System.out.println(A);

// 출력 결과

// 12



toCharrArray() - 문자열을 char형 배열로 변환

public String solution(String phone_number) {
      
     char[] ch = phone_number.toCharArray();
}



profile
습관이 전부다.

0개의 댓글