【发布时间】:2015-02-22 03:17:21
【问题描述】:
当我在构造函数中使用 StringBuffer/StringBuilder 创建一个新对象时,似乎我需要创建一个临时变量并将其传递给已初始化的类变量。也就是说,当我创建一个新实例时,我在构造函数中对 sNumber(下面的示例)所做的更改不会影响对象变量的值——除非我使用临时变量。例如:
public class Some_class {
public static class algorithm{
String sNumber = "";
algorithm(String num){
String temp = new StringBuilder(num).reverse().toString();
sNumber = temp;
//the below expression does not work:
//sNumber = new StringBuilder(num).reverse().toString();
}
我假设由于我将新的 StringBuilder/StringBuffer 对象命名为相同的名称,它会覆盖先前初始化的 sNumber 变量的值——但事实并非如此。有没有合适的方法来做到这一点?
【问题讨论】:
-
您注释掉的代码绝对可以正常工作。请展示一个简短但完整的程序来说明问题 - 我强烈怀疑在尝试这样做时,您会发现它不再是问题(例如您之前误诊)或者您在其他地方发现了问题。
-
你真的说过
String sNumber = new StringBuilder(num).reverse().toString();吗? -
你们都是对的,尤其是@ajb。在我的工作区中,我写了
String sNumber = new StringBuilder(num).reverse().toString();,但不知道为什么它不起作用。刚来的时候,写的对,还以为是错的。
标签: java class constructor scope stringbuffer