Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Строки. Указатели. Операции. Арифметические операции




Строки

Как вы, вероятно, заметили, в ходе рассмотрения типов данных и массивов мы не упоминали строки или строковый тип данных. Это связано не с тем, что язык 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...