java - Java中的变量重用

标签 java variables benchmarking

在用 Java 处理 SQL 事务的类中,我发现自己一直在使用类 PreparedStatement 和 ResultSet。

我很想知道在 Java 中什么是更好(更有效)的实践;将它们声明为类的成员......

class SqlThingy {
    PreparedStatement pstx;
    ResultSet rs;
    public void SqlThingyMethod() {
         pstx = database.connection.prepareStatement("...");
         ....
    }
}

... 还是作为单个方法的局部变量?

class SqlThingy {
    public void SqlThingyMethod() {
        PreparedStatement pstx;
        ResultSet rs;
        pstx = database.connection.prepareStatement("...");
    }
}

VM 只是用(引用)新的准备语句覆盖类成员的内容,还是会做一些额外的初始化,同时也声明资源,甚至消除每次分配局部变量的差异?

最佳答案

一定要区分变量和它们指向的对象。作为一般原则,不要重复使用变量来指向不同的对象。这是非常容易出错的。

在您的特定示例中,由于您在每次调用 SqlThingyMethod 时都重新创建连接对象,因此将其存储在字段中可能没有任何好处。使用局部变量。

变量很便宜。对象,如果不是非常昂贵,那么便宜。在这种情况下,对象实际上可能很昂贵,但变量却不是。

关于java - Java中的变量重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340800/

相关文章:

java - Java 中是否有从 List<CompletionStage> 到 CompletionStage<List> 的转换器?

ruby - 变量变化

MySQL如何设置addtime的变量结果

regex - 使用变量作为 RegEx 模式

php - php 中的 cpu_get_usage?

c++ - Windows 中优于 100ns 的分辨率计时器

java - 在准备好的语句中调用参数化函数

java - "org.eclipse.equinox.ds@3:start"背后的魔力?

Java:SortedSet "cursor"风格的迭代器

linux - 使用 ab 进行网站基准测试