CodeGym /행동 /JAVA 25 SELF /문자열과 텍스트: String 타입, 문자열 다루기

문자열과 텍스트: String 타입, 문자열 다루기

JAVA 25 SELF
레벨 2 , 레슨 2
사용 가능

1. String 타입 자세히 알아보기

String 타입은 Java에서 가장 많이 사용하는 타입 중 하나입니다. 어쩌면 가장 많이 사용하는 타입일 수도 있습니다. 이 타입은 문자열(텍스트)을 변수에 저장할 수 있어서 아주 훌륭합니다. 또한 intdouble 타입과 달리, String 객체에는 다양한 함수(메서드)가 많이 있어 이를 통해 여러 가지 흥미로운 작업을 할 수 있습니다.

게다가 Java의 모든 객체(정말 전부) 는 String 타입으로 변환될 수 있습니다. 좀 더 정확히 말하면, Java의 모든 객체는 자신의 텍스트(문자열) 표현을 반환합니다. 이 타입은 매우 유용하고 흥미로워서 앞으로도 여러 번 다시 다루게 될 텐데, 오늘은 그 기초를 살펴보겠습니다.

String 타입 변수 만들기

String 타입은 문자열(텍스트)을 저장하기 위해 만들어졌습니다. 코드에서 텍스트를 저장할 수 있는 변수를 만들려면 다음 명령을 사용합니다.

String imya;
String 타입 변수 생성

여기서 imya 는 변수 이름입니다.

예시:

명령 설명
String name;
문자열 변수 name 이 생성됩니다
String message;
문자열 변수 message 가 생성됩니다
String text;
문자열 변수 text 가 생성됩니다

intdouble 타입과 마찬가지로, String 타입의 변수를 여러 개 한 줄로 간단히 선언할 수도 있습니다.

String imya1, imya2, imya3;
String 타입 변수 생성

2. String 변수에 값 할당

String 타입 변수에 값을 넣으려면 다음 명령을 사용합니다.

imya = "값";
String 변수에 값 할당

여기서 첫 번째 차이점이 나타납니다. String 타입의 모든 값은 문자열이며, 반드시 큰따옴표로 감싸야 합니다.

예시:

명령 비고
String name = "Anya";
변수 name 에는 텍스트 Anya 가 들어 있습니다
String city = "New York";
변수 city 에는 텍스트 New York 이 들어 있습니다
String message = "Hello!";
변수 message 에는 텍스트 Hello! 가 들어 있습니다

3. String 변수 초기화

intdouble 타입과 마찬가지로, String 타입 변수도 생성과 동시에 초기화할 수 있습니다. 사실 Java의 모든 타입에 대해 그렇게 할 수 있습니다. 그러니 이 점은 더 이상 반복하지 않겠습니다.

String imya1 = "값1", imya2 = "값2", imya3 = "값3";
변수 생성과 초기화의 축약형
String name = "Anya", city = "New York", message = "Hello!";
변수 생성 및 초기화 예시

값이 있어야만 변수를 변경할 수 있음

초기화하지 않은 변수를 사용하려 하면 Java 컴파일러가 오류를 보고합니다.

다음 코드는 동작하지 않습니다:

String name;
System.out.println(name); // 변수 name 은 초기화되지 않았습니다. 프로그램이 컴파일되지 않습니다.
int a;
a++; // 변수 a 는 초기화되지 않았습니다. 프로그램이 컴파일되지 않습니다.
double x;
double y = x; // 변수 x 는 초기화되지 않았습니다. 프로그램이 컴파일되지 않습니다.

4. 연결(concatenation) — 문자열 이어 붙이기

Java의 문자열로 할 수 있는 아주 흥미롭고도 간단한 일이 있습니다 — 서로 이어 붙이는 것입니다. 이런 연산을 컨캐터네이션이라고 합니다. 혹은 기억하기 쉽게 “컨-캣-터-네이션” 😆. 흔히 “문자열 연결”, 또는 그냥 “문자열 더하기”라고도 부릅니다.

두 문자열을 이어 붙이려면 + 기호를 사용합니다. 아주 간단합니다.

"문자열1" + "문자열2"
두 문자열 연결

예시:

