Here we list all the major differences between Java and Groovy.
Math: BigDecimal arithmetics by default
Floating point number literals are BigDecimals by default. So when you type 3.14, Groovy won't create a double or a float, but will instead create a BigDecimal. This might lead people into believing that Groovy is slow for arithmetics!
If you really want to use floats or doubles, be sure to either define such numeric variables with their float or double types, like in:
double piDouble = 3.14 float piFloat = 3.14
Or else, you can also use suffixes like:
def piDouble = 3.14d def piFloat = 3.14f
See also our section on Math with Groovy.
All these packages and classes are imported by default, i.e. you do not have to use an explicit
import statement to use them:
- Semicolons are optional. Use them if you like (though you must use them to put several statements on one line).
returnkeyword is optional.
- You can use the
thiskeyword inside static methods (which refers to this class).
- Methods and classes are public by default.
Protectedin Groovy has the same meaning as protected in Java, i.e. you can have friends in the same package and derived classes can also see protected members.
- Inner classes are not supported at the moment. In most cases you can use closures instead.
throwsclause in a method signature is not checked by the Groovy compiler, because there is no difference between checked and unchecked exceptions.
- You will not get compile errors like you would in Java for using undefined members or passing arguments of the wrong type. See Runtime vs Compile time, Static vs Dynamic.