>  기사  >  Java  >  Java 문자열에 대한 고급 튜토리얼

Java 문자열에 대한 고급 튜토리얼

巴扎黑
巴扎黑원래의
2017-08-09 17:58:101375검색

아래 편집기는 고급 Java 문자열에 대한 기사(반드시 읽어야 할 기사)를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 에디터를 따라가서 함께 살펴볼까요

Foreword

문자열 연산에 가장 일반적으로 사용되는 세 가지 클래스, 즉 String, StringBuilder 및 StringBuffer가 있습니다. 이 세 가지 클래스에 대해서는 아래에서 자세히 설명합니다.. .. ..

String

String 클래스는 문자열을 나타내는 가장 기본적인 클래스이기도 합니다. 여기서는 자세히 소개하지 않겠습니다.

new String(String str)new String(StringBuilder str)

new String(StringBuffer str)

new String(byte[] bys,String charsetName) 지정된 charset 바이트 하위 배열을 사용하여 지정된 것을 디코딩합니다. , 새 문자열을 구성합니다.

공통 메소드

str charAt(int index) 지정된 인덱스의 문자를 반환합니다.String concat(String str) 지정된 문자열 str을 이 문자열의 끝에 연결하고 연결이 완료된 후의 문자를 반환합니다. 따라서 이 문자열에 지정된 char 값 시퀀스가 ​​포함되어 있는지 확인하려면 boolean contain(CharSequence s)을 적용해야 합니다. 여기서 CharSequence는 인터페이스이며 해당 하위 클래스를 매개 변수(String, StringBuffer)로 직접 사용할 수 있습니다. , StringBuild)

static String copyValueOf(char[] c) 문자 배열을 문자열로 변환하고

static String copyValueOf(char[] c,int off,int count) 가로채는 문자 배열을 문자열로 변환하고 반환합니다. off는 The 가로채기를 시작하는 첨자, count는 가로채기 횟수입니다

boolean endWith(String s)는 문자열이 s

boolean equals(Object o)로 끝나는지 확인합니다. 비교를 위해

int indexOf(char c)는 문자 c를 반환합니다. 문자열에서 처음 나타나는 인덱스

int indexOf(char c,int fromIndex) 지정된 인덱스에서 검색을 시작하고 처음 나타나는 인덱스를 찾습니다.

int indexOf(String str) 지정된 하위 문자열을 여기에 반환합니다. 문자열에서 처음으로 나타납니다.

int indexOf(String str,int fromIndex) 지정된 인덱스부터 시작하여 이 문자열에서 지정된 하위 문자열이 처음 나타나는 인덱스를 반환합니다.

boolean isEmpty()

int length()

boolean match(String regex) 정규식 일치 여부

trim() 앞뒤 공백을 무시하고 문자열 복사본을 반환합니다.

String substring(int BeginIndex)는 이 문자열의 하위 문자열인 새 문자열을 반환합니다.

String substring(int BeginIndex, int endIndex)는 이 문자열의 하위 문자열인 새 문자열을 반환합니다.

String toUpperCase() 기본 로케일 규칙을 사용하여 이 문자열의 모든 문자를 대문자로 변환합니다.

String[] Split(String regex) 주어진 정규 표현식과 일치하는 항목을 기준으로 이 문자열을 분할합니다.

String[] Split(String regex, intlimit) 주어진 정규식과 일치하는 것을 기준으로 이 문자열을 분할합니다.

char[] toCharArray() 이 문자열을 새 문자 배열로 변환합니다.

byte[] getBytes(Charset charset)는 주어진 charset을 사용하여 이 문자열을 바이트 시퀀스로 인코딩하고 결과를 새로운 바이트 배열에 저장합니다.

참고

new String(byte[] bys Above , String charsetName ) 이 구성 방법은 문자열의 인코딩 세트를 변경할 수 있습니다(byte[] getBytes(Charset charset)와 함께 사용). 코드는 다음과 같습니다.

/*
 * InputStreamReader实现了将字节流FileInputStream转换为字符流,然后使用转换来的字节流创建高效流,从而实现高效的读写
 */

