Tag: concatenation

StringBuffer / StringBuilder何时未被编译器隐式使用?

我听说编译器(或者它是JVM?)会自动使用StringBuilder进行一些字符串连接。 什么时候才能明确宣布一个? 我不需要StringBuffer来保证线程安全。 谢谢。

什么时候应该显式使用StringBuilder?

据我了解,当我执行String baz = “foo” + “bar” + “123” ,Java编译器在内部用StringBuilder替换表达式。 但是我们的Java老师告诉我们,总是明确地使用StringBuilder是个好习惯… 我是否正确假设我只需要在连接内部循环时显式使用StringBuilder,如Stack Overflow问题字符串生成器与字符串连接的答案中所示? 是否还有其他情况需要显式使用StringBuilder而不是+或+= ?

内存中创建了多少个字符串?

说我有这个String表达式 String hi = “Tom” + “Brady” + “Goat” 我知道字符串池“允许运行时通过在池中保留不可变字符串来节省内存” 字符串池 字符串池中将创建多少个字符串? 我最初的猜测是5 – “Tom” , “Brady” , “Goat” , “TomBrady” , “TomBradyGoat” ,因为String连接的操作顺序(从左到右?)或者它只是最终结果,“ TomBradyGoat“,它存储在字符串池中?

JPA concat运算符

是否有用于字符串连接的JPA concat运算符? 我知道有一个JPA CONCAT函数,但它用于连接多个字符串很难看。 CONCAT(CONCAT(CONCAT(cola,colb),colc),cold) 像Oracle这样的供应商提供了|| 其他一些像微软提供+ 。 是否有标准的JPA连接运算符,以便我可以创建一个类似的查询 cola || colb || colc || cold 我尝试使用openjpa与SQL Server,但它似乎是无效的JPQL。 我在oracle参考中找不到关于这样的运算符的任何内容。