gpt4 book ai didi

java - 这两套代码的区别(String x Stringbuffer)

转载 作者:行者123 更新时间:2023-12-01 22:26:01 24 4
gpt4 key购买 nike

我们的项目即将部署,一些要点已传递给我们。其中之一是将字符串连接交换到字符串缓冲区。

但是我们的一些字符串是 SQL 查询,而且它们非常大。当我将这些字符串作为 Stringbuffer 的参数传递时,串联仍然会发生。那么,这两套代码有什么区别吗?

没有字符串缓冲区

private static final String QUERY_CONSULTA_CIDADE_FUVIAL = "SELECT SR.ID_SUB_REGIAO FROM REGIAO_TAB_NEGC RT "
+ "INNER JOIN SUB_REGIAO_TAB_NEGC ST ON ST.ID_REGIAO_TAB_NEGC = RT.ID_REGIAO_TAB_NEGC "
+ "INNER JOIN SUB_REGIAO SR ON SR.ID_SUB_REGIAO = ST.ID_SUB_REGIAO INNER JOIN CIDADE C1 ON C1.ID_ESTADO = SR.ID_UF "
+ "WHERE RT.ID_TAB_NEGC = :idTabelaNegociacao AND C1.ID_CIDD = :idCidade AND SR.FL_FLUVIAL = 'S' AND C1.TP_REDSP_FLUV = 'S'";

使用字符串缓冲区

private static final StringBuffer QUERY_CONSULTA_CIDADE_PERTENCE_SUB_REGIAO = new StringBuffer(
"SELECT SR.ID_SUB_REGIAO FROM REGIAO_TAB_NEGC RT "
+ "INNER JOIN SUB_REGIAO_TAB_NEGC ST ON ST.ID_REGIAO_TAB_NEGC = RT.ID_REGIAO_TAB_NEGC "
+ "INNER JOIN SUB_REGIAO SR ON SR.ID_SUB_REGIAO = ST.ID_SUB_REGIAO "
+ "INNER JOIN CIDADE C1 ON C1.ID_ESTADO = SR.ID_UF AND C1.TP_CLASS_COMRC_RODO = SR.TP_CLASF "
+ "WHERE RT.ID_TAB_NEGC = :idTabelaNegociacao AND C1.ID_CIDD = :idCidade");

最佳答案

StringBuffer 的使用方式如下:

 StringBuffer str = new StringBuffer ("Stanford ");
str.append("Lost!!");

对于“私有(private)静态最终字符串”,您不能真正使用 StringBuffer,或者至少没有任何性能增益,甚至可能有性能损失!

StringBuffer 用于在方法内部使用。

此外,由于您的变量是私有(private)静态最终变量,因此所有“+”修饰符都将在编译时发生,并且无论如何都会被优化,因此您将得到高度优化。此处无需更改任何内容。

关于java - 这两套代码的区别(String x Stringbuffer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28782081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com