2017-04-03 5 views
1

String "a"와 Char 'a'사이에 크기가 다른가요? 단일 문자 또는 숫자를 저장해야 할 때 Char를 사용해야합니까?문자열 "a"와 문자 'a'사이에 SIZE에 차이가 있습니까?

+0

이들은 완전히 다릅니다. 우연히 동일한 값을 인쇄하는 객체 ... –

+0

언제 사용해야합니까? 그리고 그것들 사이의 주요 차이점은 무엇입니까? – mangaluli

+0

원시적 인'char' (또는 객체를 원한다면'Char')는 그 값이 단일 문자 만이라는 것을 보장합니다. –

답변

3

주 삼가지 경우

문자열 "A"
문자 'A'
문자 이들의 'A'

, 문자 'A'공간의 최소 금액을 차지합니다 (실제로있다 2 바이트), Char 'a'와 String 'a'는 모두 객체이기 때문에 객체와 관련된 메모리 오버 헤드로 인해 둘 다 대략 같은 크기가됩니다.

+1

@Michael 좋은 지적입니다. 결정된 – ControlAltDel

0

(즉, String의 배면 char 배열을 참조하는) 문자 하나의 Stringchar 하나의 문자 사이의 크기 차이가 없다. 현재 UTF-16 인코딩 당 2 바이트가 필요하지만 7 월에 Java 9가 출시되면 UTF-16이 아닌 문자는 1 바이트 만 필요합니다.

String은 분명히 원시보다 더 많은 메모리를 사용하지만 중간에 최적화하는 것처럼 들립니다.

0

여기서 막연하게 과학적으로 진행되는 것을 시도해 봅시다.

public class NewClass { 
    private static final int SIZE = 100000000; 

    public static void main(String... args) 
    { 
     char[] a = new char[SIZE]; 

     for (int i = 0; i < SIZE; ++i) 
     { 
      a[i] = 'a'; 
     } 
    } 
} 

내가 한 번 한 번 String[]를 사용하여 한 번 Character[]를 사용하여, char[]를 사용하여 프로파일 : 나는 1 억 개 문자 나 문자열의 배열을 만들고 다음 프로그램을 만들었습니다.

중고 힙 공간의 양 :

char[]  : 267 million bytes 
String[] : 442 million bytes 
Character[] : 437 million bytes 

그래서 char은 (JVM 내에서)을 Character의 크기에 필적하는 1 개 문자 String의 크기의 약 60 %이다.