Главная страница
Навигация по странице:

  • Индивидуальные задания

  • Контрольные вопросы

  • Рекомендуемая литература

  • Лабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74


    Скачать 1.76 Mb.
    НазваниеЛабораторная работа 1 2 лабораторная работа 2 31 лабораторная работа 3 44 лабораторная работа 4 74
    Дата12.03.2021
    Размер1.76 Mb.
    Формат файлаdoc
    Имя файлаOOP_Lab_Rus.doc
    ТипЛабораторная работа
    #184105
    страница2 из 31
    1   2   3   4   5   6   7   8   9   ...   31



    1.3.5 Строковые литералы

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

    "Hello World"

    "two\nIines"

    "\'This is in quotes\"

    Escape-последовательности и восьмеричные/шестнадцатеричные системы обозначений, которые были определены для символьных литералов, рабо­тают аналогичным образом и внутри строковых литералов. Обратите внима­ние на одну важную деталь: строковые литералы должны начинаться и за­канчиваться на той же строке. Никакой escape-последовательности продол­жения строки не существует, как в других языках.
    1.4 Переменные

    Переменная — базовая единица хранения в Java-программе. Переменная определена комбинацией идентификатора, типа, и необязательного инициа­лизатора. Кроме того, все переменные имеют область, которая определяет их видимость, и время жизни.
    1.4.1 Объявление переменной

    В Java все переменные должны быть объявлены прежде, чем они могут быть использованы. Основная форма (формат) объявления переменной выглядит так:

    type Identifier [ - value][, identifier [ = value]...];

    Здесь type — один из типов Java, имя класса или интерфейса. (Понятия "класс" и "интерфейс" обсуждаются позже в Части I этой книги.) identifier — это имя переменной. Можно инициализировать переменную, определяя знак ра­венства (=) и value (в виде литерала подходящего типа). Имейте в виду, что выражение инициализации должно привести к значению того же самого (или совместимого) типа, как и значение, которое определено для перемен­ной. Чтобы объявлять несколько переменных указанного типа, используйте список, разделенный запятыми.

    Несколько примеров объявлений переменных различных типов (обратите внимание, что некоторые включают выражения инициализации):

    int а, b, с; // три int-переменных а, b и с

    int d = 3, е, f = 5; // три int-переменных, d и f инициализируются

    byte z = 22; // инициализирует z

    double pi =3.14159; // аппроксимация пи

    char x = 'x'; // переменная x имеет значение 'х'

    Java позволяет любому должным образом оформленному идентификатору иметь любой объявленный тип.
    1.4.2 Область действия и время жизни переменных

    До сих пор все используемые переменные объявлялись в начале метода main(). Однако Java позволяет объявлять переменные в пределах любого блока. Блок начинается с открывающей фи­гурной скобки и оканчивается закрывающей фигурной скобкой. Блок опре­деляет область видимости (действия) имен переменных (scope). Таким обра­зом, каждый раз, когда запускается новый блок, создается новая область видимости. Область видимости определяет ту часть программы, где имена декларированных (в данном блоке) объектов являются "видимыми" из дру­гих частей программы. Эта область определяет также "время (продолжитель­ность) жизни" этих объектов.

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

    Область действия, определенная методом, начинается с его открывающей фигурной скобки. Однако, если метод имеет параметры, они также включа­ются в его область действия.

    Общее правило: переменные, объявленные внутри области действия, неви­димы (т. е. недоступны) коду, который определен вне этой области. Таким образом, когда вы объявляете переменную в пределах области действия, вы локализуете эту переменную и защищаете ее от неправомочного доступа и/или модификации. Действительно, правила области видимости обеспечи­вают основу для инкапсуляции.

    Области действия могут быть вложены. Например, каждый раз, когда вы создаете блок кода, образуется новая, вложенная область действия. Когда это происходит, внешняя область действия включает внутреннюю. Это оз­начает, что объекты, объявленные во внешней области, будут видимы и во внутренней. Однако, обратное — не верно. Объекты, объявленные во внут­ренней области действия, не будут видимы во внешней.
    1.5 Операции

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

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

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

    Табл. 4

    Операция

    Результат

    +

    Сложение

    -

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

    *

    Умножение

    %

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

    /

    Деление

    ++

    Инкремент (Increment)

    +=

    Присваивание со сложением (Addition assignment)

    -=

    Присваивание с вычитанием (Subtraction assignment)

    *—

    Присваивание с умножением (Multiplication assignment)

    /=

    Присваивание с делением (Division assignment)

    %=

    Присваивание с модулем (Modulus assignment)

    - -

    Декремент (Decrement)


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

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

    а = а + 4;

    В Java вы можете переписать этот оператор так:

    а += 4;

    Данная версия использует операцию присваивания со сложением +=. Оба оператора выполняют одно и то же — увеличивают значение на 4.

    Вот другой пример:

    а = а % 2;

    который можно выразить так:

    а %= 2;

    В этом случае операция %= получает остаток от деления а на 2 и помещает этот результат обратно в а.

    Имеются операции присваивания для всех арифметических и бинарных операций. Таким образом, любой оператор формы

    var = var op expression;

    где var — идентификатор переменной; op—выполняемая операция; expres­sion — выражение;

    можно переписать как

    var op — expression

    Операции присваивания обеспечивают два преимущества. Во-первых, они немного сокращают объем клавиатурного ввода, потому что короче эквива­лентных им длинных форм. Во-вторых, исполнительная система Java реали­зует их гораздо эффективнее, чем их длинные эквиваленты. По этим причи­нам в профессионально составленных Java-программах вы часто увидите использование именно этих форм операций присваивания.

    Пример:

    Public static void main (String args[]){

    Int a = 1;

    Int b = 2;

    Int c = 3;

    a += 5;

    b +=4;

    c %= 6;

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

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

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

    }

    }

    Вывод этой программы:

    a = 6

    b = 8

    c = 3

    1.5.3 Поразрядные операции

    java определяет несколько побитовых операций, которые могут применяться к цело­численным типам: long, int, short, char и byte. Эти операции воздействуют на отдель­ные биты операндов.

    Табл. 5

    Операция

    Результат



    Поразрядное унарное отрицание (bitwise unary NOT)

    &

    Поразрядное И (bitwise AND)

    |

    Поразрядное ИЛИ (bitwise OR)

    ^

    Поразрядное исключающее ИЛИ (bitwise exclusive OR (XOR))

    »

    Сдвиг вправо (Shift right)

    >>>

    Сдвиг вправо с заполнением старшего бита нулем (Shift right zero fill)

    «

    Сдвиг влево (Shift left)

    &=

    Присваивание с поразрядным И (bitwise AND assignment)

    |=

    Присваивание с поразрядным ИЛИ (bitwise OR assignment)

    ^=

    Присваивание с поразрядным исключающим ИЛИ (bitwise exclusive OR

    »=

    Присваивание со сдвигом вправо (Shift right assignment)

    >>>=

    Присваивание со сдвигом вправо и заполнением старшего бита нулем

    «=

    Присваивание со сдвигом влево (Shift left assignment)


    1.5.4 Операции отношений

    Операции отношений(relational operators) определяют отношения, которые один операнд имеет к другому. В частности, они определяют равенство и упорядочивания. В Java используются операции отношений, представлен­ные в табл. 6.

    Табл. 6

    Операция

    Результат

    =

    Равно

    !=

    Не равно

    >

    Больше чем

    <

    Меньше чём

    <=

    Меньше чем или равно

    >=

    Больше чем или равно


    Результат этих операций — значение типа boolean. Операции отношений часто используются в выражениях, которые управляют условными операто­рами и различными операторами цикла.

    Данные любых Java-типов, включая целые числа, числа с плавающей точ­кой, символы и булевские переменные, можно сравнивать, используя опе­рации проверки равенства (==) и проверки неравенства (!=). Обратите вни­мание, что в Java (как в С и С++) равенство обозначается двумя знаками равенства, а не одним. (Напомним, что одиночный знак равенства (=) ис­пользуется для операции присваивания.) С помощью операций упорядочи­вания (<, >, <=, >=) можно сравнивать только числовые типы (т. е., чтобы увидеть, какой операнд больше или меньше, чем другой, можно сравнивать только целочисленные, с плавающей точкой и символьные операнды).

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

    int а = 4; int b = 1; boolean с = а < b;

    В этом случае результат выражения а < b (который есть false) сохраняет­ся в с.

    Если вы переходите к Java из среды C/C++, обратите внимание на следую­щее. В программах C/C++ часто встречаются следующие типы операторов:

    int done; // ...

    if(!done) ... // Верно в C/C++

    if(done) ... // но не в Java.

    На языке Java эти операторы должны быть записаны так:

    if(done == 0)) ... // Это Java-стиль,

    if(done != 0) ...

    Причина в том, что Java не определяет true и false таким же образом, как C/C++. В C/C++ true — любое значение, отличное от нуля, a false — нуль. В Java true и false — нечисловые значения, которые не имеют отношения к нулю или не нулю. Поэтому, чтобы выполнить проверку на равенство нулю, вы должны явно использовать одну или несколько операций отно­шений.
    1.5.5 Операции булевой логики

    Логические операции работают только с операндами типа boolean. Все логические операции с двумя операндами объединяют два значения типа boolean, образуя результирующее значение типа boolean. Булевские логические опера­ции перечислены в табл. 7.

    Табл. 7.

    Операция

    Результат

    &

    Логическое И (Logical AND)

    |

    Логическое ИЛИ (Logical OR)

    ^

    Логическое исключающее ИЛИ (Logical XOR (exclusive OR))

    ||

    Укороченное ИЛИ (Shirt-ciruit OR)

    &&

    Укороченное И (Shirt-ciruit AND)

    !

    Логическое унарное отрицание (Logical unary NOT)

    &=

    Присваивание с И (AND assignment)

    | =

    Присваивание с ИЛИ (OR assignment)

    ^=

    Присваивание с исключающим ИЛИ (XOR assignment)

    ==

    Равно (Equal to)

    !=

    Не равно (Not equal to)

    ?:

    Троичная условная операция (Ternary if-then-else)


    Пример программы, которая работает с логическими значениями типа boolean:

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

    class BoolLogic {

    pиblic static void main (String args [] )

    boolean а = true;

    boolean b­ = false;

    boolean с ­= а | b;

    boolean d ­= а & b;

    boolean е ­= а ^ b;

    boolean f­ = (!а&b)|(а&!b);

    bооlеаn g ­ = !а;

    Sуstеm.оut.рrintln(“ а ­=" + а);

    Sуstеm.оut.рrintln(" b ­=" + b);

    Sуstеm.оut.рrintln (" a|b = " + с);

    System.out.println(" а&b =" + d);

    System.out.println(" а^b ="+ е);

    Sуstеm.оut.рrintln ("(!а&b)|(а&!b) = " + f);

    System.oиt.println(" !а =" + g);

    ­}

    }

    Выполняя эту программу, легко убедиться, что в java строковое представление значения типа boolean ­ значение одной из символьных констант true или false:

    а ­= true

    b ­= false

    a|b = true

    а&b = false

    а^b = true

    (!а&b)|(а&!b) = true

    !а = false
    1.5.6 Операция присваивания

    Операция присваивания (назначения)(assignment operator) — это одиночный знак равенства (=). Опе­рация присваивания работает в Java во многом так же, как в любом другом машинном языке. Она имеет следующую общую форму:

    var = expression;

    Здесь тип переменной var должен быть совместим с типом выражения ex­pression.

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

    int х, у, z;

    х = у = z = 100; // установить в х, у, и z значение 100

    Этот фрагмент устанавливает в переменных х, у, и z значение 100 с по­мощью одиночной операции присваивания. Это работает, потому что = представляет собой операцию, которая выдает значение правого выражения. Таким образом, значением выражения z=100 является 100, которое присваи­вается переменной у, а затем, в свою очередь, присваивается переменной х. Использование "цепочки присваиваний" — это просто способ установки общего значения в группе переменных.
    1.5.7 Приоритеты операций

    Приоритеты операций jаvа, от высшего к низшему, описаны в табл. 8. В первой строке таблицы указаны элементы, которые, как правило, не считают символами операций: круглые и квадратные скобки и символ точки. С технической точки зрения они являются разделителями, но в выражениях они действуют подобно опера­циям. Круглые скобки используют для изменения порядка выполнения операций, квадратные скобки служат для индексации массивов, а символ точки используется для разыменования объектов.

    Табл. 8.

    Высший приоритет

    ( )

    [ ]

    .




    ++

    --



    !

    *

    /

    %




    +

    -







    >>

    >>>

    <<




    >

    >=

    <

    <=

    ==

    !=







    &










    ^










    |










    &&










    ||










    ?:










    =




    Низший приоритет





    Индивидуальные задания

    Написать программу на java, которая решает задачу:

    1. Дана сторона квадрата a. Найти его периметр P = 4·a и площадь S = a2.

    2. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).

    3. Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значения π использовать 3.14.

    4. Дана длина ребра куба a. Найти объем куба V = a3 и площадь его поверхности S = 6·a2.

    5. Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A ≥ 0 или B < –2».

    6. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

    7. Дано целое число A. Проверить истинность высказывания: «Число A является четным».

    8. Найти длину окружности L и площадь круга S заданного радиуса R: L = 2·π·R, S = π·R2. В качестве значения π использовать 3.14.

    9. Дано целое число A. Проверить истинность высказывания: «Число A является положительным».

    10. Даны два числа a и b. Найти их среднее арифметическое: (а+b)/2.

    11. Даны три неотрицательных числа a, b и с. Найти их среднее арифметическое.

    12. Дано целое число A. Проверить истинность высказывания: «Число A является нечетным».

    13. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

    14. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.

    15. Даны два целых числа: A, B. Проверить истинность высказывания: «Ровно одно из чисел A и B нечетное».

    16. С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток.

    17. С начала суток прошло N секунд (N — целое). Найти количество полных часов, прошедших с начала суток.

    18. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Ровно одно из чисел A, B, C положительное».

    19. С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последней минуты.

    20. С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последнего часа.
    Контрольные вопросы

    1. Какие существуют концепции создания программы?

    2. Сколько простых типов данных в java?

    3. Какие существуют группы простых типов данных? Дать характеристику.

    4. Что такое литерал, виды литералов?

    5. Переменная.

    6. Какие бывают операции? Дать характеристику.


    Рекомендуемая литература

    Основная литература

    1. Шилдт Г., Ноутон П. Java 2. Наиболее полное руководство, 2001.

    2. Павловская Т.А., Щупак Ю.А. C++. Объектно-ориентированное программирование. Практикум. СПб. Питер, 2006.

    3. Г.Шилдт. Полный справочник по Java SE6 2007.

    4. Б.Эккель. Философия Java (4е издание), 2009.

    5. К. Арнольд, Д. Гослинг. Язык программирования Java. Питер Пресс, Санкт-Петербург, 1997.

    Дополнительная литература

    1. М. Эферган Java: справочник .- QUE Corporation, 1997, Издательство "Питер Ком", 1998

    2. Д. Вебер Технология Java в подлиннике .- QUE Corporation, 1996, "BHV-Санкт-Петербург",1997.

    3. Н. Бартлетт, А. Лесли, С. Симкин Программирование на Java. Путеводитель .- The Coriolis Group,Inc.,1996, Издательство НИПФ "ДиаСофт Лтд.",1996

    4. К. Джамса Библиотека программиста Java .- Jamsa Press, 1996, ООО "Попурри", 1996

    5. К. Арнольд, Д. Гослинг Язык программирования Java .- Addison-Wesley Longman,U.S.A.,1996, Издательство "Питер-Пресс", 1997.



    1   2   3   4   5   6   7   8   9   ...   31



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