프로그래밍 언어/Java

Java 자료형 - 문자열(String), StringBuffer

DevelopJJong 2022. 5. 7. 15:57

✔ 개요

  1. 원시(primitive) 자료형
  2. 문자열 내장 메소드
    1. equals
    2. indexOf
    3. contains
    4. charAt
    5. replaceAll
    6. substring
    7. toUpperCase
    8. split
  3. 문자열 포매팅(String.Format)
  4. StringBuffer
    1. append
    2. insert
    3. substring

문자열이란?

문장을 뜻한다.

예시)

"Hello World"
"b"
"412412"

자바에서 문자열을 나타내는 자료형은 String 이다.

문자열을 자바에서 표현하는 법)

String a = "hello World";
String b = "a";
String c = "123123";

원시(primaitive) 자료형

 

int, long, double, float, boolean, char 등을 자바는 원시(primitive) 자료형 이라고 부른다.

primitive 자료형은 다음과 같이 리터럴(literal)로만 값을 세팅할 수 있다.

boolean result = true;
char capitalC = 'C';
int i = 100000;

String은 primitive 자료형이 아니다.


문자열 내장 메소드

1. equals

equals는 두개의 문자열이 동일한지를 비교하여 결과값을 리턴한다.

 

예시)

String a = "hello";
String b = "java";
String c = "hello";
System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력

 

2. indexOf

 indexOf는 문자열에서 특정 문자가 시작되는 위치(인덱스)를 리턴한다.

 

예시)

String a = "Hello Java";
System.out.println(a.indexOf("Java"));  // 6 출력

// java라는 문자열이 시작되는 위치가 6인 것을 알 수 있다.

 

3. contains

 contains는 문자열에서 특정 문자열이 포함되어 있는지의 여부를 리턴한다.

 

예시)

String a = "Hello Java";
System.out.println(a.contains("Java"));  // true 출력

//Java라는 문자열이 포함되어 있기 때문에 true를 출력한다.

 

4. charAt

 charAt은 문자열에서 특정 위치의 문자(char)를 리턴한다.

 

예시)

String a = "Hello Java";
System.out.println(a.charAt(6));  // "J" 출력

// Hello Java라는 문자열에서 "J"라는 문자는 일곱번째 문자이다. 하지만 6으로 문자를 찾아야 하는
// 이유는 자바는 숫자를 0부터 세기 떄문이다.

 

5. replaceAll

 replaceAll은 문자열 중 특정 문자열을 다른 문자열로 바꾸고자 할 때 사용한다.

 

예시)

String a = "Hello Java";
System.out.println(a.replaceAll("Java", "World"));  // Hello World 출력

// Java가 World로 바뀌게 되서 Hello World가 출력되게 된다.

 

6. substring

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

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

// 맨 앞이 0이기 때문에 Hell 까지만 출력된다.

 

7. toUpperCase, toLowerCase

 toUpperCase는 문자열을 모두 대문자로 변경할 때 사용한다.

 toLowerCase는 문자열을 모두 소문자로 변경할 때 사용한다.

String a = "Hello Java";
System.out.println(a.toUpperCase());  // HELLO JAVA 출력

/*String a = "Hello Java";
System.out.println(a.toLowerCase());  // hello java 출력 */

 

8. 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"} 문자열 배열을 만들수 있다.

문자열 포매팅(String.format)

1. 숫자 바로 대입

2. 문자열 바로 대입

3. 숫자 값을 나타내는 변수로 대입

4. 2개 이상의 값 넣기

 

포맷 코드와 숫자 함께 사용하기

1. 정렬과 공백

System.out.println(String.format("%10s", "hi"));  // "        hi" 출력

// %10s 는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미이다.
// %-10s 는 왼쪽정렬이 된다.

2. 소수점으로 표현하기

System.out.println(String.format("%.4f", 3.42134234));  // 3.4213 출력

System.out.println(String.format("%10.4f", 3.42134234));  // '    3.4213' 출력

System.out.printf 메소드와 함께 사용해야 한다.

Stirng.format과 System.out.printf의 차이는 전자는 문자열을 리턴하는 메소드이고

후자는 문자열을 출력하는 메소드라는 점이다. 상황에 맞게 선택하여 사용할 수 있다.


StringBuffer

 

1. append

 append를 사용해서 계속해서 문자열을 추가해 나갈 수 있다.

StringBuffer sb = new StringBuffer();  // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("hihi");
String result = sb.toString();
System.out.println(result);

// 결과값은 hello hihi이다.

2. insert

 insert는 특정 위치에 원하는 문자열을 삽입할 수 있다.

StringBuffer sb = new StringBuffer();
sb.append("asdasd");
sb.insert(0, "hello ");
System.out.println(sb.toString());

// 출력 값 : hello asdasd 
// insert를 사용하여 0번째 위치에 "hello"라는 문자열을 삽입했다.

3. substring

 String 자료형의 substring 메소드와 동일하게 사용(원하는 번호위치까지 출력)