명령 비고
String name = "Anya" + "Anya";
name 에는 문자열 AnyaAnya 가 들어 있습니다
String city = "New York" + "Anya";
city 에는 문자열 New YorkAnya 가 들어 있습니다
String message = "Hello! " + "Anya";
message 에는 문자열 Hello! Anya 가 들어 있습니다

물론 문자열을 여러 개 한꺼번에 더할 수도 있고, 문자열과 변수도 함께 더할 수 있습니다.

String name = "Anya";                // name 은 문자열 Anya 를 담습니다
String city = "New York";           // city 는 문자열 New York 을 담습니다
String message = "Hello!" + city + name + city; // message 에는 문자열 Hello!New YorkAnyaNew York 가 들어 있습니다

5. 빈 문자열

마지막 예시에서 message 변수의 텍스트는 공백이 없어 읽기 어렵습니다. 공백 한 칸(또는 여러 칸)을 넣으려면, 코드에 공백을 그대로 쓰고 큰따옴표로 감싸면 됩니다. 생각보다 간단합니다.

" "
공백 하나를 포함한 문자열

참고로 따옴표 사이에 아무것도 넣지 않고(큰따옴표 두 개를 연속으로 쓰면) 이른바 “빈 문자열”이 됩니다.

""
빈 문자열

겉보기에는 문자열이 있는 것 같지만, 화면에 출력하면 아무것도 출력되지 않습니다. 다른 문자열과 연결해도 변화가 없습니다. 숫자에서 0과 비슷한, 문자열용 개념이라고 볼 수 있습니다.

6. 문자열에서 특수 문자 이스케이프

문자열은 큰따옴표로 둘러싸인다는 것을 이미 알고 있습니다. 그런데 문자열 안에 따옴표를 넣고 싶다면 어떻게 해야 할까요? 문자열 안에 큰따옴표를 그대로 쓰면 컴파일러가 이를 문자열의 끝으로 간주하지 않을까요?

맞습니다. 그렇게 간주합니다. 그래서 문자열 내부의 큰따옴표는 \"처럼 두 문자 조합으로 써야 합니다. 그러면 코드는 다음과 같습니다.

String quote = "그가 말했다: \"안녕하세요!\"";
System.out.println(quote); // 그가 말했다: "안녕하세요!"

사실은 조금 더 복잡합니다. \ 문자는 문자열 내부에서 특별한(제어) 문자로 취급됩니다. 이를 이용하면 줄 바꿈, 탭과 같은 여러 “인쇄 불가 문자”를 표현할 수 있습니다. 그리고 \ 그 자체를 표현하려면 두 번 써야 합니다.

다음은 가장 흔한 4가지 조합입니다.

표기 의미
\n 줄 바꿈 (newline)
\t 탭 (들여쓰기)
\\ 문자 그대로 \
\" 문자열 내부의 큰따옴표

예시:

String multiline = "줄 1\n줄 2";
System.out.println(multiline);

출력:

줄 1
줄 2

7. 문자열의 자체 함수

String 타입에는 자체 함수(메서드)가 있습니다. 매우 많고, 개발자의 삶을 한결 편하게 해 줍니다. 오늘은 그중 몇 가지(가장 간단한 것들)를 살펴보겠습니다. 예:

함수 설명 결과 예시
str.length()
문자열 길이
"abc".length() → 3
str.toUpperCase()
대문자로 변환
"abc".toUpperCase() → "ABC"
str.toLowerCase()
소문자로 변환
"ABC".toLowerCase() → "abc"
str.trim()
양 끝 공백 제거
"  x y  ".trim() → "x y"

문자열 함수 사용 예

이 함수들은 다음과 같이 호출합니다: 변수.함수(...).

문자열 길이 구하기:

String name = "Andrey";
int length = name.length();
System.out.println(length); // 6, 문자 6개이므로

문자열을 대문자/소문자로 변환:

String original = "hello";
System.out.println(original.toUpperCase()); // HELLO
System.out.println(original.toLowerCase()); // hello

양 끝의 공백 제거(키보드 입력 처리 시 매우 유용):

String messy = "   hello   ";
System.out.println(messy.trim()); // "hello"

이러한 각 메서드는 새로운 문자열을 반환하며, 기존 문자열은 변경되지 않습니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION