자바 의 문자열 형식 을 깊이 이해 합 니 다.

3774 단어 Java문자열 형식
1.자바 내 장 된 문자열 지원;내 장 된 지원 이란 C 언어 가 char 포인터 로 문자열 형식 을 만 들 지 않 아 도 되 고 자바 의 문자열 인 코딩 은 유 니 코드 인 코딩 기준 에 부합 되 는 것 입 니 다.이 는 C+처럼 string 과 wtring 류 를 사용 하여 C 언어 와 호 환 되 고 유 니 코드 표준 을 만 들 지 않 아 도 된다 는 뜻 입 니 다.자바 내 부 는 String 클래스 를 통 해 문자열 형식 을 지원 합 니 다.이것 은 문자열 상수 와 String 대상 을 직접 호출 할 수 있 음 을 의미 합 니 다.
//"abc"에서 String 대상 을 직접 호출 할 수 있 는 모든 방법 int length="abc".length();그리고 String abc=new String("abc");  int length=abc.length();
2.자바 의 문자열 값 은 constant(상수)입 니 다.
문자열 형식 은 생 성 이 끝 난 후에 그 값 을 바 꿀 수 없다 는 뜻 입 니 다.String 의 구성원 방법 에서 도 값 을 바 꿀 수 있 는 방법 인터페이스 가 없 음 을 알 수 있 습 니 다.또한"abc",new String("def")의"abc","def"는 자바 가상 컴퓨터 에 저 장 된 상수 풀 과 같 습 니 다.
다음 코드 의"abc"는 상수 탱크 에 저장 되 어 있 기 때문에 변수 a,ab 가 가리 키 는 주 소 는 모두 상수 탱크 의 같은"abc"입 니 다.

public class StringTest {
    public static void main(String[] args) {
        String a="abc";
        String ab="abc";
        String abc=new String("abc");
        System.out.println(ab==a);
        System.out.println(a==abc);
    }
}
/* :
 * true
 * false
 * */
그렇다면 동적 으로 생 성 되 고 가 변 적 인 문자열 은 어떻게 이 루어 집 니까?자바 에 서 는 StringBuffer 와 StringBuilder 류 를 제공 하여 이러한 수 요 를 실현 합 니 다.자바 의 문자열 연결 은"+"연산 자 를 사용 할 수 있 습 니 다.예 를 들 어"abc"+"def";이곳 의 내부 실현 도 StringBuilder 류 나 StringBuffer 류 를 사용 하여 실현 할 수 있 습 니 다.그렇다면 StringBuilder 와 StringBuffer 내 부 는 어떻게 이 루어 질 까?문자열 을 문자 배열 로 저장 합 니 다.다음은 JDK 가 첨부 한 소스 코드 에서 찾 은 세 션 입 니 다.StringBuffer 내부 에서 char 배열 로 문자열 을 저장 하 는 것 을 알 수 있 습 니 다.그 중에서 AbstractStringBuilder 는 StringBuffer 의 부모 클래스 입 니 다.

3.문자열 의 인 코딩 문제.원본 파일 의 문자열 인 코딩 을 어떻게 처리 합 니까?클 라 스 파일 이나 코드 로 컴 파일 되 어 자바 가상 컴퓨터 에서 실 행 될 때 문자열 은 어떤 인 코딩 을 사용 합 니까?첫 번 째 문 제 는 원본 코드 의 문자열 인 코딩 은 IDE 나 텍스트 편집기 에 달 려 있다 는 것 이다.다음 코드 는 GBK 인 코딩 형식 으로 편집 한 다음 UTF-8 과 GBK 인 코딩 으로//GBK 인 코딩 형식 을 열 고 GBK 형식 으로 엽 니 다.

//GBK 인 코딩 형식,UTF-8 형식 으로 열기,난 장 판;이 때 시스템 의 기본 인 코딩 형식 이 GBK 가 아니라면 컴 파일 할 때 자바 c 에"-encoding GBK"인자 옵션 값 을 추가 해 야 합 니 다.

그렇다면 이런 소스 코드 인 코딩 문 제 를 어떻게 처리 합 니까?정 답 은 컴 파일 러 javac 의 매개 변수 옵션-encoding 에서 지정 합 니 다.기본 값 은 시스템 의 기본 인 코딩 과 일치 합 니 다.Windows 의 기본 인 코딩 은 일반적으로 GBK(System.getProperty(file.encoding)를 통 해 이 값 을 얻 을 수 있 습 니 다.시스템 의 기본 인 코딩 은 GBK 이지 만 원본 코드 는 UTF-8 인 코딩 을 사용 합 니 다.이 때 는 javac-encoding UTF-8 을 사용 하여 컴 파일 해 야 합 니 다.
"class 파일 로 컴 파일 되 거나 코드 가 자바 가상 컴퓨터 에서 실 행 될 때 문자열 은 어떤 인 코딩 을 사용 합 니까?"이 문제 의 이 해 는 우선 자바 의 String 형식 은 UTF-16 인 코딩 으로 이 루어 진 것 이다.즉,소스 코드 의 인 코딩 이 어떻든 자바 가상 컴퓨터 의 문자열 은 UTF-16 인 코딩 으로 이 루어 진 것 이다.이것 은 컴 파 일 러 javac 가 원본 파일 의 문자열 인 코딩 을 정확하게 이해 하기 만 하면 실행 할 때 나 class 바이트 파일 의 문자열 은 원본 파일 의 인 코딩 형식 에 독립 된 것 을 의미한다.여기 서 우 리 는 자바 의 char 기본 유형 이나 Character 류 를 이해 할 수 있 습 니 다.이 두 내부 의 인 코딩 은 자바 의 문자열 유형 과 마찬가지 로 모두 UTF-16 인 코딩 을 바탕 으로 이 루어 진 것 입 니 다.즉,'a','1'과 같은 문자 든 한자 가 자바 에서 의 길이 든 모두 16 자리 입 니 다.
또한 String 형식 에 도 지정 한 문자 인 코딩 을 통 해 바 텀 바 이 너 리 표시 와 문자열 사 이 를 전환 시 키 는 것 이 있 습 니 다.이 는 GBK 인 코딩,UTF-8 인 코딩 또는 다른 인 코딩 된 텍스트 파일 이나 다른 입력 흐름 을 정확하게 읽 어서 메모리 에 있 는 정확 한 문자열 로 바 꿀 수 있 음 을 의미 합 니 다.
예 를 들 어 String 류 에는 다음 과 같은 방법 이 있 습 니 다.Public String(byte[]bytes,Charset charset);문자 집합 인 코딩 형식 을 지정 하고 해당 하 는 byte 배열(byte 길이 8 비트)구조 문자열 을 지정 합 니 다.  public byte[] getBytes(Charset charset);문자 집합 인 코딩 형식 을 지정 하고 문자열 을 byte 배열,즉 문자열 의 바 이 너 리 표시 로 바 꿉 니 다.
그리고 String 의 또 다른 멤버 방법 을 주의해 야 합 니 다.
  public byte[] getBytes();이 방법 은 UTF-16 이 아 닌 플랫폼 의 기본 문자 집합 인 코딩 을 말 합 니 다.

좋은 웹페이지 즐겨찾기