문자열(String)은 자바에서 텍스트를 저장하는 데 사용되는 기본 데이터 타입입니다. 문자열을 다루다 보면 전체를 대문자 또는 소문자로 변환해야 하는 경우가 종종 있습니다. 예를 들어 두 개의 이름을 비교하는 앱을 만들 때, 자바의 문자열 비교는 대소문자를 구분하기 때문에 비교 전에 이름의 대소문자를 통일해 주는 것이 좋습니다.
이럴 때 유용하게 쓰이는 것이 바로 toUpperCase()와 toLowerCase() 메서드입니다. 이 글에서는 두 메서드의 사용법을 예제와 함께 살펴보고, 실제 코드에서 어떤 상황에 활용하면 좋은지 설명합니다.
자바 문자열(String) 기본 개념
문자열은 하나 이상의 문자로 이루어진 연속된 값으로, 영문자·숫자·공백·특수기호 등을 포함할 수 있습니다. 자바에서는 문자열을 큰따옴표(" ")로 감싸서 선언합니다.
String fruit = "Strawberry";
자바에서 문자열은 객체(Object)로 취급되기 때문에 내용을 조작할 수 있는 다양한 메서드를 제공합니다. toUpperCase()와 toLowerCase()도 그 많은 문자열 메서드 중 하나입니다.
중요한 점은 자바의 문자열 비교는 대소문자를 구분(case-sensitive)한다는 것입니다. 두 문자열이 같다고 판정되려면 내용뿐 아니라 대소문자까지 완전히 일치해야 합니다.
예를 들어, 사용자의 이메일 주소를 모두 소문자로 저장하는 경우(보안을 위해 널리 쓰이는 관행입니다)에는, 로그인 시 입력받은 이메일을 소문자로 변환한 뒤 비교해야 정확한 결과를 얻을 수 있습니다.
자바 toUpperCase() — 문자열을 대문자로 변환하기
toUpperCase() 메서드는 문자열의 모든 문자를 대문자로 변환합니다. 문자열을 처음부터 끝까지 순회하면서 각 문자를 대문자 형태로 바꾼 결과를 돌려줍니다.
기본 문법은 다음과 같습니다.
string_name.toUpperCase();
toUpperCase()는 문자열 메서드이기 때문에 변환하고 싶은 문자열 값 뒤에 붙여서 호출합니다.
또 한 가지 기억할 점은, 이 메서드는 원본 문자열을 변경하지 않는다는 것입니다. 대신 원본은 그대로 둔 채, 모두 대문자로 변환된 새로운 문자열을 생성해 반환합니다.
예를 들어 "Java is great"이라는 문자열을 모두 대문자로 바꾸고 싶다면 다음과 같이 작성할 수 있습니다.
String java_is_great = "Java is great";
System.out.println(java_is_great.toUpperCase());
실행 결과는 다음과 같습니다.
JAVA IS GREAT
toUpperCase() 실전 예제
특정 클럽의 예상 방문객 명단을 출력하는 애플리케이션을 만든다고 가정해 보겠습니다. 이 명단은 입구 담당자에게 전달되며, 손님이 말한 이름과 명단의 이름을 대조해 입장 가능 여부를 확인하는 데 사용됩니다. 담당자가 이름을 쉽게 읽을 수 있도록 명단의 모든 이름을 대문자로 출력하고 싶습니다.
이때 toUpperCase() 메서드를 활용하면 명단의 이름을 모두 대문자로 변환할 수 있습니다.
public class PrintAttendees {
public static void main(String[] args) {
String[] attendees = {"Liam Miller", "Michael Curtis", "Andrew Tamera", "Joan Beverly", "Sarah Klein", "Mary Blackwood"};
for (String i : attendees) {
System.out.println(i.toUpperCase());
}
}
}
실행 결과:
LIAM MILLER
MICHAEL CURTIS
ANDREW TAMERA
JOAN BEVERLY
SARAH KLEIN
MARY BLACKWOOD
코드가 어떻게 동작하는지 단계별로 살펴보겠습니다. 먼저 PrintAttendees라는 클래스를 선언하여 프로그램 코드를 담습니다.
그다음 클럽 게스트 리스트에 있는 사람들의 이름을 저장하는 문자열 배열 attendees를 초기화합니다. 이어서 향상된 for문(for-each 루프)으로 배열의 각 요소를 하나씩 순회합니다.
마지막으로 각 이름에 toUpperCase()를 적용해 대문자로 변환한 뒤 콘솔에 출력합니다.
자바 toLowerCase() — 문자열을 소문자로 변환하기
toLowerCase() 메서드는 toUpperCase()와 반대로 동작합니다. 문자열의 모든 문자를 소문자로 변환한 새로운 문자열을 반환합니다.
기본 문법은 다음과 같습니다.
string_name.toLowerCase();
toLowerCase() 역시 문자열 메서드이므로 문자열 값 뒤에 붙여서 호출합니다.
toLowerCase() 실전 예제
"프로필 수정" 폼을 만들고 있다고 가정해 보겠습니다. 사용자가 이메일 주소를 변경하기 전에, 새로 입력한 이메일이 기존 이메일과 동일한지 먼저 확인하고 싶습니다. 만약 같다면 사용자에게 다른 이메일을 입력하도록 안내해야 합니다.
이메일 주소는 대소문자를 구분하며, 우리는 모든 이메일을 소문자로 저장하고 있으므로, 사용자가 제출한 이메일을 소문자로 변환한 뒤 두 값을 비교해야 합니다.
public class CompareEmails {
public static void main(String[] args) {
String old_email = "linda.craig@gmail.com";
String new_email = "Linda.craiG@gmail.com".toLowerCase();
if (old_email.equals(new_email)) {
System.out.println("새 이메일 주소를 입력해 주세요.");
} else {
System.out.println("이메일 주소가 변경되었습니다.");
}
}
}
실행 결과:
새 이메일 주소를 입력해 주세요.
코드를 하나씩 분석해 보겠습니다. 먼저 프로그램 코드를 담는 CompareEmails 클래스를 정의합니다. 그다음 사용자의 기존 이메일 주소를 저장하는 변수 old_email을 선언합니다.
다음 줄에서는 사용자가 새로 입력한 이메일 주소를 담는 변수를 선언하면서, toLowerCase() 메서드로 값을 소문자로 변환합니다. 이렇게 하면 두 이메일 주소를 올바르게 비교할 수 있습니다.
이후 if문으로 새 이메일과 기존 이메일이 같은지 검사합니다. 같다면 "새 이메일 주소를 입력해 주세요."라는 안내 메시지를, 다르다면 "이메일 주소가 변경되었습니다."라는 메시지를 출력합니다.
이 예제에서 사용자가 입력한 이메일에는 대문자 L이 포함되어 있지만, 소문자로 변환한 후에는 두 문자열의 내용이 완전히 동일합니다. 따라서 프로그램은 "새 이메일 주소를 입력해 주세요."라는 메시지를 출력합니다.
알아두면 좋은 팁
toUpperCase()와toLowerCase()는 기본적으로 시스템의 기본 로케일(Locale)을 사용합니다. 터키어처럼 로케일에 따라 대소문자 변환 규칙이 달라지는 언어를 다룰 때는toUpperCase(Locale.ROOT)처럼 로케일을 명시하는 것이 안전합니다.- 대소문자와 관계없이 두 문자열이 같은지만 확인하고 싶다면
equalsIgnoreCase()메서드를 사용하는 것도 좋은 방법입니다.
마무리
지금까지 자바의 toUpperCase() 메서드로 문자열을 대문자로, toLowerCase() 메서드로 소문자로 변환하는 방법을 배웠습니다. 두 메서드 모두 원본 문자열을 변경하지 않고 새로운 문자열을 반환한다는 점, 그리고 대소문자를 구분하는 문자열 비교 전에 유용하게 활용할 수 있다는 점을 기억하세요. 이제 여러분도 자바 전문가처럼 문자열의 대소문자를 자유롭게 변환할 수 있습니다!