$ {}和常规变量之间的差异

时间:2017-05-31 14:53:41

标签: groovy

之间有什么区别
String test = "blah"
print("this is a test ${test} blah blah")

print("This is a test " + test + " blah blah")

2 个答案:

答案 0 :(得分:2)

当字符串文字包含${}时,Groovy构造 GString

根据它的Javadoc,一个GString:

  

表示包含"hello there ${user} how are you?"等嵌入值的字符串,可以懒惰地进行评估。高级用户可以迭代文本和值以执行特殊处理,例如执行SQL操作,值可以替换为?,实际值对象可以绑定到JDBC语句。

因此"this is a test ${test} blah blah"带有其结构,可以以编程方式检查。而"This is a test " + test + " blah blah"是一个不可变的字符串,就像在Java中一样。

通常这对程序员没有任何影响,但偶尔会发生令人惊讶的事情 - 请参阅:dynamically set the db in a sql query

答案 1 :(得分:0)

实际上,每个使用“”的字符串都是GString。当你使用''时,这意味着你使用java.lang.String。 不幸的是,Java中的String是最终类。所以,groovy开发人员会做出解决方法。