The unannotated array [2, 3] is reserved for Int64 specifically, just like how [2.0, 3.0] is reserved for Float64. On the other hand, println([2.0f0, 3.0f0]) prints Float32[2.0, 3.0].
That type annotation is just syntax for specifying the element type of an array literal. It’s useful to write explicitly if Julia guesses wrong. For example, writing [1.0, 1] converts everything to Float64 for performance reasons, but if I needed to keep the types as is, I would write Real[1.0, 1].