私の意見は今日まで、"c"
のようなリテラルがString
というオブジェクトを作成するということでした。今日は、Javaが単一文字列のオブジェクトを作成していないと聞きました。これは正しいですか?そのリテラルをchar
として保存していますか?一文字の文字列
一文字の文字列
答えて
"c"
は、String
リテラルです。 String
を表すString
を表します。は、String
を表します。
リテラル(0文字のString
リテラル""
でさえありません)の1文字の特殊文字の処理はありません。
違う扱いがあると言った人は、間違っているかb。別のもの(例えば特別な扱いをしている図書館)について話しています。
"c"
は文字列を作成します。 'c'
は文字を作成します
いいえ間違いありません。 ""
でも、String
オブジェクトが作成されます。 ただし、'c'
と入力すると、String
オブジェクトではなく、charが取得されます。
Javaは、単一の文字列に対しても文字列のインスタンスを作成します。次のプリントjava.lang.String
:
public class Test{
public static void main(final String[] args){
System.out.println("c".getClass().getName());
}
}
'' "(二重引用符)は文字列と ''''(一重引用符)が文字の場合 – Woot4Moo
"c"
オブジェクトを作成しません。ただし、リテラルをソースコードのどこかに再度割り当てると、新しいオブジェクトは作成されませんが、作成された最初の文字列オブジェクトが参照されます。例えば
:
String s1 = "abc"; //creates the String object
String s2 = "abc"; //references the same object as s1
S1とS2の両方が同じオブジェクトが割り当てられ、そして==に働くだろう。
あなたがここで詳細を読むことができます:意図されたものをhttp://javatechniques.com/blog/string-equality-and-interning/たぶん
間違っています。 ==は、String.internを使用した場合にのみ機能します。 – Woot4Moo
@ Woot4Mooいいえ、そうです。リテラル文字列はデフォルトで使用できません。 – sfussenegger
@ Woot4Moo https://gist.github.com/1044768 – sfussenegger
は、ボンネットの下にflyweightsが作成されるということであった(これは、Javaで動作します知らんどのように、私は、この概念は、文字列のためにいくつかのレベルでemployeedされていることを前提とし)
これは、いくつかの操作、つまり、結果のStringがフードの下で同じchar []を使用する部分文字列(..)、subSequence(..)およびtrim()に当てはまります。私はこれがどのように文字列リテラルに影響するかはわかりません。 – sfussenegger
String
店舗文字char[]
として、最も可能性が高いので、"c"
はString
オブジェクト内new char[] { 'c' }
として表現されます。
String
クラスはfinal
であるため、char c
フィールドには1文字の文字列を格納するサブクラスは存在しません。
String
〜char
の自動ボクシング/アンボクシングの概念は文書化されていない限り、1文字の文字列が他のタイプと同様に格納されていると想定するのは安全です文字列の
プログラミングのほとんどのものと同様に、ソース - > java.lang.Stringを見てください。
すべての文字列はjava.lang.Stringのインスタンスです。特別な場合はありません。各java.lang.Stringにはchar []と、開始インデックスと終了インデックスを保持するいくつかの整数が含まれています。char []はStrignインスタンス間で共有されることに注意してください。たとえば、元のchar []が複製されていないかコピーされていないString.substring()が共有されていますが、開始/終了インデックスは更新されます。
聞きましたか?どこで聞いた? – bmargulies
これは、1文字の文字列を 'char'に自動ボクシング/アンボックするという興味深いコンセプトになります... – Nick
Java言語仕様のリテラルについての部分を読むように言った人に教えてください。文字リテラルと文字列リテラル:http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100960 –