groovy中单引号或双引号内的string有什么区别?

def a = "a string" def b = 'another' 

有什么区别吗? 或者就像JavaScript让我们input'"在string更容易?

2 Solutions collect form web for “groovy中单引号或双引号内的string有什么区别?”

单引号是一个标准的Java String

双引号是一个模板化的string,如果是模板化的,它将返回一个GString,否则返回一个标准的Java String。 例如:

 println 'hi'.class.name // prints java.lang.String println "hi".class.name // prints java.lang.String def a = 'Freewind' println "hi $a" // prints "hi Freewind" println "hi $a".class.name // prints org.codehaus.groovy.runtime.GStringImpl 

如果您尝试使用单引号string进行模板化,则不会执行任何操作,因此:

 println 'hi $a' // prints "hi $a" 

另外, julkiewicz给出的答案值得一读(特别是关于GStrings不是Strings的2/3左右的部分)。

我的理解是,双引号string可能包含对variables和其他expression式的embedded式引用。 例如: "Hello $name""Hello ${some-expression-here}" 。 在这种情况下,一个GString将被实例化,而不是一个普通的String 。 另一方面,单引号的string不支持这种语法,并且总是导致一个普通的String 。 更多关于这个话题:

http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings

  • 比较两个string数组的C#
  • 如何根据子串匹配来selectR data.table行(一个像SQL一样)
  • 为什么C ++中的string通常以'\ 0'结尾?
  • 在swift中将数组转换为JSONstring
  • string相似度algorithm
  • 在python中连接string和整数
  • 删除多个空格
  • 如何从Javainput文本中删除标点符号?
  • 在C#中命名的string格式
  • 如何将列表转换为string
  • C#相当于Java的charAt()?