String "a"와 Char 'a'사이에 크기가 다른가요? 단일 문자 또는 숫자를 저장해야 할 때 Char를 사용해야합니까?문자열 "a"와 문자 'a'사이에 SIZE에 차이가 있습니까?
답변
주 삼가지 경우
는문자열 "A"
문자 'A'
문자 이들의 'A'
, 문자 'A'공간의 최소 금액을 차지합니다 (실제로있다 2 바이트), Char 'a'와 String 'a'는 모두 객체이기 때문에 객체와 관련된 메모리 오버 헤드로 인해 둘 다 대략 같은 크기가됩니다.
@Michael 좋은 지적입니다. 결정된 – ControlAltDel
(즉, String
의 배면 char
배열을 참조하는) 문자 하나의 String
및 char
하나의 문자 사이의 크기 차이가 없다. 현재 UTF-16 인코딩 당 2 바이트가 필요하지만 7 월에 Java 9가 출시되면 UTF-16이 아닌 문자는 1 바이트 만 필요합니다.
String
은 분명히 원시보다 더 많은 메모리를 사용하지만 중간에 최적화하는 것처럼 들립니다.
여기서 막연하게 과학적으로 진행되는 것을 시도해 봅시다.
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 %이다.
이들은 완전히 다릅니다. 우연히 동일한 값을 인쇄하는 객체 ... –
언제 사용해야합니까? 그리고 그것들 사이의 주요 차이점은 무엇입니까? – mangaluli
원시적 인'char' (또는 객체를 원한다면'Char')는 그 값이 단일 문자 만이라는 것을 보장합니다. –