АБОБА. Справочник по программированию на Java Методическое пособие
Скачать 242.41 Kb.
|
Альтернативный синтаксис объявления массивовДля объявления массивов можно использовать и вторую форму синтаксиса: тип[] имя_переменной; В этой форме квадратные скобки следуют за указателем типа, а не за именем переменной массива. Например, следующие два объявления эквивалентны: 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 |