Главная страница

АБОБА. Справочник по программированию на Java Методическое пособие


Скачать 242.41 Kb.
НазваниеСправочник по программированию на Java Методическое пособие
АнкорАБОБА
Дата20.02.2022
Размер242.41 Kb.
Формат файлаdocx
Имя файла12642_java_method_1.docx
ТипСправочник
#368066
страница15 из 67
1   ...   11   12   13   14   15   16   17   18   ...   67

Альтернативный синтаксис объявления массивов


Для объявления массивов можно использовать и вторую форму синтаксиса:

тип[] имя_переменной;

В этой форме квадратные скобки следуют за указателем типа, а не за именем переменной массива. Например, следующие два объявления эквивалентны:

int al[] = new int[3];

int[] a2 = new int[3];

Приведенные ниже два объявления также эквивалентны:

char twod1[][] = new char[3][4];

char[][] twod2 = new char[3][4];

Описанная вторая форма объявления удобна для одновременного объявления нескольких массивов. Например, объявление

int[] nums, nums2, nums3; // создание трех массивов

, создает три переменных массивов типа int. Оно эквивалентно объявлению

int nums[], nums2[], nums3[]; // создание трех массивов

Альтернативная форма объявления удобна также при указании массива в качестве возвращаемого типа метода. В этой книге используются обе формы объявлений.

Строки


Как вы, вероятно, заметили, в ходе рассмотрения типов данных и массивов мы не упоминали строки или строковый тип данных. Это связано не с тем, что язык Java не поддерживает этот тип – он его поддерживает. Просто строковый тип данных Java, имеющий имя String, не относится к простым типам. Он не является также и просто массивом символов. Тип String, скорее, определяет объект, и для понимания его полного описания требуется понимание ряда характеристик объектов. Поэтому мы рассмотрим этот тип в последующих главах книги, после рассмотрения объектов. Однако чтобы читатели могли использовать простые строки в примерах программ, мы сейчас кратко опишем этот тип.

Тип String используют для объявления строковых переменных. Можно также объявлять массивы строк. Переменной типа String можно присваивать заключенную в кавычки строковую константу. Переменная типа String может быть присвоена другой переменной типа String. Объект типа String можно применять в качестве аргумента оператора println(). Например, рассмотрим следующий фрагмент кода:

String str = "тестовая строка";

System.out.println(str);

В этом примере str – объект типа String. Ему присвоена строка "тестовая строка", которая отображается оператором println().

Как будет показано в дальнейшем, объекты тип String обладают многими характерными особенностями и атрибутами, которые делают их достаточно мощными и простыми в использовании. Однако в нескольких последующих главах мы будем применять их только в простейшей форме.

Указатели


Опытные программисты на C/C++ знают, что эти языки поддерживают указатели.

Однако мы не разу их не упоминали. Причина этого проста: Java не поддерживает и не разрешает использование указателей. (Точнее говоря, Java не поддерживает указатели, которые доступны и/или могут быть изменены программистом.) Java не разрешает использование указателей, поскольку это позволило бы Java-программам преодолевать защитный барьер между средой выполнения Java и хост-компьютером. Вспомните, что указателю может быть присвоен любой адрес в памяти – даже те адреса, которые могут находиться вне системы времени выполнения Java.

Поскольку в программах C/C++ указатели используются достаточно интенсивно, их утрата может казаться существенным недостатком Java. В действительности это не так. Среда Java спроектирована так, чтобы до тех пор, пока все действия выполняются в пределах среды выполнения, применение указателей не требовалось, и их использование не дает никаких преимуществ.

Операции


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

Арифметические операции


Арифметические операции используются в математических выражениях так же, как они применяются в алгебре:

  • + Сложение

  • – Вычитание (также унарный минус)

  • Умножение

  • / Деление

  • % Деление по модулю

  • ++ Инкремент

  • += Сложение с присваиванием

  • -= Вычитание с присваиванием

  • *= Умножение с присваиванием

  • /= Деление с присваиванием

  • %= Деление по модулю с присваиванием

  • –– Декремент

Операнды арифметических операций должны иметь числовой тип. Арифметические операции нельзя применять к типам boolean, но их можно применять к типам char, поскольку в Java этот тип, по сути, является поднабором типа int.

