![](/img/trans.png)
[英]how to set default value for Boolean in java without using constructor
[英]Can I set the value of a String in Java without using a constructor?
How-Do /我可以在Java中設置String對象的值(不創建新的String對象)嗎?
String
上沒有“set”方法。 字符串在Java中是不可變的。 要更改String
變量的值,您需要為變量分配不同的字符串。 您無法更改現有字符串。
(不創建新的String對象)
分配不會創建新對象 - 它會復制引用。 請注意,即使你寫這樣的東西:
s = "hello";
每次運行時都不會創建新的字符串對象。 字符串對象將來自字符串池。
實際上在Java中無法做到這一點,默認情況下String對象是不可變的。
事實上,這就是為什么使用像"str1" + "str2"
這樣的"+"
連接運算符非常低效的原因之一,因為它所做的就是復制每個字符串以產生第三個字符串。
根據您的需要,您應該考慮使用StringBuilder
字符串是不可變的,因此您無法更改已創建字符串的值。
我偶然發現了這個問題,因為我必須在“封閉類型”中設置一個字符串 - 一個匿名類型。 但是我想在里面設置並在外面使用的所有變量都必須是最終的。
簡單的解決方案是使用StringBuilder - 它是一個可變的String。
String對象在Java中是不可變的,因此任何更改都會創建一個新的String對象。 如果要在不創建新對象的情況下更改對象等字符串,請使用StringBuilder。 作為獎勵,如果您了解字符串的最終長度,StringBuilder允許您預先分配額外的內存。
這取決於你對象的定義。 如果你的意思是參考,沒有。 始終創建引用。 如果你的意思是字符使用的內存,當然。
字符串被實習(如果可能),這意味着在任務中:
String s1 = "Hello";
String s2 = "Hello";
有2個引用(指向內存位置的指針),但Hello
只在內存中有1個位置。 這是Strings無法修改的原因之一。
當然,您可以通過反射訪問內部char數組。 但這樣做通常是個壞主意。 更多關於http://www.eclipsezone.com/eclipse/forums/t16714.html 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.