18088

Технология программирования на языке Java. Работа с массивами в Java

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа 4 Технология программирования на языке Java. Работа с массивами в Java 1. Цель работы Целью работы является приобретение навыков программирования с использованием операторов управления и массивов в языке программирования Java. 2. Состав рабоч

Русский

2013-07-06

561.5 KB

11 чел.

Лабораторная работа 4

Технология программирования на языке Java.

Работа с массивами в Java

1. Цель работы

Целью работы является приобретение навыков программирования с использованием операторов управления и массивов в языке программирования Java.  

  

2. Состав рабочего места

2.1. Оборудование: IBM-совместимый   персональный компьютер (ПК).

2.2. Программное обеспечение: операционная система Windows, Java 2 SDK версии 6.0 и выше, пакет NetBeans IDE 6.1.

3. Краткие теоретические сведения

3.1.1. Технология программирования приложений Java с использованием NetBeans IDE 6.1

3.1.1.1. Установка NetBeans IDE 6.1

Перед установкой NetBeans IDE 6.1 должен быть установлен пакет JDK.

Для установки программы NetBeans IDE 6.1 надо выполнить следующие шаги:

1. Запустить программу установки netbeans-6.1-javaee-windows.exe.

2. Ответить на вопрос, принимаете ли вы условия лицензионного соглашения: включите переключатель "I accept the terms in the license agreement"

3. На вопрос в какой папке установить программу, примите установку по умолчанию (просто нажмите кнопку Next). Программа будет установлена в папке:

 C:\Program Files\NetBeans 6.1

4. Если пакет JDK уже установлен, программа установки сама его найдет и выведет в окне местоположение пакета, например

C:\Program Files\Java\jdk1.6.0_07

После разворачивания IDE в указанной папке процесс установки завершается.

Запуск программы выполняется с помощью команды netbeans.exe (значок ) в папке

C:\Program Files\NetBeans 6.1\bin

Ярлык этой команды устанавливается на рабочем столе, его можно также задать на панели быстрого запуска.

3.1.1.2. Основные сведения об  NetBeans 

Пакет NetBeans IDE 6.1 (в дальнейшем просто NetBeans) является мощным IDE для разработки всех видов приложений, которые поддерживает язык Java, включая не только стандартные приложения Java (Java SE), но и приложения уровня предприятия (Java EE) и уровня портативных устройств (Java ME). Адрес Web-сайта проекта NetBeans:

http://www.netbeans.org/index.html.

Пакет NetBeans  содержит полный набор компонент: редактор, среда компиляции и выполнения, а также отладчик. Пакет работает не с программами, а с проектами.

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

Окно  NetBeans имеет вид, представленный на рис. 3.1.1.

Рис. 3.1.1. Окно NetBeans 

Окно NetBeans имеет стандартный вид: сверху панель заголовка, меню и панель инструментов, снизу строка состояния, в середине окно приложения.

Окно приложения, в свою очередь состоит из трех основных окон:

  •  окно проектов (Projects);
  •  окно редактора
  •  окно вывода (Output).

В окне проектов выводятся проекты, их компоненты – классы, а также компоненты классов: поля, конструкторы и методы. С помощью контекстного меню добавлять новые классы в проект, а также переименовывать и удалять существующие классы, а также выполнять некоторые другие операции.

Окно редактора может содержать несколько вкладок. Открытие новой вкладки можно выполнить либо с помощью команды Open File меню File,  либо двойным щелчком мыши по имени класса (например, Rectangle.java) в окне проектов. Двойной щелчок мыши по имени свойства, конструктора или метода подсвечивает первую строку с определением свойства, конструктора или метода. Щелчок мышью по знаку "×" в наименовании вкладки закрывает вкладку. Символ "*" после имени вкладки означает, что текст вкладки изменен со времени последнего сохранения содержимого.

Результаты выполнения программы выводятся в окне вывода. Кнопка включает/выключает вывод на экран окна вывода.

3.1.1.3. Создание и открытие проекта

Для создания проекта приложения Java необходимо выполнить следующие действия:

1. В меню File выберите команду New Project или нажмите кнопку на панели инструментов.

2. В окне New Project (рис. 3.1.2) выберите в поле Properties папку General, а в поле Projects пункт Java Application и нажмите кнопку Next.

3. В окне New Java Application (рис. 3.1.3) в поле Project Name задайте имя проекта, в поле Project Location задайте имя папки, в которой будет находиться проект (используйте имя своей папки на компьютере – ограничение: желательно, чтобы путь к папке не содержал букв кириллицы).

4. Включите переключатель Set as Main Project (если он не включен).

5. Включите переключатель Set Main Class (если он не включен) и задайте имя главного  класса – того   класса,   который   содержит   метод main() (можно оставить   имя-проекта.Main), а затем нажмите кнопку Finish.

Рис. 3.1.2. Окно New Project 

Рис. 3.1.3. Окно New Java Application

3.1.1.4. Операции над проектом

Существующий проект открывается с помощью команды Open Project меню File, либо при нажатии кнопки на панели инструментов.

При создании проекта для него создаются служебные файлы, которые составляют неотъемлемую часть проекта. Поэтому для операций перемещения, копирования, переименования и удаления проекта необходимо пользоваться не средствами операционной системы, а командами Move Project, Copy Project, Rename Project и Delete Project контекстного меню проекта.

3.1.1.5. Добавление файла в проект

Если проект содержит более одного файла, то добавления файла в этот проект нужно выполнить следующие действия:

1. Выполнить команду New File в меню File или нажать кнопку на панели инструментов.

2. В поле Categories окна New File (рис. 3.1.4) выбрать категорию файла, например, для нового класса, папку Java Classes.

3. В поле File Types выбрать тип файла, например, Java Class и нажать кнопку Next.

4. После этого выводится второе окно запроса на создание нового файла. Компоненты этого окна зависят от категории и типа файла. Так для нового класса окно запроса New Java Class имеет вид, представленный на рис. 3.1.5. В этом окне достаточно задать имя нового класса (поле Class Name) – все остальные поля заполняются автоматически. После нажатия кнопки Finish в окне редактора выводится шаблон для соответствующего вида файла (кроме файлов типа Java Empty Class).

Рис. 3.1.4. Окно New File

Рис. 3.1.5. Окно New Java Class

Новый класс можно также создать следующим образом:

1. Вызвать в окне Projects контекстное меню для имени проекта в папке Source Packages.

2. В контекстном меню выбрать команду New.

3. В меню команды New выбрать команду Java Class.

4. В окне New Java Class (рис. 3.1.5) задать имя нового класса.

3.1.1.6. Операции над файлом

Существующий файл открывается с помощью команды Open File меню File, либо помощью команды Open контекстного меню файла.

Операции перемещения, копирования, вставки, переименования и удаления файла выполняются с помощью команд Move, Copy, Paste, Rename и Delete контекстного меню файла.

3.1.1.7. Работа в окне редактора

3.1.1.7.1. Инструментальные средства редактирования

Инструментальные средства редактирования NetBeans включают в себя:

  •  набор инструментов редактирования;
  •  панель редактирования;
  •  средство вывода номеров строк исходного файла.

Набор инструментов редактирования выводится на панели инструментов с помощью включения команды Edit в подменю команды Toolbars меню View.

В набор входят следующие инструменты:

  •  кнопка Cut  (Вырезать) – для переноса выделенного содержимого в буфер обмена (можно также использовать клавиши Ctrl+X);
  •  кнопка Copy  (Копировать) – для копирования выделенного содержимого в буфер обмена (можно также использовать клавиши Ctrl+C);
  •  кнопка Paste  (Вставить) – для вставки содержимого буфера обмена в позицию курсора (можно также использовать клавиши Ctrl+V);
  •  кнопка Undo  (Отменить последнее действие) – для отмены последней операции по редактированию текста (можно также использовать клавиши Ctrl+Z);
  •  кнопка Redo  (Повторить последнее отмененное действие) – для повторения отмены последней отмененной операции по редактированию текста (можно также использовать клавиши Ctrl+Y).

Все эти команды есть также в меню Edit.

Отдельная панель редактирования включается/выключается с помощью команды Show Editor Toolbar меню View и имеет вид, представленный на рис. 3.1.6.

Вывод номеров строк файла исходного текста включается/выключается с помощью команды Show Line Numbers меню View.

Набор и редактирование текста вкладки в окне редактора выполняется так же, как и в других текстовых редакторах.

Однако поскольку редактор NetBeans является специализированным текстовым редактором, он имеет следующие дополнительные возможности:

  •  использование шаблонов для разных типов исходных файлов;
  •  завершение парного ввода;
  •  свертка/развертка блоков;
  •  использование сокращений при вводе часто встречающихся элементов исходного текста;
  •  динамическая компиляция текста.

 

Рис. 3.1.6. Панель редактирования окна редактора

3.1.1.7.2. Использование шаблонов

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

  •  Java Class – задает шаблон обычного класса Java с пустым конструктором без параметров;
  •  Java Empty Class – не задает никакого шаблона (можно использовать, например, для задания файла исходных данных);
  •  Java Interface – задает шаблон интерфейса Java;
  •  Java Enum – задает шаблон класса перечислимых переменных;
  •  Java Annotation Typeзадает шаблон аннотаций;
  •  Java Exception – задает шаблон класса Java для описания пользовательского исключения;
  •  Java Main Class – задает шаблон головного класса Java с пустым конструктором без параметров и пустым методом main();
  •  Java Package Info – задает шаблон описания пакета Java;
  •  JApplet – задает шаблон апплета Swing с пустым конструктором;
  •  Applet – задает шаблон апплета Java с пустым методом init();
  •  Java Package – задает новую пустую папку для пакета Java.

3.1.1.7.3. Завершение парного ввода

Некоторые элементы языка Java обязательно должны быть парными. Так, если в тексте вводится символ "(", то ему обязательно должен соответствовать символ  ")".  Это же касается символов "{" и "}", "'" и "'", а также '"' и '"'. Поэтому, когда вводится открывающий символ для одной из этих пар, редактор автоматически вставляет закрывающий символ пары.

Кроме этого, редактор автоматически начинает новую строку, если нажать клавиши Shift+Enter перед завершающим символом пары.

Если внутри набираемой строки, ограниченной символами '"' , нажать клавишу Enter, то новая строка начнется с символа '"', а в конце предыдущей строки будет вставлен символ завершения строки '"' и символ конкатенации строк "+".

3.1.1.7.4. Свертка/развертка блоков

Некоторые части исходного текста можно сворачивать и разворачивать.

Это могут быть:

  •  комментарии в начале класса;
  •  блоки предложений импорта;
  •  комментарии Javadoc;
  •  конструкторы и методы;
  •  внутренние классы.

Такие части исходного текста помечаются слева специальными графическими символами, отмечающими начало и конец блока (рис. 3.1.7а). Если щелкнуть мышью по знаку "-" в квадратике, то блок свернется и в квадратике появится знак "+" (рис. 3.1.7б). При щелчке мышью  по знаку "+" блок опять развернется.

Рис. 3.1.7. Свертка и развертка блоков: а) конструктор Rectangle и

метод perimeter развернуты; б)  метод perimeter свернут

3.1.1.5.5. Использование сокращений

При вводе текста в редакторе NetBeans можно использовать сокращения. Замена сокращения его полной формой (шаблоном) выполняется одни из двух способов:

  •  простая замена сокращения шаблоном;
  •  замена с выбором из возможных вариантов шаблона для данного сокращения.

При простой замене сокращения, приведенные в табл. 3.1.1, заменяются своими шаблонами, если после ввода сокращения нажать клавиши Shift+Пробел.

Таблица 3.1.1. Наиболее часто используемые сокращения и соответствующие им шаблоны

Сокра-

щение

Шаблон

Сокра-

щение

Шаблон

En

Enumeration

Ex

Exception

Ob

Object

Psf

public static final

Psfb

public static final boolean

Psfi

public static final int

Psfs

public static final String

St

String

ab

abstract

bo

boolean

br

break

ca

