Строки. Указатели. Операции. Арифметические операции
Строки Как вы, вероятно, заметили, в ходе рассмотрения типов данных и массивов мы не упоминали строки или строковый тип данных. Это связано не с тем, что язык 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
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|