Синтаксических ошибок в приведенном выше коде нет, однако:
они включают простые переменные экземпляра
Они не являются переменными экземпляра, если вы не объявили их как часть класса вне его методов. Если они объявлены в методах, они называются локальными переменными в зависимости от того, какие блоки кода они объявили.
Попытка добавить что-либо в неинициализированный массив, как в
String[] names;
names[0] = new String("mary");
names[1] = "John";
Все равно будет вызывать ошибку во время компиляции, однако это не из-за неправильного синтаксиса, а из-за попытки манипулировать неинициализированной переменной. Вам нужно инициализировать его, поэтому, например, как уже говорили другие, используйте:
String[] names = new String[2];
Если массив заполнен строками, можете ли вы его проиндексировать и использовать для него метод length ()?
Конечно, эта строка совершенно легальна:
j = names[0].length();
И эквивалентно (при условии, что вы исправили ошибку неинициализированного массива выше yada yada):
String firstElement = names[0];
j = firstElement.length();