double matrix [][] = new double [5][2];
Следующий фрагмент кода инициализирует такое же количество памяти, но память под вторую размерность отводится вручную. Это сделано для того, чтобы наглядно показать, что матрица на самом деле представляет собой вложенные массивы.
double matrix [][] = new double [5][];
matrix [0] = new double[2];
matrix[l] =new double[2];
matrix[2] = new double[2];
matrix[3] = { 0,1};
matrix[4] = { 2,3};
В следующем примере создается матрица размером 4 на 4 с элементами типа double, причем ее диагональные элементы (те, для которых х==у) заполняются единицами, а все остальные элементы остаются равными нулю.
class Matrix {
public static void main(String args[]) {
double m[][]; m = new double[4][4];
m[0][0]=l;
m[l][l] = l;
m[2][2] = l;
m[3][3] = l;
System.out.println(m[0][0] +" "+ m[0][l] +" "+ m[0][2] +" "+ m[0][3]);
System.out.println(m[1][0] +" "+ m[l][l] +" "+ m[l][2] +" "+ m[l][3]);
System.out.println(m[2][0] +" "+ m[2][l] +" "+ m[2][2] +" "+ m[2][3]);
System.out.println(m[3][0] +" "+ m[3][l] +" "+ m[3][2] +" "+ m[3][3]);
}
}
Запустив эту программу, вы получите следующий результат:
1000
0100
0010
0001
Обратите внимание — если вы хотите, чтобы значение элемента было нулевым, вам не нужно его инициализировать, это делается автоматически. Для задания начальных значений массивов существует специальная форма инициализатора, пригодная и в многомерном случае. В про1рамме, приведенной ниже, создается матрица, каждый элемент которой содержит произведение номера строки на номер столбца. Обратите внимание на тот факт, что внутри инициализатора массива можно использовать не только литералы, но и выражения.
class AutoMatrix {
public static void main(String args[]) {
double m[][]={
{ 0*0,1*0,2*0,3*0 }, { 0*1,1*1,2*1,3*1 }, { 0*2.1*2,2*2,3*2 },
{0*3,1*3.2*3,3*3 } };
System.out.println(m[0][0] +" "+ m[0][l] +" "+ m[0][2] +" "+ m[0][3]);
System.out.println(m[ 1 ][0] +" "+m[l][l] +" "+m[l][2] +" "+m[l][3]);
System.out.println(m[2][0] +" "+m[2][l] +" "+m[2][2] +" "+ m[2][3]);
System.out.println(m[3][0] +" "+m[3][l] +" "+ m[3][2] +" "+ m[3][3]);
}
}
Запустив эту программу, вы получите следующий результат:
0000
0123
0246
0369
4. ОПЕРАТОРЫ
Операторы в языке Java — это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с некоторыми операндами. Типы операций указываются с помощью операторов, а операнды - это переменные, выражения или литералы. Некоторые операторы требуют одного операнда, их называют унарными. Одни операторы ставятся перед операндами и называются префиксными, другие — после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называются инфиксными бинарными операторами. Существует тернарный оператор, работающий с тремя операндами. В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.
Арифметические операторы используются для вычислений так же как в алгебре (см. таблицу со сводкой арифметических операторов ниже). Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом char можно, поскольку в Java тип char — это подмножество типа int.
Таблица 4.1. Таблица арифметических операторов
№ |
Оператор |
Результат |
Оператор |
Результат |
1 |
+ |
Сложение |
+ = |
Сложение с присваиванием |
2 |
- |
Вычитание (также унарный минус) |
- = |
Вычитание с присваиванием |
3 |
* |
Умножение |
* = |
Умножение с присваиванием |
4 |
/ |
Деление |
/ = |
Деление с присваиванием |
5 |
% |
Деление по модулю |
% = |
Деление по модулю с присваиванием |
6 |
++ |
Инкремент |
-- |
Декремент |
Ниже в качестве примера, приведена простая программа, демонстрирующая использование операторов. Обратите внимание на то, что операторы работают как с целыми литералами, так и с переменными.
class BasicMath {
public static void int a = 1 + 1;
int b = a* 3;
main(String args[]) {
int с = b / 4;
int d = b - a;
int e = -d;
System.out.print("a = " + a);
System.out.print("b = " + b);
System.out.print("c = " + c);
System.out.print("d = " + d);
System.out.println("e =” + e);
}
}
Исполнив эту программу, вы должны получить приведенный ниже результат:
a = 2
b = 6
c = 1
d = 4
e = -4
Оператор деления по модулю - оператор mod, обозначается символом %. Этот оператор возвращает остаток от деления первого операнда на второй. Функция mod в Java работает не только с целыми, но и с вещественными типами. Приведенная ниже программа иллюстрирует работу этого оператора.
class Modulus {
public static void main (String args []) {
int x = 42;
double у = 42.3;
System.out.print("x mod 10 = " + x % 10);
System.out.println("y mod 10 = " + у % 10);
}
}
Выполнив эту программу, вы получите следующий результат:
х mod 10 = 2 у mod 10 = 2.3
Для каждого из арифметических операторов есть форма, в которой одновременно с заданной операцией выполняется присваивание. Если требуется написать а += 4, то с таким же успехом можно использовать а = а +4.
Такой способ пригоден для всех бинарных операторов, которые используются в выражениях вида:
переменная = переменная оператор выражение;
Любой такой оператор можно записать в короткой форме:
переменная оператор = выражение;