0
class MyStringBuffer {
    //TODO explain: why you would need these data members.
    private char[] chars; //character storage.
    private int length;   //number of characters used    

public String toString(){
        //TODO

        //Hint: just construct a new String from the ‘chars’ data member
        //and return this new String – See API online for how create
        //new String from char[]

これはコードの一部にすぎません。すべてを掲載するつもりはありません。私はこれに集中し、完全に理解したら次に進みます。

String1) 「chars」データメンバーから新しいものを構築すると彼が言ったとき、彼はどういう意味ですか? 彼が私に何をしたいのか、私は混乱しています。私は何かをすることになっていchar charAt(int index)ますか?またはこのようなもの:StringBuffer sb = new StringBuffer("test");

2) Java では、construct と create は同じ意味ですか?

4

4 に答える 4

2

'chars'データメンバーから新しい文字列を作成すると彼が言ったとき、彼はどういう意味ですか?彼が私に何をしてほしいのか、私は混乱しています。char charAt(int index)で何かをすることになっていますか?または次のようなもの:StringBuffer sb = new StringBuffer( "test");?

それらのいずれかが文字列を作成しますか?(ヒント:いいえ)

Javaで特定のクラスのインスタンスをどのように作成しますか?(ヒント:メモを確認してくださいnew。ヒント2:クラスのjavadocsを確認してくださいjava.lang.String。)

構築と作成はJavaで同じことを意味しますか?

Javaオブジェクトはコンストラクターによって作成されるため、「construct」と「create」を同じ意味で使用するのが妥当です。

(技術的には、まったく同じことを意味するわけではありません。オブジェクトは、そのメモリを割り当ててクラスコンストラクタを呼び出すことによって作成されます。したがって、衒学者の場合、構築はオブジェクトを作成するプロセスの一部です。ただし、オブジェクトを作成する必要はありません。衒学者。)

于 2010-10-16T09:56:32.463 に答える
1

1)から文字列を作成する簡単な方法chars

String result = new String(chars, 0, length);

メンバーが存在するということは、の一部の要素が使用されていない可能性があることを意味するString(char[])ため、コンストラクターだけを使用することはおそらくできないことに注意してください。使用する要素を指定しないと、文字列の最後に余分な文字(NUL、ガベージなど)が追加される可能性があります。lengthchars

2)正確ではありません。コンストラクターが呼び出されたときにオブジェクトが作成されますが(オブジェクト自体のメモリが割り当てられます)、その時点では、それは単なるメモリの塊です。コンストラクターが戻るまで、オブジェクトは完全には構築されません(読み取り:クラスの不変条件は必ずしも保持されない場合があります)。つまり、この2つの違いはコンストラクターにのみ適用されるため、「作成」と「構築」をほぼ同じ意味で使用するのが一般的です。

于 2010-10-16T09:52:06.987 に答える
1

文字をどこかに保存する必要があるため、文字の配列が必要です。それらを に格納することもできますが、 の存在理由が よりも効率的であるString必要はほとんどありません(通常、より効率的なを使用して文字列を作成し、次に を使用して実際のオブジェクトを取得します)。StringBufferStringStringBuffer.toString()String

長さは、 の長さを指定するために使用されますStringBuffer。文字配列の長さだけを使用できると思うかもしれませんが、実際には、のサイズを縮小するときにStringBuffer、より小さな配列を再割り当てしない方が効率的です。

このStringスキームに必要なコンストラクターはString (char[] value, int offset, int count)、ゼロのオフセットと のカウントを使用しlengthます。charこれにより、配列の目的のサブセットのみを使用できます。

于 2010-10-16T09:45:26.533 に答える
0

彼が言うように、API を見てください。ここには、文字の配列を取る String コンストラクターがあります: http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String .html#String%28char[]%29 .

于 2010-10-16T09:17:50.360 に答える