如何在java中初始化String?

时间:2012-09-26 19:10:55

标签: java string

我已经开始使用setter而不是将参数放入默认构造函数中,因为它可以帮助我更好地组织代码

问题是,我正在做的项目中唯一的变量是String,我不确定是否应该在声明中初始化它(作为全局变量?),在setter实例方法中或是否初始化它在类构造函数中。

我想知道这个设置是否存在任何问题,是否在使用setter之前是否初始化了实例:

class MyClass{

  private String myString; 

  public MyClass(){

  }
  public void setStuff(String s){ 

    this.myString=s;
  }
}

5 个答案:

答案 0 :(得分:7)

为什么不将其初始化为:

private String myString = "My string";

最简单的方法。

答案 1 :(得分:3)

嗯,这实际上取决于变量是什么以及它将要做什么。

这是一个常数吗?如果是这样,你可以像这样初始化它:

private final String myString = "foo";

它是否是一个实例变量?如果是这样,你应该这样做:

public MyClass(string myString)
{
    this.myString = myString;
}

如果它是某种可选属性,那么现在的方式也可能没问题。最后,它实际上取决于你将使用该变量做什么。

答案 2 :(得分:2)

不确定全局变量是什么意思?它是否真的是一个变量,无论创建的对象是什么?如果是这样,它应该是静态的

private static String myString = "str";

如果它永远不会改变那么它应该是最终的,然后是一个全局常量

public static final String MY_STRING = "str";

然后可以公开并通过

访问
MyClass.MY_STRING

如果它仅适用于创建的类的每个对象,则在构造函数或声明中初始化它

答案 3 :(得分:1)

就像你看起来对我好看。顺便说一下,“全球变量”可能会产生误导,因为它可能意味着var是公共的,而它是私有的,但可以通过公共getter / setter在外部访问。

但要初始化String,最简单的方法是:

private String foo = "some string";

答案 4 :(得分:0)

这实际上取决于MyClass将要做什么。大多数情况下,最好有一个构造函数来初始化私有变量,并且还有一个getter和setter。

一个原因是如果MyClass有一个方法foo需要myString初始化并且您忘记拨打setStuff该怎么办?