자바 문자열 처리

문자열(String)은 Java에서의 객체입니다. 이 문자열은 문자들의 시퀀스를 나타냅니다. 다른 언어들이 문자열을 문자 배열로 구현하는 것과 달리, Java는 문자열을 문자열(String) 타입의 객체로 구현합니다.

여기 “Hello World”라는 문자열이 있습니다. 정확하게 말하면 이는 문자열 리터럴입니다. 이것은 문자열 값을 의미합니다.

문자열은 다음과 같이 생성됩니다.

가장 적절한 방법은 다음과 같습니다:

String firstEx = "Hello World!";

문자열은 클래스이지만 데이터 유형으로 사용될 수 있습니다.

String firstEx(refrence) = "Hello World!"(object);

문자열 생성

문자열을 생성하는 방법

  1. 리터럴 사용
  2. new 키워드를 사용

예제:

String name = "Great";
String str = new String();

문자열의 메서드

Java의 String 클래스는 문자열을 수정하는 데 도움이되는 여러 유용한 메서드를 제공합니다.

메서드 효과

  • concat() : 두 개의 문자열을 연결합니다.
  • length() : 문자열의 길이를 찾습니다.
  • replace("a", "b") : ‘a’를 ‘b’로 대체합니다.
  • toUpperCase() : 문자열을 대문자로 변환합니다.
  • toLowerCase() : 문자열을 소문자로 변환합니다.
  • trim() : 문자열의 앞뒤 공백을 제거합니다.
  • indexOf("a") : 문자열에서 ‘a’의 첫 번째 발생 위치를 반환합니다.
  • startsWith("x") : 문자열이 “x”로 시작하는지 여부를 반환합니다.
  • endsWith("x") : 문자열이 “x”로 끝나는지 여부를 반환합니다.
  • equals("x") : 문자열이 “x”와 동일한지 여부를 반환합니다.

예제를 통한 구현

1. 문자열 연결 방법

문자열을 다른 문자열과 연결하기 위해 플러스(+) 연산자를 사용할 수 있습니다. 예:

String result = "Hello" + "World";

2. endsWith()

endsWith() 메서드를 사용하여 문자열이 특정 문자나 문자열로 끝나는지 확인할 수 있습니다. 예:

String text = "Hello, World";
boolean endsWithWorld = text.endsWith("World");

3. startsWith()

startsWith() 메서드를 사용하여 문자열이 특정 문자나 문자열로 시작하는지 확인할 수 있습니다. 예:

String text = "Hello, World";
boolean startsWithHello = text.startsWith("Hello");

4. length()

length() 메서드를 사용하여 문자열의 길이(문자 수)를 확인할 수 있습니다. 예:

String text = "Hello";
int length = text.length();

5. indexOf()

indexOf() 메서드를 사용하여 문자열에서 특정 문자나 문자열의 첫 번째 발생 위치를 확인할 수 있습니다. 예:

String text = "Hello, World";
int index = text.indexOf("World");

6. replace()

replace() 메서드를 사용하여 문자열에서 하나 이상의 문자를 다른 문자로 대체할 수 있습니다. 예:

String text = "Python";
String replaced = text.replace("P", "J");

7. toLowerCase()

toLowerCase() 메서드를 사용하여 문자열의 모든 문자를 소문자로 변환할 수 있습니다. 예:

String text = "JAVA";
String lowerCase = text.toLowerCase();

8. toUpperCase()

toUpperCase() 메서드를 사용하여 문자열의 모든 문자를 대문자로 변환할 수 있습니다. 예:

String text = "python";
String upperCase = text.toUpperCase();

9. trim()

trim() 메서드를 사용하여 문자열의 앞뒤 공백을 제거할 수 있습니다. 예:

String text = "  JAVA & python  ";
String trimmed = text.trim();

10. equals()

equals() 메서드를 사용하여 두 문자열이 동일한지 비교할 수 있습니다. 예:

String text1 = "Hello";
String text2 = "Hello";
boolean isEqual = text1.equals(text2);

상황에 따른 예제

1. 문자열 생성

자바에서 문자열을 생성하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 문자열 리터럴을 사용하는 것이며, 위의 예제처럼 큰따옴표로 묶어 변수에 할당할 수 있습니다. 또한 String 클래스의 생성자를 사용하여 문자열을 만들 수도 있습니다.

String name = new String("홍길동");

2. 문자열 연결

자바에서 문자열을 연결하는 데 사용되는 연산자는 +입니다. 이 연산자를 사용하여 두 개 이상의 문자열을 합칠 수 있습니다.

String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;

3. 문자열 길이

