простой вопрос, класс и массив
Модератор: Absurd
есть мой класс с конструктором без параметров,
например Field.
нужно создать двумерный массив экземпляров класса
например Field field[][];
но у меня не работает такая операция
field = new Field[10][10];
как правильно создать всю матрицу?
например Field.
нужно создать двумерный массив экземпляров класса
например Field field[][];
но у меня не работает такая операция
field = new Field[10][10];
как правильно создать всю матрицу?
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Код: Выделить всё
public class Test {
public static void main(String args[]) {
Field[][] matrix = new Field[10][10];
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
matrix[i][j] = new Field();
}
}
ага вижу, спасиб!
а я думал, что сразу вызывается
конструктор по умолчанию как в с++ :)
-----
зы: кажется не сработало....
пишу так:
при обращении к x и y полям выдает exception,
а watch показывает
такое впечатление, что создались только первые 10
а я думал, что сразу вызывается
конструктор по умолчанию как в с++ :)
-----
зы: кажется не сработало....
пишу так:
Код: Выделить всё
Cell cells[][];
cells = new Cell[10][10];
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
cells[i][i]=new Cell();
for(int i=0;i<10;i++)
for(int j=0;j<10;j++){
cells[i][j].x=i;
cells[i][j].y=j;
}
а watch показывает
Код: Выделить всё
"expression" cells: Cell[][]= Cell[10][]
Oscar писал(а):cells=new Cell()][j]=new Cell();
ааа...... кошмар, я извиняюсь за глупость :)
хм... на скорость пока не жаловался,
а почему 160? ведь по сути у меня 10х10, т.е. 100...
и вообще, я пока не понимаю запись cells[(i<<4)|j]
можно поподробнее?
а почему 160? ведь по сути у меня 10х10, т.е. 100...
и вообще, я пока не понимаю запись cells[(i<<4)|j]
можно поподробнее?
сдвинуть i на 4 бита влево и сложить побитово с j 

абсурд, тогда лишняя память будет заниматься.
160 - потому что сдвиг слево на 4 равносилен умножениб на 16.
10*16 = 160
160 - потому что сдвиг слево на 4 равносилен умножениб на 16.
10*16 = 160
хм..... а почему тогда не так
Код: Выделить всё
cells[i+j*10]