java - java 字符串中 += 和 s1+s2 之间的区别

标签 java string concatenation

我需要编写更长的查询,这些查询是动态生成的,并附加在字符串变量中。众所周知,以下代码将在每次执行 += 时生成字符串变量的不同实例。

String str = "";

  str +="select * from";
  str+=" users where userid = 1";

我想知道以下是否会执行相同的操作或仅创建一个实例?

String str = "select * from "+" users where userid = 1";

最佳答案

如果它只是文字,编译器可能会优化它,但如果不是,字符串上的每个 + 操作都会创建一个中间实例。事实上a += b只是a = a + b的一种简短写法,对于编译器来说是一样的。

顺便说一句,我有一种强烈的感觉,您想要将值连接到查询中。如果您可以请避免这样做,因为它可能会引入严重的安全问题(SQL 注入(inject))。请改用 PreparedStatement

关于java - java 字符串中 += 和 s1+s2 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32842979/

相关文章:

java - 'INTEGER'和 'CHAR (UCS_BASIC)' java数据库比较

c++ - 如何在 C++ 中连接字符串和字符?

C#:字符串连接不起作用

c++ - 如何连接 2 个 LPOLESTR

java - 在 Jython 中调用带有 java.lang.Class 的方法

java - 如何在android中将版本名称解析为整数以进行验证?

java - 用于附加 API 的 native 库在此 JRE 中不可用

r - 在 R 中粘贴 0 个常规和斜体文本

python - 在 Pandas 中将两个数据合并在一起

java - word.toUpperCase().chars() 或 word.chars().map(Chars::toUpperCase) 哪个更好?