![](/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.