2017-04-03 8 views
1

文字列 "a"とChar 'a'のサイズに違いはありますか? 1文字または数字を保存する必要がある場合は、Charを使用する必要がありますか?文字列 "a"とChar 'a'の間にSIZEに違いはありますか?

+0

これらは完全に異なっています。偶然同じ値を印刷するオブジェクト... –

+0

いつ私はそれらを使用すべきですか、それらの主な違いは何ですか? – mangaluli

+0

プリミティブ 'char'(またはオブジェクトが必要な場合は' Char')は、その値が1文字のみであることを保証します。 –

答えて

3

注3例

文字列「」
文字「」
文字これらの、文字の「」

は「」(スペースの最小量を取り上げる実際にあります2バイト)、Char 'a'とString "a"は両方ともオブジェクトであるため、Objectに関連付けられたメモリオーバーヘッドのため、どちらもほぼ同じサイズになります

+1

@マイケル良い点。一定 – ControlAltDel

0

一文字のStringと一文字のchar間にサイズの差がある(Stringのバッキングchar配列を参照)がありません。現在、UTF-16エンコーディングごとに2バイト必要ですが、7月にJava 9がリリースされるとUTF-16以外の文字は1バイトしか必要としません。

Stringは明らかにプリミティブより多くのメモリを使いますが、早すぎて最適化しているようです。

0

ここでは漠然としたことが起こっていきましょう。私はかつて一度String[]を使用して、char[]を使用して、それをプロファイリングし、一度Character[]を使用して

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'; 
     } 
    } 
} 

:私は億の文字または文字列の配列を作成し、次のプログラムを作成しました。

使用ヒープ領域の量:

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

だから、char(私のJVM上の)Characterの大きさに匹敵する1つの文字String、の大きさの約60%です。

関連する問題