2015-02-05 2 views
0

Java에서 String과 동일한 char 배열이 사용됩니까?Java에서 String과 동일한 char 배열이 사용됩니까?

Q3 :

나는이를 보았다. String에 length() 메서드가있는 이유는 무엇입니까?

String의 백업 데이터 구조는 char 배열입니다. 모든 어플리케이션에 필요하지 않은 필드를 정의 할 필요가 없습니다. C와 달리 문자 배열은 Java에서 String이 아닙니다.

(source)

그러나 그것은 명확하게 설명하지 않습니다.

+3

_Unlike C에 대해 명확하지 않은 점은 문자 배열이 Java._의 String이 아닙니까? –

답변

5

An array of characters is not a String 하나의 뚜렷한 이유로 배열은 변경 가능하지만 String은 명시 적으로 없습니다. String 배열 백킹이 널 종료되지 않는 경우도 있습니다.

가장 확실하게 backed by a char[]이지만 두 개체가 동일하다는 의미는 아닙니다.

+0

고마워 .. 지금 알았어. – BufBills

0

그들은 절대적으로 이 아닙니다.입니다.

Java 문자열의 데이터 유형이 String입니다. 그리고 char의 배열은 "chars의 배열"이라는 데이터 타입을 가지고있다.

마코토 (Makoto)와 마찬가지로 String은 변경할 수 없지만 배열은 그렇지 않습니다. 그래서 우리는 일반적으로 StringBuilder를 사용하여 String을 생성합니다.

+1

당신은 나를 잡습니다! :) 고정! –

+0

StringBuilder? 대부분의 경우 문자열 형식을 사용하는 것이 합리적이지 않은 경우를 제외하고는 문자열 리터럴을 사용합니다. – Makoto

4

유형 java.lang.String은 표준화 된 API를 제공하며 기존 String 객체의 값을 변경할 수 없다는 것을 보장합니다. 일명 불변입니다. 을 알 필요가 없습니다. String 클래스가 실제 문자열 값을 저장하는 방법 (실제로 실제로 구현 된 방법에 다양한 변화가있었습니다. 실제로는 후드 아래에 char []가 있습니다.) 하나만 구현하면(String 클래스의 가시적 인 기능)을 변경하지 않고 다른 것으로 바꿀 수 있습니다.

char [] 배열은 저급 기본 데이터 구조이지만 배열의 모든 인덱스 값은 언제든지 변경할 수 있습니다. char []에서 제공하는 특수 API도 없습니다 (예 : subString-method 등 없음). 문자 배열은 단지 원시 스토리지 공간을 제공하며 매우 적은 의미가 적용됩니다.

둘 다 문자 시퀀스를 나타낼 수 있다는 사실 외에도 동일한 목적을 가지고 있지 않으며 확실하게 교환 할 수 없거나 같은입니다.

관련 문제