catch (

cl

class

cn

continue

df

default:

dowhile

do {

       

} while (condition);

eq

equals

ex

extends

fa

false

fi

final

fl

float

forc

for (Iterator it = collection.iterator(); it.hasNext();) {

   Object elem = (Object) it.next();

       

}

fore

for (Object elem : iterable) {

}

fori

for (int i = 0; i < SCRAMBLED_WORD_LIST.length; i++) {

}

fy

finally

ie

interface

ifelse

if (condition) {

} else {

}

im

implements

iof

instanceof

ir

import

le

length

newo

Object name = new Object(args);

pe

protected

pr

private

psf

private static final

psfb

private static final boolean

psfi

private static final int

psfs

private static final String

pst

printStackTrace();

psvm

public static void main(String[] args) {

}

pu

public

re

return

serr

System.err.println("|");

sout

System.out.println("|")

st

static

sw

switch (

sy

synchronized

tds

Thread.dumpStack();

th

throws

trycatch

try {

} catch (Exception e) {

}

tw

throw

twn

throw new

wh

while (

whilei

   while (it.hasNext()) {

       Object elem = (Object) it.next();

       

   }

Шаблоны можно редактировать и удалять, а также можно добавлять новые шаблоны. Для этого необходимо в меню Tools выбрать команду Options и в окне этой команды нажать кнопку Editor, а затем в окне редактора выбрать вкладку Code Templates.

Для редактирования существующего сокращения надо в поле Templates выбрать сокращение, а затем в поле Expanded Text изменить существующий шаблон.

Для удаления сокращения надо в поле Templates выбрать сокращение, а затем нажать кнопку Remove.

Для добавления сокращения надо нажать кнопку New, а затем в диалоговом окне New Code Template Dialog в поле Abbreviation ввести новое сокращение и нажать кнопку OK. После этого в поле  Expanded Text вводится новый шаблон.

Для возможности вывода справок для элементов языка необходимо подключить к пакету NetBeans документацию по языку (как указывалось выше папка docs с документацией помещается в папку jdkномер-версии). Для этого в меню Tools надо выбрать команду Options и в окне этой команды нажать кнопку Java Platforms, а затем в окне Java Platform Manager выбрать вкладку Javadoc (рис. 3.1.8) и, после нажатия кнопки Add ZIP/Folder выбрать папку  docs в папке

c:\Program Files\Java\ jdkномер-версии.

Рис. 3.1.8. Подключение папки с документацией к NetBeans

Чтобы выполнить замену с выбором, необходимо набрать начальные символы шаблона и нажать клавиши  Ctrl+Пробел. После этого над окном редактором появится окно выбора. Если выбранный пункт с помощью щелчка мыши пункт является объектом, полем или методом библиотеки Java, для него выводится справка, как это показано на рис. 3.1.9 для сокращения Str.

Удалить окна выбора и справки можно, нажав клавишу Esc.

Рис. 3.1.9. Вывод справки для объекта String

3.1.1.5.6. Динамическая компиляция текста

При выполнении программы в режиме командной строки, а также во многих IDE, после набора и/или редактирования текста исходный файл запускается на компиляцию. Если в программе содержатся синтаксические ошибки, они передаются в выводной поток ошибок (в Java это объект System.err).  В редакторе NetBeans BlueJ используется так называемая динамическая компиляция, когда исходный файл компилируется каждый раз при изменении текста программы. Так, например, в примере на рис. 3.1.10 в предложении в строке 28 содержатся ошибки (не определена переменная m в классе Rectangle и, кроме того, в предложении отсутствует заключительный символ ";"). В этом случае, как видно из рисунка, слева от предложения появляется символ (если включена нумерация строк, этот символ заменяет номер строки). Если навести курсор мыши на красный квадратик, появляется подсказка, коротко объясняющая ошибку.  После устранения ошибок красный квадратик исчезает.

Рис. 3.1.10. Пример синтаксической ошибки

Другой пример ошибки, связанный с преобразованием типов, приведен на рис. 3.1.11. В предложении в строке 31 слева от знака равенства стоит целая переменная типа int, а справа (см. строку 27) – элемент строкового массива args. Чтобы исправить ошибку необходимо заменить предложение в строке 31 следующим предложением:

int m = Integer.parseInt(args[0]);

Рис. 3.1.11. Пример ошибки преобразования

Наличие или отсутствие ошибок в открытом файле можно определить по цвету квадратика в правом верхнем углу редактора: при наличии ошибок квадратик красный (), при отсутствии – зеленый ().

Сохранить отредактированный исходный файл можно либо с помощью команды Save в меню File, либо при нажатии клавиш Ctrl+S. Все открытые файлы сохраняются с помощью команды Save All в меню File, либо при нажатии кнопки на панели инструментов.

3.1.1.8. Сборка проекта

Сборкой называется компиляция файлов исходного проекта и создание файлов, содержащих байт-коды классы проекта (это файлы с расширением .class). Средства управления проектом компилируют только те классы проекта, которые были изменены во время последнего редактирования.

Сборка проекта выполняется либо с помощью команды Build Main Project в меню Build, либо с помощью команды Build Project в контекстном меню проекта в окне  Projects, либо при нажатии клавиши F11, либо при нажатии кнопки на панели инструментов.

Результаты сборки выводятся в окне Output. Если файлы проекта содержат синтаксические ошибки, выводятся сообщения об ошибках. Так, для ошибки, приведенной на рис. 3.1.10, вывод будет иметь следующий вид:  

Trying to override old definition of task java

Created dir: G:\javaProgs\GCDSearch\build\classes

Compiling 1 source file

to G:\javaProgs\GCDSearch\build\classes

G:\javaProgs\GCDSearch\src\gcdsearch\Main.java:36: ';' expected

       int x1 = m

1 error

BUILD FAILED (total time: 0 seconds)

Если щелкнуть мышью по ссылке для ошибки, курсор в окне редактора будет установлен в строке, содержащей данную ошибку.

В случае успешной сборки последней выводимой строкой будет строка:

BUILD SUCCESSFUL (total time: 0 seconds)

Можно также очистить проект (обычно эта операция выполняется, если из проекта удаляются какие-либо файлы). При этом удаляются папки, содержащие файлы классов проекта (папка classes),  управляющие файлы проекта (папка build), а также некоторые вспомогательные файлы (папка dist). Чистка проекта  выполняется с помощью команды Clean Project в контекстном меню проекта в окне  Projects.

Сборка с чисткой выполняется либо с помощью команды Clean and Build Main Project в меню Build, либо с помощью команды Clean and Build Project в контекстном меню проекта в окне  Projects, либо при нажатии клавиш Shift+F11, либо при нажатии кнопки на панели инструментов.

Можно выполнить компиляцию отдельного файла проекта, если выделить этот файл в окне Projects, а затем либо выполнить команду Compile имя-файла в меню Build, либо выполнить команду  Compile в контекстном меню файла, либо нажать клавишу F9.

По умолчанию, при сборке используются исходные файлы, размещенные в папке src проекта, а для тестирования – файлы в папке test. Если необходимо указать дополнительные исходные файлы или файлы тестирования, надо вызвать контекстное меню для проекта и выполнить команду Properties. В диалоговом окне этой команды в поле Categories выбрать Source, а затем в правой половине окна нажать кнопку Add Folder для добавления новой папки с исходными файлами или файлами тестирования.

По умолчанию, при сборке используются стандартная библиотека JDK, подключенная к NetBeans. При необходимости подключения дополнительных библиотек надо вызвать контекстное меню для проекта и выполнить команду Properties. В диалоговом окне этой команды в поле Categories выбрать Libraries, а затем в правой половине окна выбрать одну из вкладок: Compile (библиотеки времени компиляции), Run  (библиотеки времени выполнения), Compile Tests (библиотеки тестирования времени компиляции), Run  Tests (библиотеки тестирования времени выполнения), затем нажать одну из кнопок: Add Project (добавление проекта), Add Library (добавление библиотеки) или Add JAR/Folder (добавление архива или папки). После этого выбирается требуемый проект, библиотека, архив или папка и нажимается кнопка OK.

Если при сборке необходимо указать дополнительные опции компилятора, необходимо вызвать контекстное меню для проекта и выполнить команду Properties. В диалоговом окне этой команды в поле Categories выбрать Compile, а затем в поле Additional Compile Options ввести строку дополнительных опций.

При сборке можно также указать, какие пакеты следует исключить из создаваемого архивированного файла программы Java (с расширением .jar). Для этого надо вызвать контекстное меню для проекта и выполнить команду Properties. В диалоговом окне этой команды в поле Categories выбрать Packaging, а затем в поле Exclude From JAR File задать пакеты, которые надо исключить из архивированного файла.

Выбор Documentation в поле Categories команды Properties контекстного меню для проекта позволяет указать параметры генерации документации Javadoc для проекта.

3.1.1.9. Выполнение проекта

Выполнение проекта осуществляется либо с помощью команды Run Main Project в меню Run, либо с помощью команды Run Project в контекстном меню проекта в окне  Projects, либо при нажатии клавиши F6, либо при нажатии кнопки на панели инструментов.

Дополнительные опции для проекта перед его выполнением можно указать, если вызвать контекстное меню для проекта и выполнить команду Properties, а затем в диалоговом окне этой команды в поле Categories выбрать Run (рис. 3.1.12).

В правой половине окна можно задать следующие операции:

  •  задать другой главный класс с помощью поля Main Class и кнопки Browse;
  •  задать аргументы вызова программы в поле Arguments;
  •  задать рабочий каталог программы с помощью поля Working Directory и кнопки Browse;
  •  задать дополнительные опции виртуальной машины Java (JVM) в поле VM Options.

Рис. 3.1.12. Диалоговое окно категории Run команды Properties 

контекстного меню пакета

3.1.1.10. Отладка проекта

При работе в режиме отладки в NetBeans доступны следующие основные возможности:

  •  установка точек прерывания;
  •  пошаговое выполнение программы;
  •  слежение за переменными программы.

3.1.1.10.1. Установка точек прерывания

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

В NetBeans можно определить точки прерывания для строки, а также точки прерывания для следующих элементов:

  •  класса (когда класс загружается в JVM, когда класс выгружается из JVM или когда выполняется загрузка/выгрузка класса);
  •  исключения (когда исключение обрабатывается, когда исключение не обрабатывается или когда оно просто встречается в программе);
  •  переменной (когда выполняется доступ к переменной);
  •  метода (при начале выполнения метода);
  •  вычислительного потока (thread) (когда поток начинает выполняться,  когда выполнение потока прекращается или когда поток начинается/заканчивается).

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

  •   – одиночная точка прерывания;
  •   – отключенная точка прерывания;
  •   – множественные точки прерывания;
  •   – условная точка прерывания;
  •   – отключенная условная точка прерывания;
  •   – счетчик программы;
  •   – счетчик программы и одиночная точка прерывания;
  •   – счетчик программы и множественные точки прерывания;
  •   – место в исходной программе, откуда был сделан вызов.

Для установки строковой точки прерывания щелкните в рамке слева от строки или нажмите клавиши Ctrl+F8.

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

  •  выделите элемент, для которого должна быть задана точка прерывания (например, имя класса, имя метода или имя переменной);
  •  выполните в меню Run команду New Breakpoint или нажмите клавиши Ctrl+Shift+F8;
  •  в диалоговом окне команды New Breakpoint выберите в поле Breakpoint Type тип прерывания: Class (класс), Exception (исключение), Method (метод), Thread (поток) или Field (поле);
  •  установите в диалоговом окне требуемые параметры в зависимости от выбранного типа прерывания и нажмите кнопку OK (на рис. 3.1.13 приведен пример установки прерывания для переменной minValue при ее изменении – Field Modification).

Рис. 3.1.13 . Установка параметров для точки прерывания типа Variable 

Для изменения параметров существующей точки прерывания надо в меню Window выбрать команду Debugging и в подменю этой команды выбрать команду Breakpoints. В открывшемся внизу окне Breakpoints (рис. 3.1.14) можно выполнить следующие операции над точкой прерывания:

  •  изменить параметры точки прерывания с помощью двойного щелчка мыши по ней (будет открыто окно Customize Breakpoint, идентичное окну New Breakpoint);
  •  включить/выключить точку прерывания с помощью переключателя Enable;
  •  удалить точку прерывания с помощью команды Delete контекстного меню.

Рис. 3.1.14. Окно Breakpoints

Включить/выключить строковую точку прерывания можно, если вызвать для нее контекстное меню и в команде Breakpoint выбрать опцию Enabled. Строковая точка прерывания удаляется, если щелкнуть мышью по ее значку.

Для установки условной точки прерывания необходимо в поле Condition диалогового окна New Breakpoint или Customize Breakpoint (рис. 3.1.13) задать условие с использованием синтаксиса Java (например, minValue < 0, т.е. прерывание программы происходит только в том случае, если значение minValue меньше 0).

3.1.1.10.2. Пошаговое выполнение программы

При работе в режиме отладки рекомендуется вывести в панели инструментов панель Debug с помощью включения опции Debug команды Toolbars меню View.

Запуск проекта в режиме отладки выполняется с помощью команды Debug Main Project меню Run или при нажатии клавиши F5. Запустить  проект в режиме отладки можно также с помощью команды Debug Project контекстного меню проекта.

Отдельный файл проекта можно также запустить в отладочном режиме с помощью команды Debug File контекстного меню файла.

При запуске программы в режиме отладки программа выполняется до первой точки прерывания или до конца, если в программе нет точек прерывания.

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

  •  продолжить выполнение программы до следующей точки прерывания или до конца программы (если точек прерывания больше нет);
  •  продолжить выполнение программы до строки, в которой находится курсор;
  •  выполнить следующее предложение программы и остановить выполнение.

Для продолжения работы программы  до следующей точки прерывания или до конца программы надо либо выполнить команду Continue в меню Run, либо нажать на клавиши Ctrl+F5, либо нажать на кнопку на панели инструментов.

Чтобы продолжить выполнение программы до строки, в которой находится курсор, необходимо установить курсор в требуемую строку и либо выполнить команду Run to Cursor в меню Run, либо нажать на клавишу F4, либо нажать на кнопку на панели инструментов.

Выполнение следующего предложения программы и затем приостановку выполнения можно выполнить с помощью одной из трех команд меню Run:

  •  команда Step Over – выполняет одну строку исходного текста, но если строка содержит вызов метода, выполняет вызов данного метода как одно предложение (эту команду можно выполнить также с помощью клавиши F8 или кнопки на панели инструментов);
  •  команда Step Into – выполняет одну строку исходного текста, но если строка содержит вызов метода, переходит в метод и приостанавливает выполнение перед первым исполняемым предложением метода (эту команду можно выполнить также с помощью клавиши F7 или кнопки на панели инструментов);
  •  команда Step Out – выполняет одну строку исходного текста, но если строка содержится в вызванном методе, выполняет все оставшиеся  предложения метода и возвращает управление в метод, вызвавший данный метод (эту команду можно выполнить также с помощью клавиши Ctrl+F7 или кнопки на панели инструментов).

Информации о ходе выполнения отладки выводится во вкладке Debugger Console окна Output (рис. 3.1.15). Щелчок мыши по ссылке вкладки вызывает переход к строке, вызвавшей прерывание в окне редактора программы.

Рис. 3.1.15. Вкладка Debugger Console окна Output

Прекратить выполнение программы в режиме отладки можно либо выполнив команду Finish Debugger Session в меню Run, либо нажав на клавиши Shift+F5, либо нажав на кнопку на панели инструментов.

3.1.1.10.3. Слежение за переменными программы

При отладке текущие значения локальных переменных можно получить в окне Local Variables (рис. 3.1.16), которое выводится на экран при включении опции Local Variables в команде Debugging меню Window. Текущее значение локальной переменной можно при необходимости изменить, если нажать кнопку справа от значения переменной.

Рис. 3.1.16. Окно Local Variables

Текущее значение переменной можно также получить, если навести курсор мыши на имя переменной в окне редактора (рис. 3.1.17).   

Рис. 1.3.17. Получение текущего значения переменной arraySum

Чтобы  отследить значения какой-либо переменной или выражения при выполнении программы надо используются так называемые наблюдаемые переменные (watches).

Наблюдаемые переменные выводятся в окне Watches (рис. 3.1.18), которое выводится на экран при включении опции Local Variables в команде Debugging меню Window.

Чтобы создать наблюдаемую переменную или выражение, надо выделить их в окне редактора и либо выполнить для этой переменной команду New Watch контекстного меню, либо выполнить команду меню Run, либо нажать кнопку  на панели инструментов, а затем нажать кнопку OK в диалоговом окне команды (рис. 3.1.19).

Рис. 3.1.18. Окно Watches

Рис. 3.1.19. Создание наблюдаемой переменной

Значение наблюдаемой переменной можно изменить тем же способом, что и значение локальной переменной.

Удалить наблюдаемую переменную можно с помощью команды Delete контекстного меню переменной в окне Watches.

3.2. Оформление программы на языке Java

Рекомендации по оформлению программ изложены в документе «Соглашения по кодированию для языка программирования Java» (Code Conventions for the Java Programming Language).

Программа на языке Java записывается в текстовом виде и состоит из вводимых элементов. Программа разбивается на строки. Символами окончания строки являются либо один из символов CR (Carriage Return – возврат каретки) (код 0C) или LF (Line Feed – переход на новую строку) (код 0A), либо последовательность из этих двух символов. Эти символы служат для текстового редактора указанием вывода следующей за ними информации с новой строки и обычно не выводятся.

Вводимые элементы могут быть следующих типов: пробельные символы, комментарии и элементы программы (tokens).

Пробельные символы и комментарии являются разделителями между элементами программы. Элементы программы могут отделяться друг от друга одним или несколькими разделителями.

Пробельными символами, помимо пробела (код 20) являются: символ горизонтальной табуляции (код 09), символ вертикальной табуляции (код 0B), перевод формата (код 0D) и символы окончания строки.

Способы записи комментариев в Java рассмотрены далее.

Элементами программы являются: ключевые слова, идентификаторы, константы (литералы), разделители и операции. Символы верхнего и нижнего регистра в ключевых словах и идентификаторах считаются разными символами.

В спецификации 3.0 определены следующие ключевые слова:

abstract

default

if

protected

throws

assert

do

implements

public

transient

boolean

double

import

return

try

break

else

instanceof

short

void

byte

enum

int

static

volatile

case

extends

interface

strictfp

while

catch

final

long

super

char

finally

native

switch

class

float

new

synchronized

const

for

package

this

continue

goto

private

throw

Ключевые слова const и  goto не используются в Java. Они введены лишь для того, чтобы сгенерировать сообщение об ошибке компиляции при появлении этих ключевых слов C++ в программе.

Идентификаторами называют имена, присваиваемые различным элементам программы. Идентификаторы в языке Java строятся из символов стандарта Unicode.

Каждый символ по стандарту Unicode кодируется 16 битами (2 байта), в отличие от  стандарта ASCII, использующего 8-битовую кодировку (1 байт).

Согласно спецификации Java, идентификаторы должны состоять из букв и цифр (без пробелов), причем первым символом не должна быть цифра. Идентификаторы не должны совпадать с ключевыми словами, булевскими константами true и false, а также переменной null.   Буква может быть любым буквенным символом Unicode (в том числе и буквой кириллицы – только для версии Multilanguage). Следует однако отметить, что буква K латинского алфавита и буква К кириллицы считаются разными буквами.  Идентификатор, согласно спецификации, может иметь произвольную длину.

Кроме того, для совместимости с ранними версиями Java буквами считаются символ подчеркивания "_" и символ доллара "$".

Примеры правильных идентификаторов Java:

A1  myMethod  GREEN_COLOR    переключатель

Константы представляют значения одного из примитивных типов, типа String (строковые константы). Значение null также является константой.

Разделителями в Java являются следующие 9 символов:

  •  ( – открывающая круглая скобка;
  •  ) – закрывающая круглая скобка; 
  •  { – открывающая фигурная скобка; 
  •  } – закрывающая фигурная скобка;  
  •  [ – открывающая квадратная скобка;
  •  ] – открывающая квадратная скобка;
  •  ; – точка с запятой;
  •  , – запятая;
  •  . – точка.

Операции Java – это символы унарных и бинарных операций (арифметических, логических, операций отношения и присваивания), символы составных операций (типа "+="), а также символы "?" и ":" условного оператора.

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

Операторы Java, как и операторы языка C, могут образовывать блоки. Операторы блока  заключаются в символы "{" и "}". Символ  ";" после завершения блока (символа "}") ставить не надо.

Комментарии в языке Java можно оформлять одним из следующих способов:

1. /* текст */

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

2. // текст

Весь текст, следующий после символов "//" до конца строки, игнорируется.

В Java существует еще один тип комментариев, используемый для автоматического документирования программы – комментарии Javadoc (этот тип комментариев будет рассмотрен позднее).

3.3. Структура приложения Java и простой ввод-вывод 

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

public static void main(String args[])

{  

 тело-метода

}

Метод main запускается первым при выполнении программы. В массиве строковых переменных args в программу передаются параметры, заданные при запуске программы (первый параметр – в нулевом элементе массива, второй в первом и т.д.). Описание массива в параметрах метода main является обязательным, даже если параметры не обрабатываются в программе.

Параметры, задаваемые в командной строке, можно использовать для ввода данных в программу.

Для вывода результатов выполнения программы и диагностических сообщений на дисплей в классе System пакета java.lang описаны два потоковых объекта класса PrintStream:

public static final PrintStream out

и

public static final PrintStream err

Поскольку это статические объекты, их можно использовать в программах, не создавая собственных потоковых объектов, и в то же время им доступны методы класса для вывода данных (обычно используются методы print() и println()).  

При вызове методов print() и println() может быть задан аргумент типа String, char, char[], int, long, float, double, boolean и Object, например:

int i = 10;

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

На дисплей будет выведена строка: i=10.

Единственное различие между методами print() и println() заключается в том, что последний всегда добавляет символ перевода строки ко всему, что выводит на дисплей, а первый остается на той же строке. Если нужно перейти на новую строку, можно вызвать println() без параметров.

Выполнение программы заканчивается, когда выполнен последний оператор программы или если в программе произошла ошибка (в этом случае объект System.err выводит на дисплей диагностические сообщения).

Выполнение программы можно также завершить с помощью следующего метода класса System:

public static void exit(int status)

Параметр status задает значение кода завершения программы, например:

boolean progError;

if (progError)

System.exit(5);

По умолчанию программа заканчивается с нулевым кодом завершения. Можно задать для параметра status ненулевой код завершения, который может быть проанализирован операционной системой или командным файлом.

3.4. Реализация объектно-ориентированного подхода в Java

Объявление класса в Java имеет следующий формат:

class идентификатор-класса 

{

 тело-класса

}

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

MyFirstClass.

В теле класса (и только в теле класса) определяются его переменные и методы.

Таким образом, программа на языке Java представляет собой объявления одного или нескольких классов. Каждый класс в программе компилируется в отдельный файл с именем идентификатор-класса.class.

В издания Java 2 входят сотни классов, которые можно использовать при создании программ. Кроме того, при разработке программ создаются и свои классы, число которых может быть довольно большим. Поэтому  разработчики Java включили в язык дополнительную конструкцию –  пакеты (packages). Все классы Java распределены по пакетам (обычно по функциональному признаку, например, классы-утилиты или классы ввода-вывода). Кроме классов пакеты могут включать в себя разновидность классов – интерфейсы (будут рассмотрены позднее) и вложенные подпакеты (subpackages). В результате образуется древовидная структура пакетов и подпакетов.

Эта структура в точности соответствует древовидной структуре файловой системы. Все файлы с расширением .class (содержащие байт-коды), образующие пакет, хранятся в одном каталоге, а подпакеты хранятся в подкаталогах этого каталога.

Пакет однозначно идентифицируется своим именем, перед которым, отделенные друг от друга точкой, идут имена всех пакетов, находящихся выше данного пакета в уровнях иерархии. Например, имя пакета:

java.awt.event

обозначает имя подпакета event, находящегося в подпакете awt, который, в свою очередь, находится в пакете java, а имя:

javax.swing.event

обозначает имя другого подпакета с тем же именем event, но который находится в подпакете swing пакета javax.

Каждый пакет образует одно пространство имен (namespace). Это означает, что все имена классов, интерфейсов и подпакетов в пакете должны быть уникальны. Имена в разных пакетах могут совпадать, но это будут разные программные единицы. Таким образом, ни один класс, интерфейс или подпакет не может оказаться сразу в двух пакетах. Если надо использовать два класса с одинаковыми именами из разных пакетов, то имя класса уточняется именем пакета: пакет.класс. Такое уточненное имя называется полным именем класса (fully qualified class name). Например, имя

java.util.Date

указывает на класс Date в пакете java.util, а имя

java.sql.Date

указывает на другой класс с тем же именем Date, но в пакете java.sql.

При компиляции необходимые для выполнения программы классы пакетов Java, за исключением пакета java.lang, автоматически не включаются. Для того, чтобы сделать их доступными в программе на языке Java, можно либо указывать полное имя класса, либо использовать оператор или операторы  import с именем пакета и именем используемого класса данного пакета, например:

import java.util.Date;

делает доступным программе класс Date из пакета java.util. (в этом случае класс доступен в программе просто по своему имени Date).

Если необходимо использовать несколько классов или интерфейсов из пакета, обычно вместо имени класса или интерфейса ставится символ "*", что указывает, что данной программе будут доступны все классы и интерфейсы данного пакета, например, оператор:

import java.awt.*;

делает доступными программе все классы из пакета java.awt.  

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

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

public class publicClass

{

// Тело класса

}

3.5. Типы данных и объявления переменных

В Java определено две категории данных:

  •  примитивные типы (primitive types);
  •  ссылочные типы (reference types).

Существует также специальный нулевой тип, тип выражения null, который не имеет имени.

Примитивные типы делятся на булевский тип (boolean) и числовые типы. В свою очередь, числовые типы – это целые типы (byte, short, int, long и char) вещественные типы (float и double). Ссылочные типы – это типы классов, интерфейсов и массивов.

Объявление переменных (за исключением массивов) в Java имеет следующий вид:

имя-типа идентификатор-переменной;

например:

int x;

String string1;

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

имя-типа идентификатор-переменной-1, идентификатор-переменной-2,;

например:

int x1, x2, x3;

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

double inputValue;

Переменная является указанием места хранения значения переменной в памяти. Переменная примитивного типа всегда содержит значение переменной указанного типа (например, int), а переменная ссылочного типа хранит ссылку (адрес) объекта указанного типа.  

Создавать новые переменные можно в любом месте программы.

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

В отличие от языка C, во внутреннем блоке нельзя объявлять переменную с таким же именем, как во внешней области действия.

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

Изменить область действия и время жизни переменной можно с помощью модификаторов доступа. Модификаторы вставляются в объявление переменной перед именем-типа.

По умолчанию (без модификатора) переменная доступна только классам в том же пакете, что и класс, в котором она содержится.

Модификатор public определяет, что переменная доступна как внутри, так и вне класса, т. е. переменная является глобальной и доступна любому другому объекту.

Модификатор private, наоборот, означает, что переменная доступна только в том классе, в котором она была объявлена.

Модификатор final определяет, что переменная имеет постоянное (неизменное) значение и не может быть переопределена.

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

3.6. Примитивные типы Java

Как уже говорилось, в Java определены следующие примитивные типы:

  •  целые типы;
  •  вещественные типы;
  •  булевский тип.

За оператором объявления примитивной переменной может следовать оператор инициализации "=", с помощью которого созданной переменной присваивается начальное значение.

3.6.1. Целые типы переменных 

Целые типы различаются по размеру отведенной для них памяти. Характеристики целочисленных типов приведены в табл. 3.1.2.

Таблица 3.1.2. Характеристики целочисленных типов Java

Тип

Размер (бит)

Минимальное значение

Максимальное значение

byte

8

-128

127

short

16

-32768

32767

int

32

-2147483648

2147483647

long

64

-922372036854775808

922372036854775807

char

16

0

65536

Как видно из приведенной таблицы, целые переменные, за исключением типа char,  считаются в языке Java переменными со знаком, т.е. первый бит в двоичном представлении числа всегда является знаковым (0 для положительных чисел и 1 – для отрицательных). Переменные типа char являются переменными без знака, т.е. все биты в двоичном виде представляют число (таким образом могут быть заданы только положительные числа).   

Целочисленные константы могут задаваться в программе одним из трех способов: в виде десятичных, шестнадцатеричных и восьмеричных значений. По умолчанию все числа интерпретируются как десятичные и относятся к типу int. Явно указать принадлежность к типу long можно, добавив в конце числа букву "l" или букву "L".

Шестнадцатеричное значение задается с помощью символов "0x" или "0X", за которым значение числа (цифры 0-9 и буквы A-F или a-f), например: 0x7FFF.

Число в восьмеричной записи должно начинаться с нуля, за которым следует одна или несколько восьмеричных цифр, например  077777.

Восьмеричные и шестнадцатеричные числа могут быть как положительными, так и отрицательными и изменяются в тех же диапазонах, что и числа в десятичном представлении (например, шестнадцатеричные числа типа byte имеют максимальное значение 0x7F и минимальное значение -0x80, а восьмеричные – соответственно 177 и -200)

Символы в Java определяются с помощью ключевого слова char и реализованы с использованием стандарта Unicode.  Можно задать константу-символ в программе или как обычный символ. Символьное значение должны быть заключено в пару одиночных апострофов.

Другой способ записи символов: пара символов "\u", за которой следует четырехзначное шестнадцатеричное число (в диапазоне от 0000 до FFFF), представляющее собой код символа в Unicode.

Некоторые символы, отсутствующие на клавиатуре, можно задавать с помощью так называемых escape-последовательностей, содержащих символ "\", за которым следует буквенный символ, идентифицирующий escape-последовательность, как показано в табл. 3.1.3.

Таблица 3.1.3. Escape-последовательности, используемые в языке Java

Escape-последовательность

Функция

Значение в Unicode

\b

Забой (backspace)

\u0008

\t

Горизонтальная табуляция (horizontal tab)

\u0009

\n

Перевод строки (linefeed)

\u000A

\f

Перевод страницы (form feed)

\u000C

\r

Возврат каретки (carriage return)

\u000D

\"

Двойная кавычка (double quote)

\u0022

\'

Апостроф (single quote)

\u0027

\\

Обратная косая черта (backslash)

\u005C

3.6.2. Вещественные типы переменных

Язык Java поддерживает числа и переменные с плавающей точкой обычной и двойной разрядности – типы float и double.

Для чисел с плавающей точкой нужно указывает целую и дробную часть, разделенные точкой, например 4.6 или 7.0. Для больших чисел можно использовать экспоненциальную форму записи (для отделения мантиссы от порядка используется символ "e" или символ "E"), например, число -3,58107 записывается как –3.58E7, а число 73,67510-15 – как 73.675e-15.

Характеристики вещественных типов Java представлены в табл. 3.1.4.

Переменные с плавающей точкой могут хранить не только численные значения, но и любой из особо определенных флагов (состоянии): отрицательная бесконечность, отрицательный нуль, положительная бесконечность, положительный нуль и «отсутствие числа» (not-a-number, NaN).

Таблица 3.1.4. Характеристики вещественных типов Java

Тип

Разрядность (бит)

Диапазон

Точность

float

32

3,4e-38 < |x| < 3,4e38

7-8 цифр

double

64

1,7e-308 < |x| < 1,7e308

17 цифр

Все константы с плавающей точкой подразумеваются принадлежащими к типу double. Чтобы задать число типа float, необходимо добавить в его конец символ "f" или символ "F".

3.6.3. Булевский тип переменных

Переменные булевского типа (логические переменные) могут принимать одно из двух значений: «истина» или «ложь» и используются в языках программирования в операциях отношения (сравнения) и логических операциях. Так, результатом сравнения

5 > 3

будет «истина», а результатом сравнения

8 < 1

будет «ложь».

В Java для булевских переменных введен свой, отдельный тип данных – булевский.

Переменные булевского типа в Java задаются с помощью ключевого слова boolean и могут иметь лишь одно из двух значений: true или false.

3.7. Операции над примитивными типами в Java

Большинство операций над примитивными типами выполняется не с помощью методов, а с помощью специальных символов, называемых знаком операции.

3.7.1. Операция присваивания

Присвоение переменной значения константы, другой переменной или выражения (переменных и/или констант, разделенных знаками операций), называется операцией присваивания и обозначается знаком "=".

В Java допустимо многократное использование операции присваивания в одном выражении, например:

x1 = x2 = x3 = 0;

Знаки операций, аргументами которых являются числа, разделяются на две категории: унарные (unary) знаки операций с одним аргументом и бинарные (binary)   с двумя аргументами.

3.7.2. Унарные операции

В Java определены следующие унарные операции:

  •  унарный минус "-" – меняет знак числа или выражения на противоположный;
  •  унарный плюс "+" – не выполняет никаких действий над числом или выражением;
  •  побитовое дополнение "~" (только для целых) – инвертирует все биты поля числа (меняет 0 на 1 и 1 на 0);
  •  инкремент "++" (только для целых) – увеличивает значение переменной на 1;
  •  декремент "--" (только для целых) – уменьшает значение переменной на 1.

Знаки операции инкремента и декремента могут размещаться как до, так и после переменной. Эти варианты называются соответственно префиксной и постфиксной записью этих операции. Знак операции в префиксной записи возвращает значение своего операнда после вычисления выражения. При постфиксной записи знак операции сначала возвращает значение своего операнда и только после этого вычисляет инкремент или декремент.

Следует отметить, что в Java, в отличие от языка C, операции декремента и инкремента могут применяться и к вещественным переменным (типа float и double).

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

3.7.3. Арифметические бинарные операции

В Java определены следующие арифметические бинарные операции:

  •  сложение "+";
  •  вычитание "-";
  •  умножение "*";
  •  деление "/";
  •  вычисление остатка от деления целых чисел "%" .

Последняя операция возвращает остаток от деления первого числа на второе, причем результат будет иметь тот же знак, что и делимое), например, результат операции 5%3 будет равен 2, а результат операции (-7)%(-4) будет равен -3. В Java операция может использоваться и для вещественных переменных (типа float или double).

3.7.4. Побитовые операции

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

  •  установка бита в i-ой позиции поля результата в 1, если оба бита в i-ых позициях операндов равны 1, или в 0  в противном случае – побитовое И ("&");
  •  установка бита в i-ой позиции поля результата в 1, если хотя бы один бит в i-ых позициях операндов равен 1, или в 0  в противном случае – побитовое ИЛИ ("|");
  •  установка бита в i-ой позиции поля результата в 1, если  биты в i-ых позициях операндов не равны друг другу, или в 0  в противном случае – побитовое исключающее ИЛИ ("^");
  •  сдвиг влево битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом не меняется) – побитовый сдвиг влево с учетом знака "<<";
  •  сдвиг вправо битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом не меняется) – побитовый сдвиг вправо с учетом знака ">>";
  •  сдвиг вправо битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом также сдвигается) – побитовый сдвиг вправо без учета знака ">>>".

