Bu, çoğunlukla saf bir meraktan (ve bir süre öldürme) oluşan bir sorudur. Ben somutluk uğruna özellikle Java hakkında soruyorum. Ben boş bir dize ile bir dize (herhangi bir dize) bitiştirmek eğer bellekte, ne olurJava'da boş bir dizeyi birleştirirken derleme ve çalışma zamanında ne olur?
, örneğin:
String s = "any old string";
s += "";
Ben sonra, s 'nin içindeki hala "herhangi bir eski dizesi" olacağını biliyor boş bir ASCII dizgisi bellekte bir ASCII boş olarak saklandığından (en azından Java'da, dizeler her zaman boşta sonlandırılmıştır). Ancak Java'nın (derleyici? VM), değişmeyeceğini bilmek için yeterli optimizasyon yapıp yapmadığını ve bu kodu bayt koduyla tamamen ya da derleme ve çalışma zamanlarında farklı bir şey yapıp yapmadığını bilmek merak ediyorum.
+1 - Serin greatjustice – Alex
için . teşekkür ederim! –
@mmyers: 1) yayımlanan bayt kodlarının (teoride) Java derleyicisine özgü olduğunu ve 2) JIT derleyicisinin (teoride) daha fazla optimize edebileceğini belirtmelisiniz. –