System.out.println(new char[] {THT, 'e', TlT, TlT, 'o'});
Ссылка на массив не является частью описанного массива, ее можно перебросить на другой массив того же типа операцией присваивания. Например, после присваивания a = b обе ссылки a и b будут указывать на один и тот же массив из 100 вещественных переменных типа double и содержать один и тот же адрес.
Ссылка может присвоить "пустое" значение null, не указывающее ни на какой адрес оперативной памяти:
ar = null;
После этого массив, на который указывала данная ссылка, теряется, если на него не было других ссылок.
Кроме простой операции присваивания со ссылками можно производить еще только сравнения на равенство, например a == b, и неравенство — a != b. При этом сопоставляются адреса, содержащиеся в ссылках; мы можем узнать, не ссылаются ли они на один и тот же массив.
Массивы в Java всегда определяются динамически, хотя ссылки на них задаются статически.
Кроме ссылки на массив для каждого массива автоматически определяется целая константа с одним и тем же именем length. Ее значение равно длине массива. Для каждого массива имя этой константы уточняется именем массива через точку. Так, после наших определений, константа a.length равна 5, константа b.length равна 100, а ar.length равна 50.
С помощью константы length последний элемент массива a можно записать так: a[a.length - 1], предпоследний — a[a.length - 2] и т. д. Элементы массива обычно перебираются в цикле вида:
double aMin = a[0], aMax = aMin; for (int i = 0; i < a.length; i++){ if (a[i] < aMin) aMin = a[i]; if (a[i] > aMax) aMax = a[i];
}
double range = aMax - aMin;
Здесь вычисляется диапазон значений массива. Заметьте, что цикл можно было бы начать с 1.
Ситуация, когда надо перебрать все элементы массива в порядке возрастания их индексов, как в предыдущем примере, встречается очень часто. Начиная с версии Java SE 5, для таких случаев в язык Java введена упрощенная форма оператора цикла for, так называемый оператор "for-each", уже упоминавшийся ранее. Вот как можно записать предыдущий пример оператором "for-each":
double aMin = a[0], aMax = aMin; for (double x : a){
if (x < aMin) aMin = x; if (x > aMax) aMax = x;
}
double range = aMax - aMin;
Обратите внимание на то, что в цикле for сразу определяется переменная x того же типа, что и элементы массива. Эта переменная принимает последовательно значения всех элементов массива от первого элемента до последнего.
Элементы массива — это обыкновенные переменные своего типа, с ними можно производить все операции, допустимые для этого типа: (a[2] + a[4]) / a[0] и т. д.
Массив символов в Java не является строкой, даже если он заканчивается нуль-символом
T\u0000 T.
Элементами массивов в Java могут быть массивы. Можно объявить ссылку:
char [][] c;
что эквивалентно
char [] c[];
или char c[] [];
c = new char[3][];
c[0] = new char[2]; c[1] = new char[4]; c[2] = new char[3];
Наконец, задаем начальные значения c[0][0] = Ta% c[0][1] = Tr% c[1][0] = Tr’,
c[1] [1] = TaT, c[1] [2] = TyT и т. д.
int[] [] d = new int[3] [4];
int[][] inds = {{1, 2, 3}, {4, 5, 6}};
class PascalTriangle{
public static final int LINES = 10; // Так определяются константы
public static void main(String[] args){ int [][] p = new int [LINES] [ ] ; p[0] = new int[1];
System.out.println(p[0][0] = 1); p[1] = new int[2]; p[1] [0] = p[1] [1] = 1;
System.out.println(p[1][0] + " " + p[1][1]); for (int i = 2; i < LINES; i++){ p[i] = new int[i+1];
System.out.print((p[i][0] = 1) + " "); for (int j = 1; j < i; j++)
System.out.print((p[i][j] = p[i-1][j-1] + p[i-1][j]) + " "); System.out.println(p[i][i] = 1);
}
}
\ Command Prompt
10 10 5 115 20 15 6 1 21 35 35 21 7 1 28 56 70 56 28 8 1 36 84 126 126 84 36 9 1 |
Microsoft Windows [Uersion 5.2.3790]
C:\>cd progs
C:\progs>jauac PascalTriangle.jaua
C:\progs>java PascalTriangle 1
Рис. 1.4. Вывод треугольника Паскаля в окно Command Prompt
Заключение