/*
 * 编码集(我的eclipse编辑器默认的是utf-8
 * 下面将中文字符串的编码集变为GBK写入a.txt文件,因为a.txt默认的是utf-8的因此这里在文件中显示的是乱码
 * 然后我们读出来的还是GBK的,因为我们写入的是GBK编码集的,但是我的eclipse是utf-8的编码集,因此在控制台上输出的还是乱码
 * new String(byte[] bys,String
 * charsetName)使用这个构造方法将byte数组改变编码集并且转换为utf-8格式的,那么这次在控制台上输出的就不乱码了
 */

// 将GBK格式的中文写入a.txt文件
File file = new File("src/a.txt");
FileOutputStream fileOutputStream = new FileOutputStream(file);
String str = "中";
byte[] by = str.getBytes("GBK"); // 将字符串改为GBK编码集
fileOutputStream.write(by);
fileOutputStream.close();

//从a.txt文件中读取中文
FileInputStream fileInputStream = new FileInputStream(file);
int len;
byte[] bys = new byte[4];
while ((len = fileInputStream.read(bys)) != -1) {
 System.out.println(new String(bys, "GBK"));
}
fileInputStream.close();

StringBuffer


스레드로부터 안전한 변경 가능한 문자 시퀀스입니다. String과 유사하지만 수정할 수 없는 문자열 버퍼입니다. 물론 가장 중요한 점은 스레드 안전성입니다. 멀티스레딩에서 사용하기에 적합한 동기화를 달성하기 위해 스레드 제어 블록이 일부 작업(추가, 삽입 등)에 사용된다는 것을 소스 코드에서 볼 수 있습니다. 코드는 다음과 같습니다:

 public synchronized StringBuffer append(Object obj) {
super.append(String.valueOf(obj));
return this;
}

public synchronized StringBuffer append(String str) {
super.append(str);
return this;
}

public synchronized StringBuffer delete(int start, int end) {
super.delete(start, end);
return this;
}

/**
 * @throws StringIndexOutOfBoundsException {@inheritDoc}
 * @since 1.2
 */
public synchronized StringBuffer deleteCharAt(int index) {
super.deleteCharAt(index);
return this;
}

Construction


new StringBuffer(StringBuilder str)

new StringBuffer(String str)일반적으로 사용되는 메서드


StringBufferappend(str)는 type str 이 문자열의 끝에 추가합니다 (String, char, char[], int, double, float, long, StringBuffer, StringBuilder)

StringBuffer insert(int offest, str) 이 시퀀스에 지정된 유형의 str을 삽입합니다. offset 삽입 시작 위치를 나타내는 인덱스 유형은 String, char, char[], int, double, float, long, StringBuffer, StringBuilderString delete(int fromIndex, int endIndex) 는 이 순서대로 문자열을 제거하고 반환 새 버퍼 문자열

StringBuffer reverse() 역방향 문자열

String substring(int start) 현재 이 문자 시퀀스에 포함된 문자 하위 시퀀스를 포함하는 새 문자열을 반환합니다.

String substring(int start, int end) 현재 이 시퀀스에 포함된 문자의 하위 시퀀스를 포함하는 새 문자열을 반환합니다.

StringBuffer deleteCharAt(int index) 이 시퀀스의 지정된 위치에서 문자를 제거합니다.

int length() length

String toString() 이 시퀀스에 있는 데이터의 문자열 표현을 반환합니다.

StringBuilder

이 클래스는 대부분의 구현에서 StringBuffer보다 빠르므로 우선적으로 사용하는 것이 좋습니다. 하지만 이 클래스는 스레드로부터 안전하지 않으며 단일 스레드에만 적합합니다. 멀티스레딩을 사용하는 경우 StringBuffer를 사용하는 것이 좋습니다. 물론 이를 사용할 수도 있지만 동기화를 직접 구현해야 합니다

구성 방법

new StringBuilder(String str)

공통 방법

이 클래스의 일반적인 방법은 StringBuffer의 방법과 동일합니다. 여기서는 하나씩 나열하지 않겠습니다. 위 내용을 참고해서 사용하세요

위 내용은 Java 문자열에 대한 고급 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.