質問
言語は特に問わないのですが、文字列の表示される仕組みについて知りたいです。
言語は問いませんが、以下はJavaScriptのコードをベースにした説明となります。
JavaScript
1 2var text = "Hello World"; 3 4var charCount = text.length; 5console.log(charCount); //11 6 7var i = 0; 8for (i; i < charCount; i++) { 9 console.log(text[i]); //文字列オブジェクトが内部で持つ配列からHello Worldが1文字ずつ取り出されて出力される 10} 11 12console.log(text); //Hello Worldと一回で表示される
上のコードを確認する限りでは、文字列オブジェクトは内部で1文字単位で保持する配列を持っているようです。
質問としましては、今回の例でいえば「Hello World」というまとまった文字列を出力する際には、
毎回、配列に格納されている文字を連結させてから表示させているのですか?
それとも、文字列オブジェクトの初期化時に1文字単位で配列に格納するのとは別に、まとまった文字列をプライベートプロパティーに格納していて、まとまった文字列を表示させる際には、後者のプライベートプロパティーの値を出力しているのですか?
他にも取り得る方法があるのでしょうか?
推測でも良いので回答頂けると非常に嬉しいです。よろしくお願いいたします。
追記
JavaScript
1var text = "Hello World"; 2text[0] = "M" 3console.log(text) //"Mellow World"にはならず、"Hello World"のまま 4 5var replacedText = text.replace("H", "M"); 6 7console.log(text); //Hello Worldのまま 8console.log(replacedText); //Mello Worldに置換された文字列
ちなみに、文字列オブジェクトはイミュータブルで、文字列に変更を加える場合は新しい文字列オブジェクトを生成して返すようです。