2017-09-04 269 views
-2

我有以下字符串类型的全局变量。字符串类型的全局变量

static public String rev="hello" 

我可以阅读它没有任何问题从另一个类的对象。无论如何,我可以用另一个类的对象中的另一个字符串更新它吗?我知道Java字符串是不可变的。我试着使用StringBuilder的方式如下:

static public StringBuilder rev=new StringBuilder("hello"); 
    static public void setRev(StringBuilder s) 
    { 
    rev=rev.delete(0,rev.length()); 
    rev.append(s); 
    } 

从另一个类:

MainActivity.setRev(stringBuilderVar); 

但没有奏效。

+1

Java字符串值是不可变的。 StringBuilders不是。 –

+0

字符串是不可变的,但您可以将字符串_variable_重新分配给不同的字符串。但是你之前使用'rev'(说'someOtherVar = MainActivity.rev'),重新赋值'rev'不会改变你之前复制引用的地方。没有更多的信息,很难说正确的做事方式是什么。但我很确定'StringBuilder'是错误的解决方案。 – ajb

+0

将StringBuilder声明为静态可能是不可变性的原因?我声明为静态的原因是我可以从另一个类访问。 –

回答

1

对于静态和非静态字段,更新字段的语法是相同的。简单地使用一个赋值语句:

class Global { 
    public static String greeting; 
} 

public class Other { 
    public static void main(String[] args) { 
     String newGreeting = "hello"; 
     Global.greeting = newGreeting; 
    } 
} 

也就是说,一旦您的程序变大了,您可能会想使用非静态字段。

+0

以下不起作用:Global.greeting = anotherStringVar; –