3.7.5. Комбинированные операции

В Java для бинарных арифметических операций можно использовать комбинированные (составные) знаки операций:

идентификатор операция = выражение 

Это эквивалентно следующей операции:

идентификатор = идентификатор операция выражение

3.7.6. Операции сравнения

В Java определены следующие операции сравнения:

"==" (равно),  "!=" (не равно),

">" (больше),  ">=" (больше или равно),

"<" (меньше)  "<=" (меньше или равно)

Эти операции имеют  два операнда и возвращают булевское значение, соответствующее результату сравнения (false или true). Следует обратить внимание, что при сравнении двух величин на равенство в Java, как и в C и в C++, используются символы "==" (два идущих без пробела друг за другом знака равенства), в отличие от оператора присваивания, в котором используется символ "=". Использование символа "=" при сравнении двух величин либо вызывает ошибку при компиляции, либо приводит к неверному результату.

3.7.7. Булевские операции

Булевские операции выполняются над булевскими переменными и их результатом также является значение типа boolean. В Java определены следующие булевские операции:

  •  отрицание "!" – замена false на true, или наоборот;
  •  операция И "&" – результат равен true, только, если оба операнда равны true, иначе результат – false;
  •  операция ИЛИ "|"   – результат равен true, только, если хотя бы один из операндов равен true, иначе результат – false.
  •  операция исключающее ИЛИ "^"  – результат равен true, только, если операнды не равны друг другу, иначе результат – false.

