Respostas:
As aspas simples são uma string java padrão
As aspas duplas são uma String modelável, que retornará um GString se for modelada ou então uma String Java padrão. Por exemplo:
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
Se você tentar modelar com strings entre aspas simples, não fará nada, então:
println 'hi $a' // prints "hi $a"
Além disso, vale a pena ler o link fornecido por julkiewicz em sua resposta (especialmente a parte sobre GStrings não serem Strings cerca de 2/3 do caminho para baixo.
Meu entendimento é que a string entre aspas pode conter referências incorporadas a variáveis e outras expressões. Por exemplo: "Hello $name"
, "Hello ${some-expression-here}"
. Nesse caso, um GString
será instanciado em vez de um regular String
. Por outro lado, strings entre aspas simples não suportam essa sintaxe e sempre resultam em um texto simples String
. Mais sobre o assunto aqui:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings