You can reassign any type to a variable, for example, assigning an integer to a variable that holds a string.
It manages memory automatically with a garbage collector, so you can focus on the code instead of managing memory like other languages like C would need, and provides many constructs which allow you to deal with highly powerful variables and objects.