040_String 심화

Jan 03, 2024
040_String 심화

String 클래스의 API 메서드

  • 메서드 요약
char
charAt(int intdex) → 지정된 인덱스에 있는 문자를 반환한다.
int
compareTo(String anotherString) → 사전적 순서로 문자열을 비교한다. (앞에 있으면 -1, 같으면 0, 뒤에 있으면 1이 반환)
String
concat(String str) → 주어진 문자열을 현재의 문자열 뒤에 붙인다.
boolean
equals(Object anObject) → 주어진 객체와 현재의 문자열을 비교한다.
boolean
isEmpty() → length()가 0이면 true를 반환한다.
int
length() → 현재 문자열의 길이를 반환한다.
String
toLowerCase() → 문자열의 문자들을 모두 소문자로 변경한다.
String
toUpperCase() → 문자열의 문자들을 모두 대문자로 변경한다.

String의 메서드 실사용

  • 객체 생성 → 객체를 생성하기 위해서는 new를 사용해야 하지만 문자열은 2가지 방법이 있다.
String s1 = "Java"; // 많이 사용하는 방식 String s2 = new String("Java"); // 원칙
  • 문자열의 기초 연산들
    • 길이 반환 → 문자열 길이 반환 [ length() ]
    • String s = "Hello World!"; // 객체 생성 int size = s.length(); // 12가 반환
    • 문자 추출 → 인덱스 값과 같이 0부터 시작 [ charAt() ]
    • String s = "Hello World!"; // 객체 생성 char c = s.charAt(0); // 'H'가 반환된다.
    • 문자열 결합 → 서로 다른 문자열을 하나의 문자열로 결합
    • String result = "A chain" + "is only as strong" + "as its weakest link";
  • 문자열 비교하기 → 2개의 문자열이 동일한지 검사 [ equals() ]
String s1 = "Java"; // 많이 사용하는 방식 String s2 = "Java"; String s3 = new String("Java"); // 원칙 String s4 = new String("Java"); System.out.println(s1.equals(s2)); // true, 올바른 방법 System.out.println(s1.equals(s3)); // true, 올바른 방법 System.out.println(s1==s2); // true 이지만 올바르지 않은 방법 System.out.println(s1==s3); // false, 올바르지 않은 방법
자바에서 == 연산자로는 문자열 객체를 비교 할 수 없다. 따라서 == 연산자를 사용 시 문자열 객체의 주소만 비교한다.
  • 문자열 안에서 단어 찾기 → 단어의 시작 위치 반환 [ indexOf() ]
String s = "The cat is on the table"; int index = s.indexOf("table"); if(index == -1) System.out.println("table은 없습니다. "); else System.out.println("table의 위치: " + index); // 18이 출력된다
  • 문자열을 단어로 분리할 때 → 문자열을 배열로 분리 [ split() ]
String[] tokens1 = "I am a boy.".split(" "); for (String token : tokens1) System.out.println(token); // I, am, a, boy. 로 분리되어 출력 String[] tokens2 = "100,200,300".split(","); for (String token : tokens2) System.out.println(token); // 100, 200, 300 으로 분리되어 출력

StringBuffer 클래스

  • 불변성을 가진 String 클래스를 대안으로 만들어진 클래스이다.
  • 추가, 수정, 삭제에 String보다 좋다. → heap 메모리에 저장되어 이런 장점을 가진다.
  • append()와 insert()를 제공받고 있다. (append() → 문자열의 끝에 여러 종류의 데이터를 추가하는 메서드, insert() → 문자열의 특정 위치에 여러 종류의 데이터를 문자열로 바꾸어 삽입하는 메서드)
  • 기본적인 문법으로 사용한 모습
StringBuffer s = new StringBuffer("Happiness depends upon ourselves");

append()와 insert() 실사용

StringBuffer sb = new StringBuffer("10+20="); sb.append(10+20); sb.insert(0, "수식 "); // sb= "수식 10+20=30"

String 상수풀이란? 상수이기 때문에 같은 모습이 없다. 그래서 같은 값을 가질 때는 같은 주소 값으 가진다. → 이로인해 그냥 비교하면 주소 값으로 비교하는데 equals()를 쓰면 값으로 비교 하기 때문에 많이 쓴다.
 
Share article

chodong