Основы программирования на Java - [5]

Шрифт
Интервал

>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 класса — арифметические, битовые, операторы сравнения и логические.

4.1. Арифметические операторы

Арифметические операторы используются для вычислений так же как в алгебре (см. таблицу со сводкой арифметических операторов ниже). Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом 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

4.1.1. Оператор деления по модулю

Оператор деления по модулю - оператор 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.1.2. Арифметические операторы присваивания

Для каждого из арифметических операторов есть форма, в которой одновременно с заданной операцией выполняется присваивание. Если требуется написать а += 4, то с таким же успехом можно использовать а = а +4.

Такой способ пригоден для всех бинарных операторов, которые используются в выражениях вида:

>переменная = переменная оператор выражение;

Любой такой оператор можно записать в короткой форме:

переменная оператор = выражение;

4.1.3. Инкремент и декремент

В Java существует два оператора, называемых операторами инкремента и декремента (++ и --) и являющихся сокращенным вариантом записи для сложения или вычитания из операнда единицы. Эти операторы уникальны в том плане, что могут использоваться как в префиксной, так и в постфиксной форме. При использовании префиксной формы операнд модифицируется перед выполнением операции. В постфиксной форме сначала используется содержимое операнда, а лишь после этого операнд инкрементируется или декрементируется. Следующий пример иллюстрирует использование операторов инкремента и декремента.


Рекомендуем почитать
Графика для Windows средствами DirectDraw

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


Виртуальная библиотека Delphi

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


Пишем драйвер Windows на ассемблере

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


Как писать драйвера

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


MFC и OpenGL

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


Информационная технология. Оценка программной продукции характеристики качества и руководства по их применению

Стандарт подготовлен на основе применения аутентичного текста международного стандарта ИСО/МЭК 9126-91 «Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению»Information technology. Software product evaluation. Quality characteristics and guidelines for their use.