2017-11-22 5 views
0

문자열 데이터 형식이 목록을 사용하여 문자를 저장하는 경우 궁금한가요? 그렇다면 목록 구현 유형은 무엇입니까?문자열이 char을 저장하기 위해 목록을 사용합니까?

String은 변경 불가능한 것 외에도 목록과 같은 요소와 인덱스 위치를 가지고있어서 String이 실제로 목록 데이터 구조인지 궁금합니다.

+1

많은 언어로 실제로 문자의 * 배열 *이라고 생각합니다. – Paedolos

답변

0

대부분의 최신 프로그래밍 언어에서 문자열은 배열을 둘러싼 래퍼입니다. 예를 들어, .NET에서 지원 스토어는 16 비트 정수의 배열이며, 각각은 단일 UTF-16 코드 포인트를 보유합니다. 지원 스토어가 무엇이든 관계없이 멤버 함수는 인덱싱 등을 제공합니다.

C에서는 문자열 유형조차 없습니다. 우리가 문자열로 부르는 것은 실제로 문자들의 배열입니다. 이러한 배열의 형식에 대한 특정 규칙 (예 : null 바이트, \0, 문자열 종료) 및 해당 배열에서 문자열 인 것처럼 작동하는 "문자열 함수"가 있습니다.

긴 문자열을보다 효율적으로 조작하려면 ropes을 사용하는 문자열 처리 라이브러리가 있습니다.

모든 언어가 문자열을 변경할 수 없다고 지정하는 것은 아닙니다. 일부 언어에서는 문자열 내의 개별 문자를 수정하고 실제로 새 문자열 객체를 만들지 않고 다른 작업을 수행 할 수 있습니다.

+0

배열은 String 구현에 논리적으로 적합하다고 생각합니다. 즉, 문자열 즉 Java를 선언하면 배후에서 String length의 배열을 요소마다 각 문자로 채 웁니까? 내가 아는 몇 언어에서 문자열은 변경되지 않습니다. – chappie

+0

@chappie http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/String.java#String에 따르면, Java'String' 클래스는 값을 보관 유지하는'char'의 배열 –