// Демонстрация основных арифметических операций.

class BasicMath {

public static void main(String args[]) {

// арифметические операции с целочисленными значениями

System.out.println("Целочисленная арифметика");

int a = 1 + 1;

int b = a * 3;

int c = b / 4;

int d = c – a;

int e = -d;

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println("c = " + c);

System.out.println("d = " + d);

System.out.println("e = " + e);

// арифметические операции со значениями типа double

System.out.println("\nАрифметика с плавающей точкой");

double da = 1 + 1;

double db = da * 3;

double dc = db / 4;

double dd = dc – a;

double de = -dd;

System.out.println("da = " + da);

System.out.println("db = " + db);

System.out.println("dc = " + dc);

System.out.println("dd = " + dd);

System.out.println("de = " + de);

}

}

При выполнении этой программы на экране отобразится следующий вывод:

Целочисленная арифметика

a = 2

b = 6

c = 1

d = -1

e = 1

Арифметика с плавающей точкой

da = 2.0

db = 6.0

dc = 1.5

dd = -0.5

de = 0.5

Следующий пример программы демонстрирует применение операции %:

// Демонстрация использования операции %.

class Modulus {

public static void main(String args[]) {

int x = 42;

double y = 42.25;

System.out.println("x mod 10 = " + x % 10);

System.out.println("y mod 10 = " + y % 10);

}

}

При выполнении эта программа генерирует следующий вывод:

x mod 10 = 2

y mod 10 = 2.25

Ниже приведен пример программы, который демонстрирует практическое применение нескольких составных операций с присваиванием.

// Демонстрация применения нескольких операций с присваиванием.

class OpEquals {

public static void main(String args[]) {

int a = 1;

int b = 2;

int c = 3;

a += 5;

b *= 4;

c += a * b;

c %= 6;

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println("c = " + c);

}

}

Эта программа создает следующий вывод:

a = 6

b = 8

c = 3

Операции ++ и -- – это операции инкремента и декремента. Рассмотрим, что именно делают операции инкремента и декремента.

Операция инкремента увеличивает значение операнда на единицу. Операция декремента уменьшает значение операнда на единицу. Например, следующий оператор:

x = x + 1;

с применением операции инкремента можно записать в таком виде:

x++;

Аналогично, оператор

x = x - 1;

эквивалентен оператору

x--;

Эти операции отличаются тем, что они могут быть записаны как в постфиксной форме, когда символ операции следует за операндом, как в приведенных примерах, так и в префиксной форме, когда он предшествует операнду. В приведенных примерах применение любой из этих форм не имеет никакого значения. Однако, когда операции инкремента/декремента являются частью более сложного выражения, проявляется внешне незначительное, но важное различие между этими двумя формами. В префиксной форме значение операнда увеличивается или уменьшается до извлечения значения для использования в выражении. В постфиксной форме предыдущее значение извлекается для использования в выражении, и лишь после этого значение операнда изменяется. Например:

x = 42;

y = ++x;

В этом случае значение y устанавливается равным 43, как и можно было ожидать, поскольку увеличение значения выполняется перед присваиванием значения x переменной y. Таким образом, строка y=++x эквивалентна следующим двум операторам:

x = x + 1;

y = x;

Однако если операторы записать как

x = 42;

y = x++;

, значение переменной x извлекается до выполнения операции инкремента, и поэтому значение переменной y равно 42. Конечно, в обоих случаях значение переменной x установлено равным 43. Следовательно, строка y=x++; эквивалентна следующим двум операторам:

y = x;

x = x + 1;

Следующая программа демонстрирует применение операции инкремента.

// Демонстрация применения операции ++.

class IncDec {

public static void main(String args[]) {

int a = 1;

int b = 2;

int c;

int d;

c = ++b;

d = a++;

c++;

System.out.println("a = " + a);

System.out.println("b = " + b);

System.out.println("c = " + c);

System.out.println("d = " + d);

}

}

Вывод этой программы выглядит следующим образом:

a = 2

b = 3

c = 4

d = 1
1   ...   11   12   13   14   15   16   17   18   ...   67


написать администратору сайта