Yeah, most languages are like that. But most languages also allow a variable to be used to specify the size of an array when the memory for the array is dynamically allocated. C and C++ are like that, for example (
malloc() in C and
new in C++), while in Java everything is dynamic so the concept of "only when dynamically allocating memory" doesn't really apply.
No biggie; just a little surprised is all.