[SEB BE] Section 1. 자바 문자열(String)

박두팔이·2022년 12월 21일
0

자바

목록 보기
3/26

학습 목표

  • String이 무엇인지 이해한다.
  • String을 선언하고 사용하는 법을 이해한다
  • String 메서드들을 이해한다.
  • StringTokenizer가 무엇인지 이해한다.
  • String Builder, Buffer가 무엇인지 이해한다.

String 타입의 변수 선언과 할당

선언한 변수에 문자열을 할당하는 방법

  • 문자열 리터럴을 할당하는 방법 : 변수 = “문자열”;
  • String 클래스의 인스턴스를 생성하여 할당하는 방법 : 변수 = new String(”문자열”);
// 문자열 리터럴을 String 타입의 변수 name에 할당하는 방법
String name1 = "Kim Coding";

// String 클래스의 인스턴스를 생성하는 방법
String name2 = new String("Kim Coding");

두 가지 방법의 공통점: R타입의 변수에 리터럴(값)이 할당된다. 즉, 실제 문자열의 내용을 값으로 가지고 있는 것이 아니라, 문자열이 존재하는 메모리 공간 상의 주소값을 저장하고 있다.

String name1 = "Kim Coding";
String name2 = new String("Kim Coding");

System.out.print(name1); // "Kim Coding"
System.out.print(name2); // "Kim Coding"

문자열을 출력해보면 주소값이 아닌 문자열의 내용이 출력된다.
R타입의 String클래스의 메서드인 toString()이 자동으로 호출되기 때문이다. toString()이 호출되면 String타입의 변수가 저장하고 있는 주소값에 위치한 String인스턴스의 내용을 문자열로 변환해준다.

String name1 = "Kim Coding";
String name2 = "Kim Coding";

String name3 = new String("Kim Coding");
String name4 = new String("Kim Coding");

boolean comparison1 = name1 == "Kim Coding";      // true
boolean comparison2 = name1 == name2;             // true
boolean comparison3 = name1 == name3;             // false
boolean comparison4 = name3 == name4;             // false
boolean comparison5 = name1.equals("Kim Coding"); // true
boolean comparison6 = name1.equals(name3);        // true
boolean comparison7 = name3.equals(name4);        // true

등가비교 연산자 ( == , equals)

  • a == b // a와 b의 값이 일치하냐? -> boolian타입으로 출력 true/ false

  • a.equals(b) // a가 저장하고있는 문자열의 내용과 ()안의 문자열의 내용이 같으냐?

name1과 name2는 1번의 방법, 즉 문자열 리터럴을 String 타입의 변수에 직접 할당하는 방법을 사용하고 있습니다. 이처럼 동일한 문자열 리터럴을 두 변수에 할당하는 경우, 두 변수는 같은 문자열의 참조값을 공유합니다. 즉, name1과 name2가 저장하게 되는 문자열의 주소값은 같습니다.

반면, name3과 name4는 2번의 방법, 즉 String 클래스의 인스턴스를 생성해서 String 타입의 변수에 할당하는 방법을 사용하고 있습니다. 이처럼 String 클래스의 인스턴스를 생성하게 되면 문자열의 내용이 같을지라도, 별개의 인스턴스가 따로 생성됩니다. 따라서, name3과 name4가 할당받게 되는 인스턴스의 참조값은 서로 다릅니다. 즉, name3과 name4는 서로 다른 인스턴스의 주소값을 저장하고 있게 됩니다.


String 클래스의 메서드

1. charAt() 메서드

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

System.out.println(str.charAt(0)); // 'J'
System.out.println(str.charAt(1)); // 'a'
System.out.println(str.charAt(2)); // 'v'
System.out.println(str.charAt(3)); // 'a'

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

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

public class Main {
    public static void main(String[] args) {
        String str = new String("abcd");
       
        System.out.println("문자열 : " + str);     		
        // 문자열 : abcd
       
        System.out.println(str.compareTo("bcef")); 		
        // -1
       
        System.out.println(str.compareTo("abcd") + "\n"); 
        // 0
       
        System.out.println(str.compareTo("Abcd")); 		
        //32
      
		System.out.println(str.compareToIgnoreCase("Abcd"));
        //0
      
       	System.out.println("compareTo() 메서드 호출 후 문자열 : " + str); 
        //compareTo() 메서드 호출 후 문자열 : abcd
    }
}

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

String str = new String("Java");
System.out.println("문자열 : " + str);  // java
System.out.println(str.concat("수업")); //java수업
System.out.println("concat() 메서드 호출 후 문자열 : " + str);

4. indexOf() 메서드

  • indexOf() 메서드는 해당 문자열에서 특정 문자나 문자열이 처음으로 등장하는 위치의 인덱스를 반환합니다.
  • 만약 해당 문자열에 전달된 문자나 문자열이 포함되어 있지 않으면(없다면) -1을 반환합니다.
System.out.println(str.indexOf('a'));

5. trim() 메서드 : 맨 앞과 맨 뒤에 포함된 모든 공백 문자를 제거

System.out.println(str.trim())

6. toLowerCase()와 toUpperCase() 메서드

  • toLowerCase() 메서드는 해당 문자열의 모든 문자를 소문자로 변환
  • toUpperCase() 메서드는 해당 문자열의 모든 문자를 대문자로 변환
String str = new String("Java");
System.out.println("문자열 : " + str); 
System.out.println(str.toLowerCase());  //java
System.out.println(str.toUpperCase());  //JAVA

7. StringTokenizer
StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 우리는 토큰(token)이라고 부릅니다. StringTokenizer를 사용하기 위해서는 java.util.StringTokenizer를 import해야합니다.

import java.util.StringTokenizer;

public static void main(String[] args){
	String str = "This is a string example using StringTokenizer";
	StringTokenizer tokenizer = new StringTokenizer(str);

다음에 더 깊게 공부해야할 부분

  • StringTokenizer
  • StringBuilder / StringBuffer
profile
기억을 위한 기록 :>

0개의 댓글