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