CodeGym /Java Blog /무작위의 /자바 문자열
John Squirrels
레벨 41
San Francisco

자바 문자열

무작위의 그룹에 게시되었습니다

Java에서 문자열이란 무엇입니까?

프로그래밍에서는 문자열이 매우 일반적으로 사용됩니다. Java의 문자열은 char 배열로 지원되는 일련의 문자를 나타내는 객체입니다. String 클래스는 Java에서 불변 이며 Comparable , SerializedCharSequence 인터페이스를 구현합니다. 이해를 돕기 위해 예를 살펴보겠습니다.
String str = "string"
여기서 str은 s, t, r, i, n 및 g인 6개 문자의 시퀀스입니다.
문자 배열 인덱스 0 1 2 4 5
에스 아르 자형 N g
메모리 주소 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
이제 우리가 알고 있듯이 배열은 불변입니다. 즉, 초기화 후에는 변경할 수 없으므로 문자열도 불변입니다.

문자열 초기화 방법

문자열을 초기화하는 방법에는 두 가지가 있습니다.
  1. 문자열 리터럴
  2. 새로운 운영자

문자열 리터럴

위의 예에서는 문자열을 선언하는 가장 쉽고 직접적인 방법이 사용되었습니다. 컴파일러가 문자열 리터럴을 해석할 때마다 항상 String 개체로 변환됩니다.
String str = "string";

새로운 운영자

new 연산자를 사용하여 문자열을 초기화할 수도 있습니다.
String strNew = new String("using new operator");

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

산출

String str = 문자열 리터럴 String strNew = new 연산자 사용

문자열 대 StringBuilder 대 StringBuffer

우리는 이미 String 클래스가 무엇인지 논의했으므로 다른 두 클래스와 그 목적에 대해 논의하고 Java에 이미 String 클래스가 있는데 왜 이 두 클래스를 도입했는지에 대해 논의할 것입니다. 더 나은 방식으로 이해하려면 맨 위로 이동하여 String 클래스에 대한 개정판을 갖는 것이 더 좋습니다.

이유

String 클래스 객체는 불변이라는 것을 알고 있으므로 문자열을 변경해야 할 때마다 현재 객체는 변경되지 않지만 변경된 값은 항상 새로운 String 객체로 저장됩니다. 따라서 값을 계속해서 변경해야 하면 메모리도 소모됩니다. 이 점을 유지하면서 Java는 StringBuilderStringBuffer 클래스를 제공했습니다 . 이제 이 시나리오에서 이러한 기능이 어떻게 유용한지 살펴보겠습니다.

문자열 버퍼

String은 불변의 문자 시퀀스를 표현한 반면 StringBuffer변경 가능한 문자 시퀀스를 나타냅니다 . 대부분의 String 클래스 메소드와 몇 가지 자체 메소드를 사용하여 문자의 내용과 순서를 변경합니다. 해당 메서드는 여러 스레드에서 사용할 수 있도록 동기화되어 직렬 순서를 유지하므로 스레드로부터 안전 합니다 . Serialized , AppendableCharSequence 인터페이스를 구현합니다 .

통사론

StringBuffer str = new StringBuffer("Happy Java Programming");

스트링빌더

StringBuilder는 또한 변경 가능한 문자 시퀀스를 나타냅니다. StringBuffer 클래스와 호환되지만 스레드로부터 안전하지 않은 API를 제공합니다. 따라서 여러 스레드가 관련되지 않은 경우 StringBuilder 클래스를 사용하는 것이 더 낫습니다. 대부분의 경우 StringBuffer 클래스 보다 빠르기 때문입니다 . 이 클래스의 주요 메소드는 삽입 및 추가입니다. 또한 Serialized , AppendableCharSequence 인터페이스를 구현합니다.

통사론

StringBuilder str = new StringBuilder("Happy Java Programming");

문자열 연산

Java에서는 Concatenation , Comparing , Splitting , Finding Length , Replacing Strings 등과 같은 문자열 작업을 수행할 수 있습니다.

문자열 메소드

