2017-03-09 3 views
0

char의 모든 하위 레벨 언어 크기에서 1 바이트입니다. 그래서 왜 자바는 char 타입을위한 2 바이트 크기를 지원합니다. 그것은 쉬울 수도 있지만 저는 자바에서 매우 새로 워서 여러분에게 지원을 요청하는 이유입니다.문자의 크기가 java에서 2 바이트 인 이유는 무엇입니까?

감사 자바 '문자'타입

+0

유니 코드를 사용하면 사실상 모든 단일 문자 (모든 언어로 존재하는)를 인코딩 할 수 있기 때문에 –

+0

문자의 크기는 사용하는 인코딩 형식에 따라 다릅니다. 일부 형식은 2 바이트 이상을 사용합니다. 1 바이트 만 사용하면 실제로는 이전 ASCII로 제한됩니다. 새로운 체계는 더 많은 문자와 더욱 중요한 언어를 지원합니다. – Aaron

+0

C++에는 여러 문자 데이터 유형이 있으며 그 중 하나만 "적어도 8 비트"로 정의됩니다. 귀하의 주장은 단순히 부정확합니다. – v010dya

답변

2

+4

글쎄, * 길이가 2 바이트였습니다. 그렇다면 그들은 충분하지 않다는 것을 깨달았고 [더 복잡해졌습니다] (http://stackoverflow.com/questions/5290182/how-many-bytes-does-one-unicode-character-take). – Kayaman

+0

예, UNICODE 문자가 맞지만 Java 프로그램의 호환성을 유지하기 위해 'char'데이터 유형은 16 비트 길이로 유지됩니다. https://docs.oracle.com/javase/tutorial/i18n/text/unicode.html – Luci

0

문자가 16 비트 인 데이터 구조 인 두 바이트 길이 인 유니 코드 문자를 나타낸다. 따라서 2 바이트 (각각 8 비트)는 16 비트입니다.

+1

예,하지만 그 이유는 그 이유를 알고 싶어합니다. 다른 언어에서 문자는 1 바이트 길이입니다 (음 ... 일반적으로 유니 코드가 ascii로 변함에 따라 문자가 변경 될 수 있습니다). Luci의 대답을 참조하십시오. – nasukkin

+1

'char'는 자바에서 항상 16 비트 길이의 프리미티브입니다.'int'와 마찬가지로 32 비트입니다. 다른 옵션이 없기 때문에 "기본적으로"아닙니다. 게다가,'char'는 숫자 프리미티브이고'int'와 같은 방식으로 "데이터 구조"입니다. –

+0

나는 당신을 달래기 위해 영어 사용을 정정했다. 하지만 char이 데이터 구조라는 사실에 입각하여 int와 비슷합니다. – JahKnows

관련 문제