Это правильное поведение - массивы могут быть определены в скобках после типа переменной или имени переменной.
String[] tokens;
и
String tokens[];
одинаковы.Это, однако, запутанный способ написания двумерного массива, поэтому я не намеренно использовал бы его;)
Если вы думаете о массивах как об объектах (какими они технически являются), а квадратные скобки - как синтаксический сахар для новогоключевое слово и пустой конструктор, вы можете представить свою «ошибку» как:
tokens = new Array<String>(new Array<String>());
, так как оба
String[] tokens;
и
String tokens[];
будут эквивалентны
new Array<String>();