Java에서 문자열이란 무엇입니까?
프로그래밍에서는 문자열이 매우 일반적으로 사용됩니다. Java의 문자열은 char 배열로 지원되는 일련의 문자를 나타내는 객체입니다. String 클래스는 Java에서 불변 이며 Comparable , Serialized 및 CharSequence 인터페이스를 구현합니다. 이해를 돕기 위해 예를 살펴보겠습니다.String str = "string"
여기서 str은 s, t, r, i, n 및 g인 6개 문자의 시퀀스입니다.
문자 배열 인덱스 | 0 | 1 | 2 | 삼 | 4 | 5 |
---|---|---|---|---|---|---|
값 | 에스 | 티 | 아르 자형 | 나 | N | g |
메모리 주소 | 0x12824 | 0x12825 | 0x12826 | 0x12827 | 0x12828 | 0x12829 |
문자열 초기화 방법
문자열을 초기화하는 방법에는 두 가지가 있습니다.- 문자열 리터럴
- 새로운 운영자
문자열 리터럴
위의 예에서는 문자열을 선언하는 가장 쉽고 직접적인 방법이 사용되었습니다. 컴파일러가 문자열 리터럴을 해석할 때마다 항상 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는 StringBuilder 및 StringBuffer 클래스를 제공했습니다 . 이제 이 시나리오에서 이러한 기능이 어떻게 유용한지 살펴보겠습니다.문자열 버퍼
String은 불변의 문자 시퀀스를 표현한 반면 StringBuffer 는 변경 가능한 문자 시퀀스를 나타냅니다 . 대부분의 String 클래스 메소드와 몇 가지 자체 메소드를 사용하여 문자의 내용과 순서를 변경합니다. 해당 메서드는 여러 스레드에서 사용할 수 있도록 동기화되어 직렬 순서를 유지하므로 스레드로부터 안전 합니다 . Serialized , Appendable 및 CharSequence 인터페이스를 구현합니다 .통사론
StringBuffer str = new StringBuffer("Happy Java Programming");
스트링빌더
StringBuilder는 또한 변경 가능한 문자 시퀀스를 나타냅니다. StringBuffer 클래스와 호환되지만 스레드로부터 안전하지 않은 API를 제공합니다. 따라서 여러 스레드가 관련되지 않은 경우 StringBuilder 클래스를 사용하는 것이 더 낫습니다. 대부분의 경우 StringBuffer 클래스 보다 빠르기 때문입니다 . 이 클래스의 주요 메소드는 삽입 및 추가입니다. 또한 Serialized , Appendable 및 CharSequence 인터페이스를 구현합니다.통사론
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
GO TO FULL VERSION