在类或方法中声明String

时间:2014-07-31 09:04:08

标签: java string

我刚开始考虑这个问题,但最终无法想出什么。声明的字符串仅在一个方法中使用,永远不会更改。字符串是应该在方法中声明还是在类中作为静态final?

课堂上的例子:

public class DBHandler {
     final String sqlInsertHouse = "INSERT INTO " tableName + " VALUES (?,?)";

     public void insertHouse(String name, String type) {
          //use sqlInsertHouse string in query.
     }
}

方法示例:

public class DBHandler {

     public void insertHouse(String name, String type) {
          final String sqlInsertHouse = "INSERT INTO " tableName + " VALUES (?,?)";
          //use sqlInsertHouse string in query.
     }
}

那我应该使用哪一个?如果这取决于具体情况,那么请举一些例子。

1 个答案:

答案 0 :(得分:2)

取决于它的调用频率。

如果你在方法之外声明它,那么Javas escape analysis将标记它并在编译为字节代码时用锁定代码将其包围,这意味着效率较低。

在方法中声明它将在每次调用时创建一个新的String,如果它被调用很多就会效率低下。

所以基本上两种方式都很好,这些只是需要注意的事情。要找出哪个更快,你可能需要对其进行分析。

同时

你的代码不会编译。 ;)