Я работал над проблемой и обнаружил, что ссылки на Java не работают так, как я ожидаю. Конечно, я виновник :), может кто-нибудь, пожалуйста, мне, почему происходит следующее. Позвольте мне сначала опубликовать код здесь.
package misc.matrix;
public class ReferenceTester {
public static void main(String args[]){
Boolean[][] input = {
{true ,false ,true ,true ,false },
{false ,true ,true ,true ,true },
{true ,true ,true ,true ,true },
{true ,true ,true ,true ,true },
{true ,false ,true ,true ,true }
};
print(input);
for(Boolean[] eachRow:input){
for(Boolean eachVal:eachRow){
eachVal = Boolean.TRUE;
}
}
print(input);
/*Expected output
true true true true true
true true true true true
true true true true true
true true true true true
true true true true true
*/
}
/**
* Simply prints the array
*/
private static void print(Boolean[][] input) {
for(Boolean[] outArray:input){
for(Boolean iVal:outArray){
System.out.print(iVal?iVal+" ":iVal+" ");
}
System.out.println();
}
}
}
Если вы посмотрите на вышеупомянутую программу, все, что я пытаюсь сделать, это изменить все значения в массиве на true и распечатать его. Но его просто печатает ввод снова.
Может кто-нибудь, пожалуйста, скажите мне, почему это. Первоначально я использовал примитив логический в программе, но, поскольку я не хочу создавать копии, я использовал булевый класс-обертку, который является Java OBJECT, а не примитивами. (Разве каждый из них не является объектом JAVA!?!?!?!?)
Почему это происходит на Java? Почему он не распечатал все значения, чтобы быть правдой?
Пожалуйста, сообщите.