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

  • Cstring混淆
  • java十进制string格式
  • C#Double - ToString()格式化,小数点后两位,但不舍入
  • 具有32位整数低冲突率的快速string散列algorithm
  • 转换JavaScriptstring是全部小写?
  • 字符指针与cout中的cout混淆
  • 如何获得string的前5个字符
  • 如何在Ruby中将string转换为大写或小写
  • 为什么在Ruby中构buildstring时,铲运算符(<<)优先于plus-equals(+ =)?
  • 来自两个以上string的最长公共子string - Python
  • 将逗号分隔的string转换为数组