Проблема с булевыми массивами - PullRequest
1 голос
/ 12 декабря 2011

Код правильно выводит "x [2] [2] false", моя проблема в том, чтобы понять, почему это происходит.(Это правильно, мне просто нужен кто-то, кто «говорит на компьютере» по этой логике - я забираю свой финал через 4 часа и никогда больше никого не побеспокою :))
Большое спасибо за вашу помощь!

public static void main(String[] args) {
    boolean[][] x = new boolean[3][];
    x[0] = new boolean[1];x[1] = new boolean[2];
    x[2] = new boolean[3];

    System.out.println("x[2][2] is " + x[2][2]);
}

Ответы [ 6 ]

3 голосов
/ 12 декабря 2011

Когда вы создаете массив, каждая запись получает значение по умолчанию.Для boolean значением по умолчанию является false.(Для числовых примитивов значение по умолчанию равно нулю. Для ссылочных типов значение по умолчанию равно null.)

Поэтому при создании массива верхнего уровня boolean[][] x = new boolean[3][];, x представляет собой 3-элемент массив логических массивов, для каждого элемента установлено значение по умолчанию null.(Один массив примитивных типов является ссылочным типом.) Затем программа инициализирует каждый элемент x новым массивом логических примитивов, каждый из которых заполнен false элементами.Обратите внимание, что массивы имеют разную длину;это не проблема в Java.Как это бывает, x[2][2] действительно существует (в отличие, скажем, x[1][2]), поэтому вызов println завершается успешно.

2 голосов
/ 12 декабря 2011

При создании new boolean[n] все логические значения по умолчанию равны false (что также является значением по умолчанию для boolean)

1 голос
/ 12 декабря 2011

Когда вы объявляете логический массив, он по умолчанию автоматически получает все свои значения 'false'.

0 голосов
/ 12 декабря 2011

Значение по умолчанию boolean s в Java равно false независимо от того, сколько и сколько вы его выделите.

0 голосов
/ 12 декабря 2011

Это потому, что переменные всех примитивных типов имеют значение по умолчанию.Нельзя использовать обычные переменные без инициализации, но при создании массива каждый элемент инициализируется автоматически.int, long, short до 0, float и double до 0.0, логическое значение false.

Вы не инициализируете элементы вашего двухмерного массива.Таким образом, все его элементы являются ложными по умолчанию.

0 голосов
/ 12 декабря 2011

Элементы массива инициализируются по умолчанию, равным false в случае логических примитивов. Таким образом, new boolean[3] приведет к {false, false, false};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...