문자열의 길이를 구할 때는 length() 메서드를 사용합니다.

String text = "Hello, World!";
int length = text.length(); // length에는 13이 저장됨

4. 문자열 검색

특정 문자열을 찾거나 검색할 때는 indexOf() 메서드를 활용합니다.

String sentence = "Java는 프로그래밍 언어 중 하나입니다.";
int position = sentence.indexOf("프로그래밍"); // position에는 6이 저장됨

5. 문자열 수정

자바에서 문자열은 불변(immutable)이기 때문에 한 번 생성되면 수정할 수 없습니다. 대신, 새로운 문자열을 생성하여 수정된 내용을 반영해야 합니다.

String original = "자바 문자열";
String modified = original.replace("자바", "Java");

6. 문자열 추출

부분 문자열을 추출할 때는 substring() 메서드를 사용합니다.

String text = "이 글을 읽는 여러분은 자바 문자열을 배우고 있습니다.";
String subText = text.substring(17, 30); // subText에는 "자바 문자열"이 저장됨

7. 문자열 비교

== 연산자는 참조 비교를 수행하므로 문자열의 내용을 비교하려면 equals() 메서드를 사용해야 합니다.

문자열을 비교할 때는 equals() 메서드를 사용합니다.

String str1 = "Hello";
String str2 = "Hello";
boolean areEqual = str1.equals(str2); // areEqual에는 true가 저장됨

8. 문자열 포맷팅

문자열을 특정 형식에 맞게 출력하고 싶을 때는 String.format()을 활용합니다.

String name = "Alice";
int age = 30;
String message = String.format("제 이름은 %s이고, 나이는 %d살입니다.", name, age);

9. 문자열을 숫자로 변환

문자열을 숫자로 변환할 때는 parseInt()parseDouble() 메서드를 사용합니다.

String numStr = "42";
int num = Integer.parseInt(numStr); // num에는 42가 저장됨

기타 개념

이스케이프 시퀀스

문자열 안에 특수 문자를 포함시키는 방법에 대해 알아봅시다.

예를 들어, 다음과 같은 문자열이 있습니다.

"Hi, My name is Ankit & I am the Student of Maths"

이 문자열에서 “Maths”를 큰 따옴표로 둘러싸고 싶다고 가정해 봅시다.

문제가 발생합니다. 만약 “Maths” 앞에 큰 따옴표를 추가하면 Java 컴파일러는 이것이 문자열의 종료로 간주하며, 큰 따옴표 뒤에 있는 내용을 이해하지 못합니다. 이로 인해 Java 컴파일러는 컴파일 오류를 반환합니다.

이 문제를 해결하려면 큰 따옴표 앞에 백슬래시(\)를 추가해야 합니다.

예제:

String text = "Hi, My name is Ankit & I am the Student of \"Maths\"";

이렇게 백슬래시를 사용하여 큰 따옴표를 이스케이프하면 다음과 같은 결과를 얻을 수 있습니다.

Hi, My name is Ankit & I am the Student of "Maths"

Java는 여러 특수 문자를 제공합니다. 이스케이프 시퀀스의 예제:

  • \n : 새로운 줄을 만듭니다.
  • \t : 탭을 삽입합니다.
  • \b : 백스페이스 문자를 만듭니다.
  • \' : 작은 따옴표를 만듭니다.
  • \" : 큰 따옴표를 만듭니다.
  • \\ : 백슬래시를 만듭니다.

문자열은 불변(Immutable)입니다

문자열은 불변입니다.. 즉, 문자열을 생성한 후에는 문자열을 변경할 수 없습니다. 그러나 문자열 참조로 선언된 변수는 언제든지 다른 문자열 객체를 가리키도록 변경할 수 있습니다.

우리는 여전히 모든 유형의 문자열 작업을 수행할 수 있습니다. 기존 문자열의 수정 버전이 필요할 때마다 변경 사항을 포함하는 새로운 문자열 객체가 생성됩니다. 원래 문자열은 변경되지 않습니다. 이 접근 방식은 불변한 문자열은 변경 가능한 것보다 효율적으로 구현할 수 있다는 이유로 사용됩니다.

변경된 문자열이 필요한 경우, 생성 후 수정할 수 있는 문자열을 포함하는 동반 클래스인 StringBuffer가 있습니다.

결론

자바에서 문자열 다루기는 프로그래밍에서 중요한 부분 중 하나입니다. 이 글에서는 문자열의 기본 개념부터 다양한 작업을 수행하는 방법에 대해 알아보았습니다. 문자열을 잘 다루면 더 효과적인 프로그래밍을 할 수 있을 것입니다.

Leave a Comment