1. 자바 내장 끈에 대한 내장 지원;
소위 내장 지원은 문자열 유형이 C와 같은 숯 포인터를 사용하여 구현되지 않음을 의미하며 Java의 String 인코딩은 유니 코드 인코딩 표준을 준수합니다. 즉, C ++ to와 같은 문자열 및 WSTRING 클래스를 사용하여 구현할 필요가 없습니다. C 언어 및 유니 코드 표준과 호환됩니다. Java는 내부적으로 문자열 클래스를 통해 문자열 유형을 지원합니다.
즉, 문자열 객체와 동일한 메소드를 직접 호출 할 수 있습니다.
// "ABC"에서 문자열 객체의 모든 메소드를 직접 호출 할 수 있습니다.
int length = "abc".length ();
게다가
문자열 ABC = 새 문자열 ( "ABC");
int 길이 = abc.length ();
2. Java의 문자열 값은 일정합니다 (일정)
우리가 의미하는 것은 문자열 유형이 생성 된 후 값을 문자열의 멤버 메소드에서 변경할 수 없다는 것입니다 String ( "def") Java Virtual Machine에 저장된 상수 풀의 "ABC"및 "DEF".
다음 코드의 "ABC"는 상수 풀에 저장되므로 변수 A와 AB를 가리키는 주소는 상수 풀에서 동일한 "ABC"입니다.
코드 사본은 다음과 같습니다.
공개 클래스 StringTest {
public static void main (String [] args) {
문자열 a = "abc";
문자열 ab = "abc";
문자열 ABC = 새 문자열 ( "ABC");
System.out.println (ab == a);
System.out.println (a == ABC);
}
}
/*프로그램 출력 :
* 진실
* 거짓
* */
그렇다면 동적으로 생성되고 가변 문자열이 어떻게 구현됩니까? Java는이 요구 사항을 달성하기 위해 StringBuffer 및 StringBuilder 클래스를 제공합니다 StringBuilder 및 StringBuffer가 구현됩니까? 문자열을 통해 문자열을 저장합니다. 다음은 JDK와 함께 제공되는 소스 코드에서 찾은 스 니펫입니다.
3. 문자열의 인코딩 문제.
여기서 이해할 두 가지 질문 : 소스 파일에서 문자열 인코딩을 처리하는 방법은 무엇입니까? Java 가상 컴퓨터에서 클래스 파일 또는 코드가 실행될 때 문자열이 어떤 인코딩을 사용합니까?
첫 번째 문제는 소스 코드에서 인코딩하는 문자열이 IDE 또는 텍스트 편집기에 따라 다르다는 것입니다. 예를 들어 다음 코드는 GBK 인코딩 형식으로 편집 한 다음 UTF-8 및 GBK 디코딩을 사용하여 열립니다.
// GBK 인코딩 형식, GBK 형식으로 열립니다
// gbk 인코딩 형식, UTF-8 형식으로 열려 있는데,이 시점에서 시스템의 기본 인코딩 형식이 GBK가 아닌 경우, 컴파일 동안 "-Encoding GBK"매개 변수 옵션 값을 추가해야합니다.
그렇다면 이러한 종류의 소스 코드 인코딩 문제를 처리하는 방법은 무엇입니까? 답은 Compiler javac의 매개 변수 옵션 인코딩에 지정됩니다.이 매개 변수의 기본값은 시스템의 기본 인코딩과 일치합니다. Windows의 기본 인코딩은 일반적으로 GBK입니다 (이 값은 시스템을 통해 얻을 수 있습니다. Javac -Encoding UTF -8 컴파일을 사용하십시오.
Java 가상 시스템을 실행할 때 클래스 파일 또는 코드로 컴파일 할 때 문자열의 인코딩은 무엇입니까? Java 가상 머신의 소스 코드는 UTF-16 인코딩을 사용하여 어떻게 구현됩니까? 이는 컴파일러 Javac이 소스 코드 파일의 문자열 인코딩을 올바르게 이해하는 한 런타임 또는 클래스 바이트 코드 파일의 문자열이 소스 코드의 인코딩 형식과 무관하다는 것을 의미합니다. 여기서 우리는 Java의 기본 문자 또는 문자 클래스를 더 이해할 수 있습니다. '1'자바의 캐릭터 또는 한자의 길이는 16 비트입니다.
또한 문자열 유형에서 지정된 고정 문자 인코딩을 사용하여 기본 이진 표현 및 문자열을 변환합니다. 즉, GBK 인코딩, UTF-8 인코딩 또는 기타 인코딩 된 텍스트 파일 또는 입력 스트림 변환을 올바르게 읽을 수 있습니다. 메모리의 올바른 문자열로 들어갑니다.
예를 들어, 문자열 클래스에는 다음과 같은 방법이 있습니다.
public String (byte [] bytes, charset charset); 고정 된 문자 세트 인코딩 유형을 지정하고 해당 바이트 배열 (바이트 길이는 8 비트);
public byte [] getbytes (charset charset); 문자열을 바이트 배열, 즉 문자열의 이진 표현으로 변환합니다.
다음에주의를 기울여야하는 다른 멤버 방법이 있습니다.
Public Byte [] getBytes ();