Java String 클래스는 문자열을 조작하거나 위에서 설명한 작업을 수행하기 위한 다양한 메서드를 제공합니다. 이러한 문자열 메서드 중 일부에 대해 아래 표를 살펴보겠습니다.
행동 양식 설명
Char charAt(int 인덱스) 제공된 인덱스의 char 값을 반환합니다.
문자열 연결(문자열 str) 지정된 문자열을 이 문자열의 끝에 결합하여 문자열을 반환합니다.
부울 포함(CharSequence s) 문자열에 지정된 char 값 시퀀스가 ​​포함되어 있으면 true를 반환합니다.
부울 contentEquals(CharSequence cs) 제공된 문자 시퀀스와 문자열을 일치시킵니다.
부울 contentEquals(StringBuffer sb) 제공된 문자열 버퍼와 문자열을 일치시킵니다.
부울 endWith(문자열 접미사) 문자열 끝을 제공된 접미사와 비교합니다.
부울은 같음(객체 anObject) 문자열을 제공된 객체와 일치시킵니다.
부울 =IgnoreCase(String anotherString) 이 방법은 대소문자 구분을 고려하지 않고 두 문자열을 비교합니다.
정적 문자열 형식(문자열 형식, 개체… args) 제공된 형식과 인수를 사용하여 형식화된 문자열을 반환합니다.
바이트 getBytes() 이 메서드는 문자열을 바이트 시퀀스로 인코딩하기 위해 플랫폼의 기본 문자 집합을 사용하며, 그런 다음 새 바이트 배열에 저장됩니다.
무효 getChars(int 시작, int end, char[] dst, int dstBegin) 문자열의 문자를 대상 문자 배열로 복사합니다.
정수 해시코드() 문자열의 해시 코드를 반환합니다.
int indexOf(int ch) 문자열에서 처음 나타나는 지정된 문자에 대한 인덱스를 반환합니다.
int indexOf(int ch, int fromIndex) 이 문자열에 제공된 인덱스에서 처음 시작하여 지정된 문자에 대한 인덱스를 반환합니다.
int indexOf(문자열 str) 문자열에서 제공된 하위 문자열을 검색하고 첫 번째 항목의 인덱스를 반환합니다.
int indexOf(문자열 str, int fromIndex) 주어진 인덱스에서 문자열에 제공된 하위 문자열 검색을 시작하고 처음 나타나는 인덱스를 반환합니다.
문자열 인턴() 이 메소드는 문자열의 표준 표현을 반환합니다.
int lastIndexOf(int ch) 이 메서드는 문자열에서 제공된 문자를 검색하고 마지막으로 나타나는 인덱스를 반환합니다.
int lastIndexOf(int ch, int fromIndex) 이 메소드는 문자열에서 제공된 문자에 대해 지정된 인덱스에서 역방향으로 검색하고 마지막으로 나타나는 인덱스를 반환합니다.
int lastIndexOf(문자열 str) 이 메서드는 문자열에서 제공된 하위 문자열을 검색하고 마지막으로 나타나는 인덱스를 반환합니다.
int lastIndexOf(문자열 str, int fromIndex) 이 메소드는 문자열에서 제공된 하위 문자열에 대해 지정된 인덱스에서 역방향으로 검색하고 마지막으로 나타나는 인덱스를 반환합니다.
정수 길이() 이 메소드는 문자열의 길이를 반환합니다.
부울 일치(문자열 정규식) 문자열을 제공된 정규식과 일치시켜 true 또는 false를 반환합니다.
문자열 대체(char oldValue, char newValue) 이 메서드는 제공된 모든 oldValue를 문자열의 newValue로 바꾼 후 문자열을 반환합니다.
문자열[] 분할(문자열 정규식) 이 방법은 문자열에 제공된 정규식에 따라 모든 일치 항목을 찾아 일치 항목 주위로 분할합니다.
부울 startWith(문자열 접두사) 제공된 접두사로 시작하는 문자열을 테스트하여 true 또는 false를 반환합니다.
문자열 하위 문자열(int startIndex) 이 메소드는 이 문자열의 하위 문자열인 문자열을 반환합니다.
문자열 toLowerCase() 기본 로케일의 규칙을 사용하여 문자열의 모든 문자를 소문자로 변환합니다.
문자열 다듬기() 이 메서드는 문자열에서 모든 선행 및 후행 공백을 제거하고 이를 반환합니다.
정적 문자열 값(문자 c) char 인수의 문자열 표현을 반환합니다.
이제 몇 가지 예를 통해 이를 사용하는 방법을 살펴보겠습니다.

import java.io.*;
import java.lang.*;

class JavaStringsExample {
  public static void main(String[] args) {

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

산출

문자열: 안녕하세요! 월드 길이: 12 첫 번째 문자열: Java 두 번째 문자열: 프로그래밍 결합된 문자열: Java 프로그래밍 문자열 jpf와 jps가 같음: true 문자열 jpf와 jpt가 같음: false 대문자 jpf: JAVA PROGRAMMING jpf에서 g를 v로 바꾸기: java provramminv

결론

이제 Java에서 문자열이 무엇인지, 해당 클래스가 무엇인지, 그리고 다양한 메소드를 구현하는 방법을 이해하셨기를 바랍니다. 자유롭게 연습하고 도움이 더 필요할 때마다 다시 방문하세요. 즐거운 학습!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION