It's not an issue of weakly or strictly typed languages. As delnan show, there is a weary slick theme, and terminology here can be different.
What do you see in interpreter, is a work of overloaded plus operator, which allows you easy concatenate values into strings, very useful feature for printing some output or logging.
To be specific, Groovy is weakly(optionally, as tim suggested) typed, you can define types, or you can omit them, using def
keyword. It also allows you to do a lot of implicit conversions, because of it dynamic nature. More info about types. There are several annotations, allowing you to change that behaviour, like @CompileStatic or @TypeChecked.
In every particular situation, you can get better solution, using right typing strategy. It's very Groovy ;)