Операции "&",  "|" и "^" можно, также как и соответствующие побитовые операции использовать в составных операциях присваивания: "&=",  "|=" и "^="  

Кроме того, к булевским операндам применимы операции "==" (равно) и "!=" (не равно).

Как видно из определения операций ИЛИ и И, операция ИЛИ приводит к результату true, когда первый операнд равен true, независимо от значения второго операнда, а операция И приводит к результату false, когда первый операнд равен false, независимо от значения второго операнда.

В Java определены еще две булевские операции: вторые версии булевских операций И и ИЛИ, известные как укороченные (short-circuit) логические операции: укороченное И "&&" и укороченное ИЛИ "||". При использовании этих операций второй операнд вообще не будет вычисляться, что полезно в тех случаях, когда правильное функционирование правого операнда зависит от того, имеет ли левый операнд значение true или false.

3.7.8. Условная операция

Условная операция записывается в форме

выражение-1?выражение-2:выражение-3.

При этом сначала вычисляется выражение выражение-1, которое должно дать булевское значение, а затем, если выражение-1 имеет значение true, вычисляется и возвращается выражение-2 как результат выполнения операции, либо (если выражение-1 имеет значение false), вычисляется и, как результат выполнения операции, возвращается выражение-3.

3.7.9. Старшинство операций

Операции в выражениях выполняются слева направо, однако, в соответствии со своим приоритетом. Так операции умножения в выражении

y = x +z*5;

будет выполнена раньше, чем операция сложения, поскольку приоритет операции умножения выше, чем приоритет операции сложения.

Приоритеты операций (в порядке уменьшения приоритета) в Java приведены в табл. 3.1.5.

Круглые скобки повышают старшинство операций, которые находятся внутри них.

Иногда скобки используют просто для того, чтобы сделать выражение более читаемым.

Таблица 3.1.5. Приоритеты операций в Java

Операция

Описание

()  [ ]

Круглые и квадратные скобки

++  --  +  -  ~ !

Декремент, инкремент, унарный плюс, унарный минус, поразрядное отрицание, логическое отрицание

*  /  %

Умножение, деление, деление нацело

+  -

Сложение, вычитание

>>  >>>  <<

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

>  >=  <  <=

Сравнение на больше, больше или равно, меньше, меньше или равно

==  !=

Сравнение на равенство, сравнение на неравенство

&

Поразрядное и логическое И

^

Поразрядное и логическое исключающее ИЛИ

|

Поразрядное и логическое ИЛИ

&&

Логическое укороченное И

||

Логическое укороченное ИЛИ

? :

Условная операция

=op

Комбинированные операции (op – одна из арифметических или побитовых операций)

3.7.10. Преобразование и приведение типов при выполнении операций

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

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

При выполнении операции присваивания преобразование типов происходит автоматически, если происходит расширяющее преобразование (widening conversion) и два типа совместимы.  

Расширяющими преобразованиями являются следующие преобразования:

byteshortintlongfloatdouble.

Для расширяющих преобразований числовые типы, включая целый и с плавающей точкой, являются совместимыми друг с другом. Однако числовые типы не совместимы с типами char и boolean. Типы char и boolean не совместимы также и друг с другом.

В языке Java выполняется автоматическое преобразование типов также и при сохранении литеральной целочисленной константы (которая имеет по умолчанию тип int) в переменных типа byte, short или long (однако если литерал имеет значение вне диапазона допустимых значений для данного типа, выдается сообщение об ошибке: возможная потеря точности).

Если преобразование является сужающим (narrowing conversion), т. е. выполняется  преобразование byteshortcharintlongfloatdouble, то такое преобразование может привести к потере точности числа или к его искажению. Поэтому при сужающих преобразованиях при компиляции программы выводится диагностическое сообщение о несовместимости типов и файлы классов не создаются. Такое сообщение будет выдано и при попытке преобразование выражений типа byte или short в переменную типа char.

Если все же необходимо выполнить такие преобразования, используется операция приведения (cast) типа, которая имеет следующий формат:

(тип-преобразования) значение 

где тип-преобразования определяет тип, в который необходимо преобразовать заданное значение.

Если значение с плавающей точкой присваивается целому типу, то (если значение с плавающей точкой имеет дробную часть) при явном преобразовании типа происходит также усечение (truncation) числа.

Если же присваиваемое значение лежит вне диапазона типа-преобразования, то результатом преобразования будет остаток от деления  значения на модуль диапазона присваиваемого типа (для чисел типа byte модуль диапазона будет равен 256, для short65536, для int4294967296 и для long18446744073709551616).  

При преобразовании целых или вещественных чисел в данные типа char, преобразование в символ происходит, если исходное  число лежит в диапазоне от 0 до 127, иначе символ получает значение '?'.

При выполнении арифметических и побитовых преобразований все значения byte и short, а также char расширяются до int, (при этом в вычислениях для char используется числовое значение кода символа) затем, если хотя бы один операнд имеет тип long, тип целого выражения расширяется до long. Если один из операндов имеет  тип float, то тип полного выражения расширяется до float, а если один из операндов имеет  тип double, то тип результата будет double.

Автоматические расширения типов (особенно расширения short и byte до int) могут вызывать плохо распознаваемые ошибки во время компиляции.

3.8. Массивы в Java

Массивом в языках программирования называется именованный набор переменных одинакового типа. Каждый элемент массива является переменной, которая однозначно определяется путем указания имени массива и целочисленной позиции элемента в массиве – индекса элемента в массиве.

3.8.1. Описание массивов

Массивы в Java являются гибридом объектов и примитивных типов. Они похожи на объекты, но имеют специальное значение для компилятора. Описание производится в три этапа.

На первом этапе выполняется объявление массива (array declaration). Объявление массива в Java выполняется с использованием одного из следующих форматов:

имя-типа [] идентификатор-массива 

либо

имя-типа  идентификатор-массива[]

где имя-типа – имя примитивного или ссылочного типа, а идентификатор-массива – имя, присваиваемое массиву.

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

На втором этапе, этапе  определения или создания массива (array instantiation) указывается количество элементов массива, называемое его длиной, выделяется место для массива в оперативной памяти, переменная-ссылка получает адрес массива. Эти действия выполняются следующей операций:

new имя-типа [размер-массива]

где размер-массива – переменная или выражение любого целочисленного типа, за исключением типа long. Как видно из этой операции, в отличие от определения объекта класса, для массива указывается не конструктор класса, а тип массива и его размер.   

На третьем этапе производится инициализация массива (array initialization). Элементы массивов числовых типов получают нулевое значение соответствующего типа, элементы булевских массивов – значение false, а элементы массивов ссылочных типов – значения null.  

Массивы могут быть инициализированы во время создания. При этом размер-массива в квадратных скобках не указывается, а после закрывающей квадратной скобки в фигурных скобках задается список значений элементов массива, разделенных запятыми. Размер массива при этом будет равен количеству элементов в списке (в списке не должно быть пустых элементов).

Можно объединить первый и второй этапы в одном операторе, например:

int [] myArray = new int[5];

Поскольку при инициализации массива размер массива указывать не надо, можно объединить первый и третий этап в одном операторе, например:

int [] myArray = {0, 1, 2, 3, 4};

3.8.2. Доступ к элементам массива

Элемент массива, помимо значения, характеризуется своей позицией в массиве – индексом. Индексом элемента является значение типа byte, short, int или char, заключенное в квадратные скобки, например myArray[4]. Индекс элемента массива изменяется от нуля до величины, на единицу меньшей размера массива.  

Длину массива можно определить с помощью свойства массива length.

3.9. Операторы передачи управления в Java

При работе  программы операторы выполняются последовательно. Однако часто бывает необходимым изменить порядок выполнения операторов. Для этого используются операторы управления программой.

В Java существуют следующие виды операторов управления программы:

условный оператор;

операторы цикла;

операторы перехода;

оператор выбора.

3.9.1. Условный оператор

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

Условный оператор Java имеет следующий формат:

if (булевское-выражение) 

операторы-1;

else 

операторы-2;

Если значение булевского-выражения равно true, то выполняются операторы-1, иначе выполнятся операторы-2. Оператор else может быть опущен, в этом случае, если булевское-выражение равно false, выполняется оператор, следующий за оператором if. Если операторы-1 или операторы-2 содержат несколько операторов, они должны быть заключены в фигурные скобки.

3.9.2. Операторы цикла

В Java определены следующие операторы цикла:

  •  оператор for;
  •  расширенный оператор for;
  •  оператор while;
  •  оператор do…while.

Оператор цикла for имеет следующий формат:

for (инициализация-цикла;контрольное-выражение;шаговое-выражение)

 тело-цикла

Инициализация-цикла выполняется один раз перед первым проходом тела цикла. Контрольное-выражение вычисляется перед началом каждого выполнения тела цикла (в том числе и перед первым его выполнением), а шаговое-выражение вычисляется в конце каждого выполнения тела цикла. Как правило, в нем происходит увеличение или уменьшение некоторой переменной, от которой зависит значение контрольного выражения. Тело цикла может содержать один оператор или несколько операторов, заключенных в фигурные скобки.

В выражение для инициализации цикла и в выражение для итерации цикла можно включить несколько операторов, разделенных запятыми. Обычно такая форма применяется, когда в цикле необходимо использовать несколько переменных цикла. Так, приведенный проверяет, является ли массив a симметричным, т.е. значение первого элемента равно значению последнего элемента массива, значение второго элемента – значению предпоследнего элемента и т.д.  

Расширенный оператор for, определенный в спецификации языка Java 3.0 и реализованный в Java SE 5 и 6, имеет следующий формат:

for(модификаторы-переменной  тип идентификатор-переменной : выражение)

 тело-цикла

Выражение в этом цикле должно задавать набор значений переменной. Если набор значений является массивом, в качестве выражения задается имя массива. Набор элементов переменной перечислимого типа и  коллекций (коллекции будут рассмотрены далее) можно получить с помощью статического метода values().  В процессе выполнения цикла переменной с именем идентификатор-переменной будут последовательно присваиваться значения всех элементов массива, переменной перечислимого типа или коллекции.

Операторы цикла while и dowhile имеют следующий формат:

while(булевское-выражение)  do

 тело-цикла     тело-цикла

      while(булевское-выражение);

Оба цикла выполняются до тех пор, пока булевское-выражение имеет значение true, однако в цикле while вычисление булевского-выражения производится до начала очередного выполнения цикла, а в цикле dowhile – после его очередного выполнения (т.е. цикл dowhile будет всегда выполняться хотя бы один раз).

3.9.3. Операторы перехода

В тех случаях, когда необходимо пропустить выполнение некоторых операторов программы, в Java используются оператор прерывания break и оператор продолжения continue. К операторам перехода обычно относят и оператор return.

Оператор прерывания:

break метка;

передает управление за пределы цикла или оператора выбора, помеченного указанной меткой. Метка представляет собой обычный идентификатор Java, за которым следует двоеточие. Метка может быть опущена – в этом случае управление передается за пределы цикла или оператора выбора, содержащего данный оператор break.

Оператор продолжения

continue метка;

похож на оператор break, однако он передает управление внутри цикла. Если метка опущена, оператор continue  передает управление на самый конец тела цикла (после последнего его оператора) и, если контрольное выражение, вычисленное после того, как очередной проход тела цикла был насильственно завершен оператором continue, будет равно true, выполнение цикла продолжится. Это бывает полезно для того, чтобы пропустить при выполнении тела цикла некоторые из операторов. Если метка указано, операторы пропускаются в цикле, помеченном указанной меткой

3.9.4. Оператор выбора

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

Оператор switch имеет следующий формат:

switch (выражение)

{

case значение-1: операторы-1;

case значение-2: операторы-2;

default: операторы-n;

}

Выражение, которое ставится в круглых скобках после ключевого слова switch, может принадлежать к одному из типов char, byte, short или int, а также одним из значений переменной перечислимого типа. Проверка значения этого выражения на равенство заданному константному значению осуществляется с помощью операторов case, входящих в оператор switch (все операторы case должны содержать различные значения). Как только один из операторов case опознал значение выражения, управление получает операторы, следующие после символа ":" за этим оператором case. После этого выполняются операторы, содержащиеся во всех следующих операторах case и в операторе default. Для того, чтобы обойти выполнение последующих операторов case и оператора default,   следует задать последним оператором для данного case оператор break.  Если значение выражения не совпадает ни с одним из значений, выполняются операторы, следующие за оператором default (этот оператор может быть опущен). Операторы, следующие за двоеточием, можно не заключать в фигурные скобки. Если для нескольких значений выполняются одни и те же действия, операторы case можно объединить:

case значение-1: 

case значение-2: операторы;

4. Порядок выполнения работы

Напишите программу на языке Java по одному из приведенных ниже вариантов. Задание начальных значений переменным выполняется либо при инициализации, либо с помощью оператора присваивания, а элементы массива задаются как аргументы при  вызове программы. Если в варианте исходными являются два массива, то элементы первого массива задаются как аргументы при  вызове программы, а элементы второго массива задаются при его определении и инициализации. Тип массивов  int.  Полученные результаты выводятся на дисплей с поясняющими сообщениями.

Вариант 1-01

Сформировать и вывести на дисплей одномерный массив b, в котором первыми элементами являются  элементы  исходного одномерного массива a с отрицательными значениями (с сохранением порядка следования), а затем элементы a с нулевыми и положительными значениями.

Вариант 1-02

Определить значения двух наибольших и разных по значению элементов исходного одномерного массива a и их индексы (массив может содержать элементы с равными значениями, т.е. необходимо вывести значение и индексы элементов с максимальными значениями и значение второго по величине элемента, а также индексы всех элементов, имеющих второе по величине значение).

Вариант 1-03

Сформировать одномерный массив b из  исходного одномерного массива a следующим образом: если значения каких-либо двух или более элементов массива a   равны друг другу, на  месте всех этих элементов в массиве b выводится 1, в противном случае (если i-ый элемент не равен никакому другому элементу) в массиве b выводится 0.

Вариант 1-04

Сформировать одномерный массив b из исходного  одномерного массива a путем циклического сдвига элементов a на k  позиций вправо. Значение k задается как первый аргумент при вызове программы, остальные аргументы – элементы массива.

Вариант 1-05

Определить, являются ли  все элементы   исходного  одномерного массива a  отрицательными величинами или они все положительны или  среди элементов  a есть как положительные, так и отрицательные величины и вывести соответствующие сообщения для каждого случая.

Вариант 1-06

Определить значения и индексы локальных минимумов  исходного  одномерного массива a (элемент массива называется локальным минимумом, если он строго меньше своих соседей).

Вариант 1-07

Определить   абсолютное значение наименьшей разности между двумя любыми значениями элементов исходного одномерного массива a.  

Вариант 1-08

Определить   абсолютные значения наибольшей и наименьшей разности между средним значением и значениями элементов исходного одномерного массива a.

Вариант 1-09

Сформировать массив b из    исходного одномерного массива a по следующему алгоритму: сначала идут элементы массива a с четными значениями в порядке их возрастания, затем элементы    с нечетными значениями в порядке их убывания. Для определения количества четных элементов используйте оператор взятия модуля “%”.  

Вариант 1-10

Сформировать массив b из    исходного одномерного массива a по следующему алгоритму: bi равняется количеству элементов со значением, равным ai , в массиве a.    

Вариант 1-11

Определить   индексы и значения элементов исходного одномерного массива a, величины которых лежат вне задаваемой нижней amin и верхней amax границ (ai < amin или  ai > amax). Значения amin и amax задаются как первые два аргумента при вызове программы, остальные аргументы – элементы массива.

Вариант 1-12

Определить, образуют ли значения    элементов исходного одномерного массива a: строго возрастающую последовательность (ai ai+1), строго убывающую последовательность (ai > ai+1) или элементы массива не упорядочены и вывести для каждого случая соответствующее сообщение.

Вариант 1-13  

Определить, образуют ли значения    элементов исходного одномерного массива a: арифметическую прогрессию, т.е.  ai = ai-1 + n, где n – разность прогрессии и вывести соответствующее сообщение.

Вариант 1-14

Проверьте, являются ли элементы массива a множеством (для этого среди элементов массива не должно быть двух элементов с одинаковым значением).

Вариант 1-15

Выведите на дисплей значения тех элементы массивов a и b, которые есть и в том, и в другом массиве (предполагается, что и массив a и массив b являются множествами, т.е. каждый из них не содержит элементов с одинаковыми значениями).

Вариант 1-16

Выведите на дисплей значения тех элементы массивов a и b, которые есть только в одном из массивов, и отсутствуют в другом массиве (предполагается, что и массив a и массив b являются множествами, т.е. каждый из них не содержит элементов с одинаковыми значениями).

Вариант 1-17

Сформируйте из массива a массив b по следующему алгоритму: элемент массива b равен значению разности между максимальным значением элементов массива a и значением данного элемента массива a.

Вариант 1-18

Выведите на дисплей  распределение значений элементов массива a по интервалам. Границы интервалов задаются в виде массива b, причем нулевой элемент определяет нижнюю границу первого интервала, а элементы с 1-го по n-ый - верхние границы интервалов. В результате работы программы на дисплей должны быть выведены строки «Интервал nnxx» и последняя строка «Вне интервалов – xx».   

Вариант 1-19

Выведите на дисплей значения и индексы только тех элементов массива a, значения которых не равны значениям других элементов, т.е. уникальных элементов массива.  

Вариант 1-20

Определите (в процентах от общего количества элементов), сколько элементов в массиве a имеют значение меньшее, чем среднее значение, сколько элементов – значение, равное среднему значению и сколько элементов имеют значение, большее, чем среднее значение.

Вариант 1-21

Проверьте, не является ли значения i-ых элементов массива a линейной комбинацией i-ых значений элементов массива b, т.е. ai = k*bi +c, где k и c – константы (значения k и c можно определить из значений двух первых элементов a и b как два уравнения с двумя неизвестными).

Вариант 1-22

Сформировать массив b,   элементами которого являются значения индексов элементов исходного одномерного массива  a в порядке убывания значений элементов.

Вариант 1-23

Определить индексы и значения равных элементов (если они есть) исходного   одномерного массива ().

Вариант 1-24

Определите номер дня в году по заданному номеру дня в месяце и номеру месяца (вводятся как аргументы при вызове программы). Признак,  является ли год високосным,  задается как булевская переменная.  Указание: количество дней до начала данного месяца (не високосный год): январь 0, февраль – 31, март – 59, апрель – 90, май –120, июнь – 151, июль – 181, август – 212, сентябрь – 243, октябрь – 273, ноябрь – 314, декабрь – 334 задать в виде массива.  В високосном году, начиная с марта, к количеству дней добавляется 1. 

Вариант 1-25

Определите номер дня в месяце и номер месяца году по заданному номеру дня в году (вводится как аргумент при вызове программы). Признак,  является ли год високосным,  задается как булевская переменная.  Указание: количество дней до начала данного месяца (не високосный год): январь – 0, февраль – 31, март – 59, апрель – 90, май –120, июнь – 151, июль – 181, август – 212, сентябрь – 243, октябрь – 273, ноябрь – 314, декабрь – 334 задать в виде массива.  В високосном году, начиная с марта, к количеству дней добавляется 1. 

Вариант 1-26

Сформировать массив b, элементами которого являются   элементы  исходного одномерного массива a, расположенные в обратном порядке.

Вариант 1-27

Найти и заменить в  исходном одномерном массиве a все значения на . Значения kf и kc вводятся как первые два аргумента при вызове программы (остальные аргументы – элементы массива).

Вариант 1-28

Определить количество   равных элементов () и их индексы для двух исходных    одномерных массивов a и b.

Вариант 1-29

Сформировать массив b  из исходного одномерного массива  a следующим образом: если amin < ai < amax, то bi = ai; если ai £ amin, то bi=amin; если ai ³ amax, то bi=amax (amax и amin – максимальное и минимальное значение элементов в массиве).

Вариант 1-30

Сформировать массив b из массива a  следующим образом: массив  b состоит из тех элементов массива a, которые повторяются в массиве (по одному значению для одинаковых элементов), например, для массива a: 3 7 4 3 8 7 5, массив b будет иметь вид: 3 7.

5. Содержание отчета

В отчете должны быть представлены:

  •  текст и вывод программы, а также скриншот окна Project Properties (рис. 3.1.11) с аргументами вызова для своего варианта.

6. Вопросы для самоконтроля

  1.  Как записывается программа на языке Java, и какие типы элементов программы определены в языке Java? Коротко охарактеризуйте каждый тип.
  2.  По каким правилам формируются идентификаторы в языке Java?
  3.  Как объявляется класс в языке Java?
  4.  Для каких целей используются пакеты в языке Java? Какие компоненты входят в состав пакетов?
  5.  Как в программе на языке Java включается необходимый класс или классы какого-либо пакета? Как сделать переменные и методы класса доступными во всех пакетах?
  6.  Какие категории данных определены в языке Java?
  7.  Какие примитивные типы данных определены в языке Java? Коротко охарактеризуйте каждый тип данных.
  8.  Как объявляются переменные в языке Java? Как определяется область действия и время жизни переменной в программе на языке Java?
  9.  Какие модификаторы и как изменяют область действия и время жизни переменной в программе на языке Java?
  10.  Какие типы целых переменных существуют в языке Java и как определяются значения целых переменных?
  11.  Как определяются символьные и булевские переменные в языке Java?
  12.  Какие типы вещественных переменных существуют в языке Java и как определяются значения вещественных переменных?
  13.  Как определяется и как используется операция присваивания в языке Java?
  14.  Какие унарные операции определены в языке Java? Дайте краткую характеристику каждой операции.
  15.  Какие арифметические бинарные операции определены в языке Java? Дайте краткую характеристику каждой операции.
  16.  Какие побитовые бинарные операции определены в языке Java? Дайте краткую характеристику каждой операции.
  17.  Как определяется составная операция в языке Java, и для каких операций она применяется?
  18.  Какие операции сравнения определены в языке Java? Дайте краткую характеристику каждой операции.
  19.  Какие булевские операции определены в языке Java? Дайте краткую характеристику каждой операции. Как определяются укороченные булевские операции и чем они отличаются от обычных булевских операций?
  20.  Как записывается и как функционирует условная операция в Java?
  21.  Как определяются приоритеты операций в Java? Как можно изменить порядок выполнения операций?
  22.  Как выполняются расширяющие преобразования типов в языке Java?
  23.  Как выполняются сужающие преобразования типов в языке Java?
  24.  Какие функции выполняют модификаторы private и native?
  25.  Как описываются и инициализируются массивы в языке Java?
  26.  Как выполняется доступ к элементам массива в языке Java?
  27.  Как определяются многомерные массивы в языке Java?
  28.  Какие виды операторов управления определены в языке Java и где используется каждый вид?
  29.  Как определяется и как функционирует условный оператор в языке Java?
  30.  Какие операторы цикла определены в языке Java? Как описывается и как функционирует каждый из этих операторов?
  31.  Как и где в Java используется оператор запятая?
  32.  Какие операторы перехода определены в языке Java и как они функционирует? Для каких целей в операторах перехода используются метки?
  33.  Как определяется и как функционирует оператор выбора в языке Java? Для чего в операторе выбора используется оператор break?

  

Файл: file:///web/5fan/public_html/www/files/3/5fan_ru_18088_79a1c27bbb2c1d681c48bd915cd66ed5.doc   Создан: 2011-02-21T22:18:00Z Модифицирован: 2011-02-21T22:18:00Z     Автор: Ляшенко М.В.


К следующему окну

редактора

К предыдущему редактированию текста

предыдущему окну

редактора

Найти предыдущее совпадение

Найти выделенный текст

Найти следующее совпадение

Вкл./выкл. подсветку поиска

К следующей закладке в тексте

К предыдущей закладке в тексте

Вкл./выкл. закладку в тексте

Сдвинуть строку влево

Сдвинуть строку вправо

Закоммен-тировать строку

Удалить комментарий в строке

Остановить запись макрокоманды

Начать

запись макрокоманды

а)

б)


 

А также другие работы, которые могут Вас заинтересовать

66904. КУЛЬТУРА ДРЕВНЕЙШЕГО МИРА 62.5 KB
  Литературоведение — наука о художественной литературе, ее происхождении, сущности и развитии. Современное литературоведение состоит из трех самостоятельных, но тесно связанных между собой дисциплин (разделов): теории литературы, истории литературы и литературной критики
66905. Логические элементы 441 KB
  Рассматриваются принципы работы, характеристики и типовые схемы включения простейших логических элементов — инверторов, буферов, элементов И и ИЛИ, а также приводятся схемотехнические решения, позволяющие реализовать на их основе часто встречающиеся функции.
66906. Модели и процессы управления проектами программных средств 257.5 KB
  Назначение методологии СММ/CMMI – системы и модели оценки зрелости – состоит в предоставлении необходимых общих рекомендаций и инструкций предприятиям, производящим ПС, по выбору стратегии совершенствования качества процессов и продуктов, путем анализа степени их производственной зрелости и оценивания факторов...
66907. ФУНКЦИИ ГОСУДАРСТВА 149.5 KB
  Научное познание государства любого исторического типа обязательно предполагает рассмотрение его функций представляющих собой важнейшие качественные характеристики и ориентиры не только собственно государства как особой организации публичной власти но и общества в целом.
66908. ДЕСМУРГИЯ 81.5 KB
  Под повязкой понимается один из способов закрепления перевязочного материала обычная повязка поддержание постоянного давления на определенную часть тела давящая повязка удержание части тела в неподвижном положении иммобилизирующая повязка лечение вытяжением.
66909. ПРИКЛАДНА КРИПТОЛОГІЯ 305.66 KB
  Основою побудування сучасних систем обробки інформації є застосування інформаційних систем(ІС) та інформаційно – телекомунікаційних систем(ІТС). ІС це система, в якій реалізується технологія обробки інформації за допомогою технічних і програмних засобів.
66910. Особливості розвитку української культури в литовсько-руську та польсько-литовську добу (XIV-перша половина XVII ст.) 277 KB
  Більша частина українських земель знаходиласяу складі Литовської та Польської держав. Разом із тим ХІV – ХVІ ст. – це час подальшого формування українського народу, активізація його боротьби проти польсько-литовського панування, поява на історичній арені України такого самобутнього...
66911. Целевой маркетинг 33.83 KB
  Сегментация по географическому признаку разделение рынка на разные географические объекты страны регионы города. Сегментирование по демографическому признаку разделение рынка на потребительские группы на основе демографических переменных: пол возраст размер семьи этапы жизненного цикла семьи род занятий образование уровень дохода...
66912. Статичні члени класу та їх оголошення 48 KB
  Оголошуючи член-даних класу статичним, ми тим самим повідомляємо компілятор про те, що, незалежно від того, скільки обєктів цього класу буде створено, існує тільки одна копія цього static-члена. Іншими словами, static-член розділяється між всіма обєктами класу.