85800

Создание простейшей программы на языке Java

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

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

Технология Java, как платформа, изначально спроектированная для Глобальной сети Internet, должна быть многоязыковой, а значит, обычный набор символов ASCII (American Standard Code for Information Interchange, Американский стандартный код обмена информацией), включающий в себя лишь латинский алфавит...

Русский

2015-03-30

1.28 MB

8 чел.

Лабораторная работа 1. Создание простейшей программы на языке Java.

Цель работы. Первое знакомство с языком программирования Java, средами программирования Eclipse и NetBeans.

Краткая теория по теме

Базовые конструкции языка Java

Технология Java, как платформа, изначально спроектированная для Глобальной сети Internet, должна быть многоязыковой, а значит, обычный набор символов ASCII (American Standard Code for Information Interchange, Американский стандартный код обмена информацией), включающий в себя лишь латинский алфавит, цифры и простейшие специальные знаки (скобки, знаки препинания, арифметические операции и т.д.), недостаточен. Поэтому для записи текста программы применяется более универсальная кодировка Unicode. Например, если в программу нужно вставить знак с кодом 6917, необходимо его представить в шестнадцатеричном формате (1B05) и записать: \u1B05.

Компилятор, анализируя программу, сразу разделяет ее на:

  •   пробелы (white spaces);
  •   комментарии (comments);
  •   основные лексемы (tokens).

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

double a = 1, b = 1, c = 6;

double D = b * b - 4 * a * c;

   if (D >= 0) {

     double x1 = (-b + Math.sqrt (D)) / (2 * a);

     double x2 = (-b - Math.sqrt (D)) / (2 * a);

   }

можно записать и в таком виде:

double a=1,b=1,c=6;double D=b*b-4*a*c;if(D>=0)

{double x1=(-b+Math.sqrt(D))/(2*a);double

x2=(-b-Math.sqrt(D))/(2*a);}

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

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

int y=1970; // год рождения

Блочные комментарии располагаются между ASCII-символами /* и */, могут занимать произвольное количество строк. Кроме этого, существует особый вид блочного комментария – комментарий разработчика (/** комментарии*/). Он применяется для автоматического создания документации кода.

Лексика языка

Лексика описывает, из чего состоит текст программы, каким образом он записывается и на какие простейшие слова (лексемы) компилятор разбивает программу при анализе. Лексемы (или tokens в английском варианте) – это основные "кирпичики", из которых строится любая программа на языке Java. Ниже перечислены все виды лексем в Java:

  •  идентификаторы (identifiers);
  •  ключевые слова (key words);
  •  литералы (literals);
  •  разделители (separators);
  •  операторы (operators).

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

Ключевые слова – специальные лексемы, зарегистрированные в системе для внутреннего использования (представлены на рисунке ниже).

Рис. 2.1. Ключевые слова Java

Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. В Java определены следующие виды литералов:

  •  целочисленный (integer);
  •  дробный (floating-point);
  •  булевский (boolean);
  •  символьный (character);
  •  строковый (string);
  •  null-литерал (null-literal).

Целочисленные (тип int занимает 4 байта, тип long – 8) литералы позволяют задавать целочисленные значения в десятеричном, восьмеричном и шестнадцатеричном виде. Запись нуля можно осуществить следующими способами:

  •  0 (10-ричная система)
  •  00 (8-ричная)
  •  0x0 (16-ричная)

Если в конце литерала не стоит указателя на тип, то литерал по умолчанию имеет тип int.

Дробные литералы (тип float занимает 4 байта, тип double – 8) представляют собой числа с плавающей десятичной точкой. Дробный литерал состоит из следующих составных частей (по умолчанию имеет тип double):

  •  целая часть;
  •  десятичная точка (используется ASCII-символ точка);
  •  дробная часть;
  •  показатель степени (состоит из латинской ASCII-буквы «E» в произвольном регистре и целого числа с опциональным знаком «+» или «–»);
  •  окончание-указатель типа (D или F).

Символьные литералы. Представляют собой один символ и заключаются в одинарные кавычки ‘s’, ‘a’. Допускается запись через Unicode ‘\u0041’ – латинская буква “A”.

Строковые литералы состоят из набора символов и записываются в двойных кавычках: “символьный литерал”.

Null литерал может принимать всего одно значение: null. Это литерал ссылочного типа, причем эта ссылка никуда не ссылается.

Разделители – специальные символы, используемые в конструкциях языка “()”, “[]”, “{}”, “;”, “,”, “.”.

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

Пример простой программы “Hello, world!” выглядит следующим образом:

public class Test {

/**

* Основной метод, с которого начинается

* выполнение любой Java программы.

*/

public static void main (String args[])

{

System.out.println("Hello, world!");

}

}

Типы данных

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

Все типы данных разделяются на две группы. Первую составляют 8 простых или примитивных (от английского primitive) типов данных. Они подразделяются на три подгруппы:

  •  целочисленные: byte, short, int, long, char;
  •  дробные: float, double;
  •  булевский: boolean.

Булевский тип представлен всего одним типом boolean, который может хранить всего два возможных значения - true и false. Величины именно этого типа получаются в результате операций сравнения.

Вторую группу составляют объектные или ссылочные (от английского reference) типы данных. Это все классы, интерфейсы и массивы.

Переменные

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

Любая переменная имеет три базовых характеристики: имя, тип, значение.

Имя уникально идентифицирует переменную и позволяет к ней обращаться в программе.

Тип описывает, какие величины может хранить переменная.

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

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

int number;

char symbol;

double x,y;

В данном случае объявляется целочисленная переменная number типа int, символьная переменная (переменная типа char) и две переменные x и y типа double.

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

Чтобы присвоить переменной значение, после ее имени указывают знак равенства (оператор присваивания) и значение, которое присваивается переменной. Например:

int number;

number=12;

char symbol='a';

double x=3.4,y;

Целочисленной переменной number после объявления командой number=12 присваивается значение 12. Символьная переменная symbol инициализируется со значением 'а' при объявлении. Обратите внимание, что значение символьной переменной указывается в одинарных кавычках. Напомним, для текста используют двойные кавычки.

При объявлении нескольких однотипных переменных часть из них или даже все могут инициализироваться. Примером тому служит последняя команда из приведенного выше кода, в которой объявляется две переменные х и у типа double, причем переменной х сразу при объявлении присваивается значение 3.4.

Ниже в таблице сведены данные по всем целым и дробным типам:

Название типа

Длина (байт)

Область значений

Целые типы

byte

1

-128…127

short

2

-32768…32767

int

4

-2147483648..2147483647

long

8

-9223372036854775808..

9223372036854775807

chart

2

0..65535

Дробные типы

float

4

3.40282347e+38f; 1.40239846e-45f

double

8

1.79769313486231570e+308;

4.94065645841246544e-324

Операторы

В языке Java существует достаточно широкий набор операторов, которые приведены в таблице в порядке понижения приоритета.

Операторы

Приоритет

постфиксные

expr++  expr--

унарные

++expr   --expr   +expr   -expr   ~   !

мультипликативные

*  /   %

аддитивные

+  -

сдвига

<<  >>   >>>

отношения

<   >   <=   >=   instanceof

равенства

==   !=

побитовое И

&

побитовое ИЛИ

^

побитовое исключающее ИЛИ

|

логическое И

&&

логическое ИЛИ

||

тернарный

? :

присваивания

= += -= *= /= %= &= ^= |= <<= >>= >>>=

Для обозначения операций сложения, вычитания, умножения и деления в языке Java используются обычные арифметические операторы “+”, “-“, “*”, “/”. Оператор “/” означает целочисленное деление, если оба аргумента являются целыми числами. В противном случае этот оператор обозначает деление чисел с плавающей точкой. Остаток от деления целых чисел (т.е. функция mod) обозначается символом “%”.

В операторах присваивания удобно использовать сокращенные бинарные арифметические операторы. Например, оператор x+=4 эквивалентен оператору x=x+4. Сокращенные операторы присваивания образуются путем приписывания символа арифметической операции, например, “*” или “%”, перед символом “=”, например, “*=”, “%=”.

В языке Java есть операторы инкрементации и декрементации: оператор x++ добавляет единицу к текущему значению переменной x, а оператор x-- вычитает из него единицу.

int n=12;

n++; // делает значение переменной n равной 13

Существует два вида этих операторов. Выше показана постфиксная форма, в которой символы операции размещаются после операнда. Есть и префиксная форма – ++n. Оба этих оператора увеличивают значение на единицу.

int m=7;

int n=7;

int a=2* ++m; // теперь значение a равно 16, а m – 8

int b=2* n++; // теперь значение b равно 16, n  – 8

Язык Java содержит полный комплект операторов отношения. Чтобы проверить равенство, следует использовать символы “==”. Например, значение выражения 3==7 равно false. Для проверки неравенства используются символы “!=”. Так, значение выражения 3!=7 равно true.

Кроме того, в языке Java есть обычные операторы “<” (меньше), “>” (больше), “<=” (меньше или равно), “=>” (больше или равно).

Язык Java использует символы “&&” для обозначения логического оператора “и”, а также символы “||” для обозначения логического оператора “или”. Как обычно, знак восклицания означает логический оператор отрицания. Операторы “&&” и “||” вычисляются по сокращенной схеме, т.е. если в ходе выполнения выражения A&&B выясняется, что подвыражение A ложно, то подвыражение B не вычисляется.

int x=1;

(x>0) | calculate(x) // в таком выражении произойдет вызов calculate

(x>0) || calculate(x) // а в этом - нет

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

Условие ? e1 : e2

означает, что если Условие истинно, то вычисляется выражение e1, а если ложно – e2.

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

& (“и”),   | (“или”),   ^ (“исключающее или”),   ~ (“не”)

В языке Java есть также операторы “<<” и “>>”, сдвигающие битовое представление числа вправо или влево.

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

double x = 4;

double y = Math.sqrt(x);

System.out.println(y); // Печатает число 2.0

В языке Java нет оператора возведения в степень, для этого нужно использовать метод pow из класса Math. Оператор

double y = Math.pow(x,a)

присваивает переменной y значение переменной x, возведенной в степень a. Оба параметра и возвращаемое значение имеют тип double.

Класс Math содержит обычные тригонометрические функции: Math.sin, Math.cos, Math.tan, Math.atan, Math.atan2. Кроме этого, в него включены экспоненциальная и обратная к ней логарифмическая функции: Math.exp, Math.log. Генератор псевдослучайных чисел в диапазоне от 0 до 1 вызывается с помощью функции Math.random(). В классе определены так же константы Math.PI, Math.E.

Побитовые операции – когда целые числа рассматриваются как наборы бит, где 0 и 1 играют роли логического нуля и логической единицы. При этом все логические операции для двух чисел осуществляются поразрядно – k-тый разряд первого числа с k-тым разрядом второго.

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

Это операции >, <, >=, <=, != и ==. Следует обратить внимание, что сравнение на равенство обозначается двумя знаками '='. Операндами этих операций могут быть арифметические данные, результат - типа boolean.

Операции отношений != и == работают для всех объектов, но их смысл может быть не сразу очевиден. Например:

Public class Op{

……………………

Integer n1 = new Integer(47);

Integer n2 = new Integer(47);

System.out.print (n1 == n2);

System.out.print (n1 != n2);

}

Выражение System.out.print (n1 ==n2) выведет результат булевского сравнения, содержащегося в скобках. Конечно, результат должен быть истина (true), а во втором случае – false, так как оба целых имеют одинаковые значения. Но в то время, как содержимое объектов одинаковое, ссылки на них разные а операторы != и == сравнивают именно ссылки. Поэтому результат первого выражения false, а второго – true.

Операции инкремента, декремента 

Это операции ++ и --. Так y++ (инкремент) является сокращенной записью y = y +1, аналогично и с операцией декремента (--). Но с этими операциями есть одна тонкость. Они существуют в двух формах - префиксной (++y) и постфиксной (y++). Действие этих операций одно и то же - они увеличивают (операции декремента - уменьшают) свой операнд на 1, а вот результат у них разный. Префиксная форма в качестве результата выдает уже измененное на 1 значение операнда, а постфиксна - значение операнда до изменения.

Форматирование вывода

Число х можно вывести на консоль с помощью оператора System,out.println(x). Эта команда напечатает число х с максимальным количеством ненулевых цифр, допустимым для данного типа чисел. Например, код

х = 10000.0 / 3.0;

System.out.print(x);

выведет на экран число 3333.3333333333335. Это создает проблемы, если вы хотите, например, вывести на экран количество долларов и центов.

Чтобы сделать вывод более аккуратным, можно управлять его форматом.

Класс NumberFormat в пакете java.text имеет три метода, предоставляющих стандартные средства форматирования для

  •  чисел;
    •  денежных сумм;
    •  процентов.

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

3,333.333

$3,333.33

333,333%

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

NumberFormat.getNumberlnstance()

NumberFormat.getCurrencylnstance()

NumberFormat.getPercentlnstance()

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

double х - 10000.0/3.0;

NumberFormat formatter = NumberFormat.getNumberlnstance();

String s = formatter.format(x); // Строка "3,333.33".

System.out.println(s);

Если вы захотите задать минимальное и максимальное количество цифр в целой или дробной части числа, можете воспользоваться методами setMinimumlntegerDigits, setMinimumFractionDigits, setMaximumlntegerDigits и setMaximumlntegerDigits из класса Number Format.

double x = 10000.0/3.0;

NumberFormat formatter = NumberFormat.getNumberlnstance();

formatter.setMaximumFraction(4);

formatter.setMinimumlntegerDigits(6);

S t r i n g s = formatter.format(x); // Строка "003,333.3333".

Установка максимального количества цифр в дробной части нередко оказывается полезной. Последняя отображаемая цифра увеличивается на единицу, если отброшенная цифра равна или больше 5. Если нужно отобразить замыкающие нули, то минимальное количество цифр в дробной части должно быть равным их максимальному количеству. В противном случае следует оставить минимальное количество цифр в дробной части равным его значению по умолчанию, т.е. 0. Установка количества цифр в целой части числа используется намного реже. Задавая это количество, пользователь вынуждает средства форматирования вставлять ведущие нули перед маленькими числами. Совершенно очевидно, что указывать максимальное количестве цифр в целой части опасно — отображаемое число будет усечено, что приведет к более красиво отформатированному, но неверному результату.

Существуют также форматы, соответствующие другим национальным стандартам.

Например, рассмотрим числовые форматы, принятые в Германии, и выведем на экран тест. Существует встроенный объект под именем Locale.GERMANY, имеющий тип Locale, в котором хранятся правила форматирования чисел в соответствии с национальным стандартом Германии. Передавая объект типа Locale методу GetNumberlnstance, мы получим нужные нам средства форматирования.

double х = 10000.0/3.0;

NumberFormat formatter

= NumberFormat.getNumberInstance(Locale.GERMANY);

System.out.println(formatter.format(x) ) ;

formatter = NumberFormat.getCurrencylnstance(Locale.GERMANY);

System.out.printIn(formatter.format(x));

Этот фрагмент кода выведет на печать следующие числа:

3.333,333

3.333,33 DM

Среда разработки приложений Eclipse

Eclipse — один из лучших инструментов Java, созданных за последние годы. SDK Eclipse представляет собой интегрированную среду разработки (IDE, Integrated Development Environment) с открытым исходным кодом.

В начале своего существования Eclipse появилась как коммерческий продукт, но в ноябре 2001 г. его исходные коды были опубликованы. Создателем системы является компания Object Technology International (OTI), которая впоследствии была приобретена корпорацией IBM. Начиная с 2001 г. Eclipse была загружена более 250 миллионов раз и в настоящее время используется сотнями тысяч программистов по всему миру. Поддержкой и разработкой Eclipse в настоящее время занимается организация Eclipse Foundation и сообщество Eclipse, информацию о которых можно найти на официальном сайте в сети Интернет http://www.eclipse.org.

Основные инструментальные средства Eclipse Java включают в себя: редактор исходного кода (создание и редактирование исходного текста программ), средства отладки и интеграции с Ant. Кроме этого в Eclipse доступны множество бесплатных и коммерческих дополнений (плагинов), таких, как инструментальные средства создания схем UML, разработка баз данных и др.

Собственно сама по себе Eclipse — это только платформа, которая предоставляет возможность разрабатывать дополнения, называемые плагинами, которые естественным образом встраиваются в платформу.

В Eclipse доступны дополнения для следующих языков: C/C++, Html, Cobol, Perl, Php, Ruby и др. Вы можете также разработать собственное дополнение для расширения возможностей Eclipse.

Системные требования

Eclipse разработана для широкого круга операционных систем, таких как Linux, Microsoft Windows и Mac OS. Для ее запуска требуется JVM (Java Virtual Machine) — виртуальная Java-машина, а также JDK (Java Development Kit) — набор для Java-разработки. Загрузить данные пакеты можно с официального сайта разработчика Java — http://java.sun.com.

Введение в Eclipse

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

Рабочее пространство

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

Инструментальные средства Eclipse

Инструментальные средства Eclipse становятся доступны сразу после запуска приложения. Это по существу сама платформа с набором различных функциональных возможностей главного меню, где прежде всего выделяется набор операций по управлению проектом. Фактическая обработка, как правило, осуществляется дополнениями (плагинами), например редактирование и просмотр файлов проектов осуществляется JDT, и т.д.

К инструментам (workbench) относится набор соответствующих редакторов и представлений, размещенных в рабочей области Eclipse. Для конкретной задачи определенный набор редакторов и представлений называют перспективой или компоновкой.

Компоновки

Компоновка (perspective) — это набор представлений и редакторов, расположенных в том порядке, который вам требуется. В каждой компоновке присутствует свой набор инструментов, некоторые компоновки могут иметь общие наборы инструментов. В определенный момент времени активной может быть только одна компоновка. Переключение между различными компоновками осуществляется нажатием клавиш <Ctrl+F8>.

Используя компоновки, вы можете настроить свое рабочее пространство под определенный тип выполняемой задачи. В Eclipse имеется также возможность создавать свои компоновки. Открыть компоновку можно командой Window / Open Perspective.

Редакторы

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

Представления

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

Таблица 1.1

Компоновки

Компоновка

Представление

Debug

Breakpoints, Debug, Variables, Expressions, Task, Outline, Console

Java Browsing

Projects, Packages, Types, Members

Java

Package Explorer, Problems, Hierarchy, Outline, Javadoc, Declaration

Проект

Проект (project) представляет собой набор файлов приложения и сопутствующих дополнений. При работе с Java используются в основном файлы, имеющие следующие расширения: .java, .jsp, .xml.

Дополнение

Дополнением (plug-in) называют приложение, которое дополнительно может быть установлено в Eclipse. Примером дополнения может выступать JDT.

Мастера

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

Первый запуск Eclipse

Первое окно, которое отобразится на экране — это диалоговое окно выбора рабочего пространства (workspace) (рис. 1.1).

Рис. 1.1. Выбор папки с рабочим пространством

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

Для смены рабочего пространства в дальнейшем это окно может быть открыто с помощью команд меню File / Switch Workspace.

Файлы каждого проекта — исходные тексты программ (.java, .jsp ), файлы настроек (.xml) и прочие данные будут храниться в указанном вами рабочем пространстве Workspace.

После того, как вы нажмете кнопку OK, появится страница приветствия (рис. 1.2), на которой имеется 5 графических кнопок:

  •  Overview — обзор, содержащий ссылки на обучающие интернет-ресурсы eclipse;
  •  Tutorials — уроки, содержит несколько примеров создания простейших приложений Java;
  •  What’s new — «что нового», содержит обзор основных нововведений;
  •  Samples — примеры, содержит несколько примеров разработки, которые должны быть предварительно установлены для того, чтобы их можно было просмотреть;
  •  Workbench — «рабочий стол» — это рабочая область программиста.

Рис. 1.2. Страница приветствия

Для того, чтобы приступить к работе, нажмите кнопку «Workbench». По умолчанию откроется универсальный рабочий стол (рис. 1.3).

Рис. 1.3. Универсальный рабочий стол

Этот универсальный рабочий стол пока еще не содержит в полном объеме всех важных элементов рабочего стола Java. На рис. 1.3 выделена метка, которая отображает текущий режим рабочего стола. Для того чтобы переключиться в другой режим, нужно нажать кнопку , находящуюся слева от выделенной метки, и в раскрывающемся списке выбрать нужный режим. В нашем случае нужно выбрать Java.

Рис. 1.4. Выбор режима

Компоновка Java

На рис. 1.5 можно выделить несколько основных элементов графического интерфейса пользователя среды Eclipse в компоновке Java.

Рис. 1.5. Компоновка Java

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

  •  Строка меню (№ 1, рис. 1.5).
  •  Панель инструментов (№2, рис. 1.5).
  •  Окно браузера проекта и иерархии (№ 7, рис. 1.5).

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

  •  Окна представлений (№ 8, рис. 1.5).

Имеется 4 основных вкладки:

1) Problems — предназначена для отображения ошибок при компиляции, а также во время написания программы;

2) Javadoc — отображение комментариев к выбранным объектам;

3) Declaration — отображение части кода, в котором происходит декларация выбранного объекта;

4) Console — системная консоль, в которую происходит вывод данных программы.

  •  Перспективы (компоновки) (№ 3, рис. 1.5)

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

  •  Редактор кода (№6, рис. 1.5)

Предназначен для ввода и редактирования исходного текста программ Java.

Интерфейс пользователя

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

Таблица 1.2

Главное меню

Команда меню

Назначение

File

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

Edit

Содержит элементы управления текстовой информацией: копирование, вырезание, вставка, удаление, отмена последнего действия, возврат после отмены, добавление закладок и заданий, а также поиск

Source

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

Refactor

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

Navigate

Содержит элементы навигации по проекту

Search

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

Project

Инструмент управления проектами: открытие, закрытие, компиляция, генерация javadoc и пр.

Run

Управление запуском приложения, позволяет запустить приложение, отладку, а также приложения по точкам прерывания

Window

Управление окнами и перспективами. Переключение между компоновками. Вызов требуемых представлений

Help

Вызов справки, а также содержит вызов обновлений и описание программы Eclipse

Панель инструментов

Данная панель содержит кнопки быстрого доступа к наиболее часто используемым функциям Eclipse. Кнопки по функциональному назначению сгруппированы в группы. Первая группа — создание (проекта, пакета, класса, интерфейса, перечисления и т.д), сохранение и печать относится к команде File. Вторая группа — отладка, запуск и запуск с параметрами — относится к команде Run. Третья группа — новый проект, новый пакет и новый Java-файл (класс, интерфейс, перечисление) — дублирует первую кнопку для максимально быстрого доступа. Последняя, четвертая, группа содержит кнопки, относящиеся к поиску и навигации.

Представления

Окна браузера проекта и иерархии

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

Окна отчетности

В этих окнах отображаются основные события при работе с приложением — ошибки (вкладка Problems); комментарии (вкладка javadoc); код декларации (вкладка declaration).

Перспективы

С помощью кнопки производится переключение между различными компоновками, такими, как Java, Debug, Java Browsing, C++ и др.

Быстрые окна

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

Данная кнопка добавляет в окно браузера проекта различные панели (представления), такие, как Ant, Problems, Search, Navigator и т.д.

Если вы случайно закрыли какую-либо панель, например Package Explorer, с помощью данной кнопки можно ее восстановить.

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

Редактор кода

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

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

Сообщения об ошибках

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

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

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

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

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

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

Логические ошибки не приводят к прекращению выполнения программы в Eclipse. Информацию о них можно получить только после выполнения программы по неправильным результатам решения задачи. Логические ошибки являются следствием неправильного алгоритма программы, и среда разработки тут мало может помочь. Требуется вернуться на этап проектирования алгоритма, проверить его правильность и только затем приступить к исправлению.

Если кликнуть мышью на строку с ошибкой, Eclipse откроет или сделает активным окно кода файла класса и выделит в коде «проблемное» место: метод, модификатор, тип, поле и т.д., которое вызывает ошибку компиляции.

Пример. Локализация и устранение ошибок в программе.

1. Создайте новый класс ErrorTests.java и введите следующий код:

2. Добавьте синтаксическую ошибку путем удаления фигурной скобки, открывающей тело класса (рис. 1.6).

Рис. 1.6. Создание ошибки

3. Щелкните «Сохранить». Проект соберется заново и проблемное место отобразится несколькими способами (рис 1.7):

  •  В представлении Problems, проблемы можно пролистывать.
  •  В представлениях Package Explorer, Type, Hierarchy или Outline проблемные метки появляются на всех элементах Java, вызывающих проблемы, а так же на их родительских элементах.
  •  В редакторе в вертикальной линейке, отображается маркер напротив строки, вызывающей проблему.
  •  Волнистые линии могут появиться под словом или символом, являющимся причиной ошибки.

Рис. 1.7. Отражение ошибки

4. Вы можете навести курсор на маркер в вертикальной линейке для отображения описания ошибки (рис. 1.8).

Рис. 1.8. Комментарий к ошибке

5. Щелкните кнопку Закрыть  на вкладке редактора, что бы его закрыть.

6. В представлении Problems, выберите проблему из списка. Выберите GoTo, открыв контекстное меню (рис. 1.9). Файл откроется в редакторе на проблемном месте.

Рис. 1.9. Быстрый переход к ошибке

7. Исправьте ошибку путем добавления фигурной скобки.

Щелкните кнопку Save. Проект соберется заново и все маркеры ошибок пропадут.

8. Cтроку     System.out.print(«Hello»);     измените на 

System.out.print(«Hello»+x);.

9. В процессе ввода, ошибка отметится волнистой линией на переменной x, для индикации проблемы. Наведение курсора на подчеркнутое слово, вызывающее проблему вызовет всплывающее окно с описанием данной проблемы.

10. В вертикальной линейке маркеров появится значок с лампочкой . Лампочка сигнализирует о том, что для данной проблемы доступны варианты коррекции (рис. 1.10).

Рис. 1.10. Исправляемая ошибка

11. Щелкните на проблемное место, и выберите Quick Fix из пункта Edit строки меню. Вы так же можете нажать клавиши Ctrl+1 или щелкнуть левой кнопкой мыши на лампочке. Отобразится диалог с возможными вариантами исправлений (рис. 1.11).

Рис. 1.11. Возможности QuickFix

12. Выберите Create field 'x' чтобы исправить ошибку. В класс добавится поле x и волнистая линия, подсвечивающая проблемное место исчезнет.

Рис. 1.12. Программный код после исправления ошибки

13. Вы можете настроить процесс отображения ошибок в меню General/Editors/Text Editors/Annotations.

Панель Navigator

Панель (представление) Navigator служит для отображения структуры проекта, в котором расположены файлы проекта в виде дерева каталогов и файлов. Как и другие панели, она может быть вызвана нажатием кнопки , находящейся в левом нижнем углу для быстрого просмотра, либо командой из главного меню Window/Show View/Navigator.

В папке src (source) вы видите список файлов с расширением .java — это исходные тексты программы.

В папке bin (binary) находятся скомпилированные файлы классов программы, содержащие двоичный байт-код Java. Файлы с расширением .classpath и .project содержат служебную информацию о расположении классов и структуре проекта.

Рис. 13. Панель Навигатор

Панель Outline

Панель (представление) Outline отображает структуру текущего открытого файла Java, где в виде дерева отображаются структуры ООП (классы, поля, методы и т.д.), находящиеся в текущем открытом файле.

Как и другие панели, она может быть вызвана нажатием кнопки, находящейся в левом нижнем углу для быстрого просмотра, либо командой из главного меню Window/Show View/Outline.

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

Для перехода к нужному члену файла нужно дважды щелкнуть на требуемый элемент списка.

Настройки среды

Перед началом работы можно настроить поведение оболочки под свои требования. Окно настроек (рис. 1.14) можно открыть из главного меню, выбрав Window/Preferences.

Рис. 1.14. Окно настроек Eclipse

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

Таблица 1.3

Настройки Eclipse

Разделы

Назначение

General

Содержит общие настройки, не попадающие в остальные пункты

Ant

Содержит настройки сборщика проектов Ant

C/C++

Содержит настройки поддержки и разработки С++ приложений

Help

Содержит настройки справочной системы, такие, как способы открытия справочной информации, используемый Web-браузер и настройка сторонних справочных служб в сети Интернет

Install/Update

Содержит настройки процесса обновления Eclipse, а также настройки автообновления

Java

Один из обширнейших разделов настроек, в котором содержится огромное количество различных настроек Eclipse в режиме Java, начиная от подсветки и стиля кодирования и заканчивая подробными настройками компилятора

PHPeclipse Web Development

Содержит настройки, связанные с разработкой Java-приложений для Web. Включает в себя настройки браузера, серверов Apache и MySQL

Run/Debug

Содержит настройки, параметры запуска и отладки программ

Team

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

Из всех перечисленных разделов в табл. 3 интерес начинающим программистам Java могут представлять только пункты General и Java.

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

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

Пример. Создадим новый проект с именем Hello. Нажмите на черный треугольник кнопки на панели инструментов и в раскрывшемся списке (рис. 1.15) выберите Java Project (Проект Java).

Рис. 1.15. Создание нового проекта

Следующим будет окно с начальными настройками проекта (рис. 1.16).

Рис. 1.16. Параметры нового проекта

В поле Project name (Имя проекта) введите название нового проекта Hello. В группе Contents (содержимое) можно выбрать Create new project in workspace (Создать новый проект в рабочем пространстве), то есть в той папке, которую вы указали в качестве рабочего пространства, или же выбрать Create project from existing source (создать проект из имеющихся «исходных кодов»), то есть создать проект, который ранее уже был создан в других средах программирования и не является в строгом смысле проектом Eclipse.

Сейчас мы остановим выбор на команде Create new project in workspace (Создать новый проект в рабочем пространстве). В группе опций JRE (Java Runtime Environment) можно выбрать тип JRE для нового проекта, остановившись на опции Use default JRE (использовать JRE по умолчанию). В группе Project layout (Формат проекта) можно выбрать один из двух форматов: либо файлы класса и файлы источника будут иметь разделенные папки (Separate folders), либо папка проекта будет корневой (as root), хотя для файлов классов и для файлов источников здесь лучше выбрать вариант разделенных папок. Далее нажмите кнопку Finish.

Теперь проект создан и «рабочий стол» примет вид, представленный на рис. 1.17.

Рис. 1.17. Вид «рабочего стола» нового проекта

В левом окне Package explorer отображается структура текущего проекта.

Теперь создадим наш первый класс: нажмем черный треугольник на кнопке (или на кнопке ) и в раскрывшемся списке выберем Class (рис. 1.18).

  или

Рис. 1.18. Создание нового класса

Появится диалоговое окно создания нового класса (рис. 1.19).

Рис. 1.19. Параметры нового класса

В поле Source folder находится путь к файлу класса из рабочего пространства, там вы видите Hello/src, это означает, что класс будет располагаться в папке Hello /src, так как наш проект называется Hello, а src — это имя основного пакета, в котором хранятся исходные коды проекта. В поле Package (пакет) можно указать пакет, в котором будет находиться класс, поскольку мы не создавали еще никаких пакетов, то пусть наш класс будет находиться прямо в src. В поле Name введите имя класса HelloWorld; обратите внимание на то, что в имени класс нельзя использовать пробелы, как только в поле Name появится пробел, кнопка Finish станет неактивной. Здесь можно также выбрать набор модификаторов для класса, класс-родитель и интерфейсы класса. В нижней части окна имеется группа из трех кнопок, которая позволяет автоматически добавить некоторые основные методы:

  •  public static void main(String[] args) —метод main();
  •  Constructor from superclass — конструктор класса-родителя;
  •  Inherited abstract methods — наследованные абстрактные методы.

Нажимаем кнопку Finish. Теперь в нашем проекте есть один класс HelloWorld (рис. 1.20), после чего можно приступить к созданию программы.

Рис. 1.20. Новый класс в проекте.

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

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

Таблица 1.4

Комбинации клавиш

Сочетание клавиш

Назначение

Ctrl+N

Создание нового объекта, при этом будет запущен список выбора мастеров

Ctrl+M

Свертывание, развертывание окон редакторов и представлений

Ctrl+Shift+Пробел

Подсказка в параметрах метода

Ctrl+Shift+M

Вставка

Ctrl+F

Простой поиск

Ctrl+H

Сложный поиск

Ctrl+K

Повторить последний поиск

Ctrl+/

Комментировать одну строку кода

Ctrl+F6

Перебор редакторов. Следующий редактор

Ctrl+F8

Перебор перспектив. Следующая перспектива

Ctrl+F7

Перебор представлений. Следующее представление

Tab

Увеличение отступа кода

Shift+Tab

Уменьшение отступа кода

F12

Активировать редактор

F3

Открывает объявление выделенного элемента

Alt+-

Показать системное меню

Отладка и тестирование приложений

Отладка — это процесс пошаговой проверки программ и приложений с целью выявления ошибок.

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

Рассмотрим отладку на примере. Создайте новый класс с именем Debuging и введите предложенный код:

Для запуска отладчика нажмите кнопку с изображением жука на панели инструментов.

При нажатии данной кнопки включается режим отладки текущей программы, если окно кода программы активно. Если активна панель Package Explorer, то отладке подвергнется выбранный (выделенный) класс, при этом класс можно дополнительно выбрать, если их несколько.

На рис. 1.21 выделено поле, в котором пользователь может установить точки прерывания.

Рис. 1.21. Линейка точек прерывания

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

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

System.out.print ("Шаг "+i+"\n");.

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

Рис. 1.22. Предложение переключения рабочего стола

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

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

Рис. 1.23. Рабочий стол Debug

В компоновке Debug можно выделить следующие основные компоненты:

  •  Окно Debug. В данном окне отображаются задействованные в отладке элементы, а так же панель управления процессом отладки (рис. 1.24).

Рис. 1.24. Окно Debug

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

Вкладка Breakpoints содержит список точек прерывания, которые установил программист. Точки прерывания можно отключать и включать в процессе отладки, устанавливая или удаляя маркер напротив нужной точки (рис. 1.25). В левом столбце указаны идентификаторы (имена) переменных, в правом — их текущее значение.

Рис. 1.25. Окно переменных

  •  Панель Outline, редактор кода и консоль.

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

В нашем случае программа была остановлена на операторе вывода данных на консоль. После продолжения выполнения тело цикла продолжит выполняться, так как в теле нашего цикла только один оператор, он выполнится, и на консоль выведется первая строка, на первом шаге переменная i=0, в этом можно убедиться просмотрев вкладку Variables окна состояния (рис. 1.26).

Рис. 1.26. Состояние переменных на первом шаге

После вывода строки цикл начнет выполняться еще раз, переменная i изменится и станет равной 1. При этом в панели Variables она выделится желтым цветом, что сигнализирует о изменении ее значения (рис. 1.27).

Рис. 1.27. Состояние переменных на втором шаге

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

В отладчике Eclipse есть еще одна полезная функция, с помощью которой можно увидеть значения сложных выражений. Например, нас интересует значение логического выражения (условие), при котором выполняется цикл. Для этого выделите нужный текст, в нашем случае это i<10 в блоке условия цикла, и нажмите сочетание клавиш <Ctrl>+<Shift>+D, появится всплывающее окно, в котором будет отображен тип выражения (в нашем случае это boolean) и его состояние.

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

Для прерывания работы отладчика нажмите кнопку в панели Debug.

Помимо отладки c использованием безусловных точек прерывания, возможно дополнительно установить условия останова на точке прерывания. Это очень полезная особенность отладчика Eclipse, которая позволяет в некоторых случаях значительно упростить процесс отладки. Для того, чтобы задать условие, при котором будет происходить останов, нужно открыть окно свойств точки прерывания. Для этого наведите курсор мыши на нужную точку прерывания в строке, нажмите правую кнопку мыши, и выберите в раскрывающемся меню пункт Breakpoint Properties (рис. 1.28), откроется окно свойств выбранной точки прерывания (рис. 1.29).

Рис. 1.28 Выбор пункта Breakpoint Properties

Установите галочку на кнопке выбора Enable Condition (Включить Условие) и в поле ввода введите необходимое условие, при котором будет происходить останов на данной точке. Для примера, введите логическое выражение (i%2)==0. Данное выражение будет принимать значение «истина» каждый раз, когда остаток от деления i на 2 будет равен 0, то есть каждый раз, когда i будет принимать четные значения.

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

Так же можно выбрать тип условия прерывания — ниже, под полем ввода находится две кнопки выбора — condition is 'true' и value of condition changes. При выборе первого, останов будет происходить каждый раз, когда введенное логическое выражение примет значение «истина», при выборе второго, останов будет происходить каждый раз, когда введенное значение или константа изменит свое значение.

Раскрывающийся список Suspend Policy устанавливает политику останова. При выборе значения Suspend Thread останов будет происходить на уровне текущего потока thread, при выборе Suspend VM — на уровне самой виртуальной машины Java.

Рис. 1.29 Свойства точки прерывания

Примеры

Рассмотрим на простом примере ряд существенных особенностей языка Java.

Пример 2.1. Простейшая программа на Java.

Листинг 2.1. Простая программа

class HelloWorld {

 public static void main (String[] args){

 System.out.println("Всем большой привет!");

}

}

  •  Всякая программа представляет собой один или несколько классов, в этом примере только один класс (class).
  •  Начало класса отмечается служебным словом class, за которым следует имя класса, которое выбирается произвольно, в данном случае HelloWorld. Все, что содержится в классе, записывается в фигурных скобках и составляет тело класса (class body).
  •  Все действия производятся с помощью методов обработки информации, коротко говорят просто метод (method). Методы применяются в объектно-ориентированных языках вместо функций, применяемых в процедурных языках.
  •  Методы различаются по именам. Один из методов должен обязательно называться main, с него начинается выполнение программы. В примере только один метод, а значит, его имя main.
  •  Метод всегда выдает в результате (чаще говорят, возвращает (returns)) только одно значение, тип которого обязательно указывается перед именем метода. Метод может и не возвращать никакого значения, играя роль процедуры. Тогда вместо типа возвращаемого значения записывается слово void.
  •  После имени метода в скобках, через запятую, перечисляются аргументы (arguments) или параметры метода. Для каждого аргумента указывается его тип и, через пробел, имя. В примере только один аргумент, его тип – массив, состоящий из строк символов. Строка символов – это встроенный в Java API тип string, а квадратные скобки – признак массива. Имя массива может быть произвольным, в примере выбрано имя args.
  •  Перед типом возвращаемого методом значения могут быть записаны модификаторы (modifiers). В примере их два: слово public означает, что этот метод доступен отовсюду; слово static обеспечивает возможность вызова метода main() в самом начале выполнения программы. Модификаторы необязательны, но для метода main() они необходимы.
  •  Все, что содержит метод, тело метода (method body), записывается в фигурных скобках.

В примере (листинг 2.1) метод main() выполняет единственное действие, которое заключается в вызове другого метода с составным именем System.out.println и передаче ему на обработку одного аргумента – текстовой константы "Всем большой привет!". Текстовые константы записываются в кавычках, которые являются только ограничителями и не входят в состав текста.

Действие метода println() заключается в выводе своего аргумента в выходной поток, связанный с выводом на экран текстового терминала. После вывода курсор переходит на начало следующей строи экрана, на что указывает окончание ln, слово println – сокращение слов print line. В составе Java API есть и метод print(), оставляющий курсор в конце выведенной строки.

Рассмотрим, как работает программа из примера 2.1 в среде Eclipse.

Создадим новый проект и новый класс HelloWorld (см. п. 1.6) в Eclipse. Имя проекта должно в точности совпадать с именем класса, содержащего метод main. При создании нового класса после нажатия кнопки Finish создается проект с шаблонным программным кодом, то есть автоматически генерируется начальный код, в который потом вносятся изменения.

На рис. 2.1 представлено окно редактора Eclipse с шаблонным кодом нового созданного проекта.

Рис. 2.1. Программный код шаблона для нового проекта.

Введем программный код, представленный в Листинге 2.1, в окно редактора.

Окно редактора Eclipse с кодом программы представлено на рис. 2.2.

Рис. 2.2. Программный код проекта в среде Eclipse.

Для проверки работы кода нажмем кнопку . В окне Console появится результат работы программы в виде сообщения «Всем большой привет!» (Рис. 2.3).

Рис. 2.3. Результат выполнения программы.

Использование переменных

Рассмотрим пример программы с использованием переменных.

В листинге 2.2 приведен программный код, в котором использовано несколько переменных.

Листинг 2.2. Использование переменных

import javax.swing.*;

public class UsingVar {

 public static void main(String[] args) {

 String name="Иванов Иван Иванович";

 int age=60;

 char category='B';

 String text="Водитель: "+name;

 text=text+"\n"+"Возраст: "+age+" лет";

 text=text+’\n’+"Права категории: "+category;

 JOptionPane.showMessageDialog (null, text);

 }

}

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

Рис. 2.4. Результат выполнения программы.

Описание листинга 2.2. Первой командой программы является инструкция import javax.swing.*;, которая заканчивается точкой с запятой (; - так заканчиваются все команды в Java) и состоит из двух частей: ключевого слова import и инструкции javax.swing.*. Ключевое слово import является инструкцией подключения классов и пакетов. Фактически наличие этой инструкции означает, что подключается какой-то ресурс, или, другими словами, библиотека. Просто в Java библиотеки реализуются через классы, объединенные в пакеты. Какой именно ресурс подключается, позволяет определить вторая часть команды. В данном случае диалоговое окно, которое отображается при выполнении программы, описано в библиотеке графических компонентов, которая называется Swing. Это название присутствует в инструкции javax.swing.*. В такого рода инструкциях указывается полный путь к подключаемым средствам. Путь отражает структуру пакетов Java (пакет может содержать классы, интерфейсы и другие пакеты). В качестве разделителя при указании структуры пакетов используется точка, а звездочка означает все классы в пакете. Поэтому инструкция import javax.swing.* означает не что иное, как подключение библиотеки Swing.

Командой String name="Иванов Иван Иванович"; создается текстовая переменная name со значением "Иванов Иван Иванович". Целочисленная переменная age объявляется (инициализируется) командой int age=60 и содержит в качестве значения возраст водителя. Категория водительских прав - это всего одна буква. Для ее хранения можно использовать символьную переменную. Соответствующая переменная называется category, имеет тип char и получает значение 'В'. Все это реализуется командой char category='В'.

Текстовая (тип переменной String) переменная text нужна для того, чтобы записать в нее тот текст, который выводится в диалоговом окне. Значение переменной text определяется в несколько этапов. Сначала командой String text="Водитель: "+name; эта переменная объявляется и инициализируется со значением, которое получается объединением текста "Водитель:   " и текстового значения переменной name. Обращаем внимание, что в данном случае при объявлении и инициализации переменной text ее значение определяется выражением, в которое входит другая переменная (текстовая переменная name). Такая ситуация (когда при объявлении переменной инициализация выполняется выражением, содержащим другие переменные) называется динамическим объявлением переменной. При динамическом объявлении переменной важно, чтобы другие используемые при инициализации переменные были предварительно объявлены и инициализированы. В данном случае это условие выполнено: ранее переменной name было присвоено текстовое значение "Иванов Иван Иванович". Поэтому в результате переменная text получает значение "Водитель: Иванов Иван Иванович". Здесь при объединении текста в первой фразе "Водитель: " специально в конце добавлен пробел, чтобы при слиянии текстов пробел был между соседними словами.

Значение, которое получила переменная text, не является ее конечным значением. В частности, командой text=text+"\n"+"Возраст: "+age+" лет"; к текущему значению переменной text дописывается символ перехода к новой строке "\n", фраза "Возраст : ", затем значение переменной age (хотя это целочисленная переменная, ее значение автоматически преобразуется к текстовому представлению) и, наконец, фраза " лет ". Таким образом, переменная text содержит уже две строки из трех, которые выводятся программой в диалоговом окне. Стоит заметить, что, хотя инструкция перехода к новой строке "\n" реализована в данном случае в виде текста и состоит, формально, из двух символов (косой черты \ и буквы n), инструкция эта все равно считается одним символом и поэтому вместо двойных кавычек можно использовать и одинарные, как в следующей команде text=text+’\n’+"Права категории: "+category;, которой к тексту в переменной text добавляется еще одна инструкция перехода к новой строке, фраза "Права категории: " и значение переменной category. После этого переменная text содержит в качестве значения тот текст (с учетом построчной разбивки), который требуется отобразить в диалоговом окне. Само окно отображается командой JOptionPane. showMessageDialog (null, text).В этой команде ссылка JOptionPane есть не что иное, как класс библиотеки Swing. Класс JOptionPane отвечает за работу с диалоговыми окнами. В частности с его помощью можно создавать и отображать диалоговые окна четырех типов:

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

Именно для того, чтобы можно было использовать класс JOptionPane со всеми его утилитами, в начале программы и размещалась команда import javax. swing. *. Если бы мы не использовали класс JOptionPane, без указанной инструкции можно было обойтись.

У класса JOptionPane имеется статический метод showMessageDialog(), которым отображается диалоговое окно информационного типа, то есть окно для вывода информационного сообщения. Если вызывается статический метод класса, то правило его вызова такое: сначала указывается имя класса, и через точку имя метода с аргументами (если нужно). Метод showMessageDialog () допускает разный способ передачи аргументов. В данном случае методу передается два аргумента. Первым аргументом указано ключевое слово null. Вообще первый аргумент определяет, какое окно порождает отображаемое на экране диалоговое окно с сообщением. Ключевое слово null означает, что такого окна нет - диалоговое окно порождается не окном, а вызывается из метода main (). Вторым аргументом в метод showMessageDialog () передана текстовая переменная text.

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

Считывание ввода

В первом примере показано, как можно вывести информацию на "стандартное устройство вывода" (т.е. консольное окно), вызвав метод System.out.println. К сожалению, считать информацию со "стандартного устройства ввода" (т.е. клавиатуры) немного сложнее. Однако создать диалоговое окно для ввода данных с клавиатуры возможно следующим образом.

Вызов метода JOptionPane.showInputDialog(promptString) выводит на экран диалоговое окно, в котором пользователь может набрать свои данные (рис. 2.5).

Рис. 2.5. Окно ввода.

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

String name = JOptionPane.showInputDialog("What is your name?");

Чтобы считать число, нужно выполнить более сложную работу. Метод JOptionPane. showInputDialog возвращает строку, а не число. Для преобразования этой строки в число нужно использовать метод Integer.parselnt или Double.parseDouble, например:

String input = JOptionPane.showInputDialog("How old are you?");

int age = Integer.parselnt(input);

Если пользователь наберет на клавиатуре число 40, то строковой переменной input будет присвоена строка "40". Метод Integer.parselnt преобразовывает строку в соответствующее число, т.е. 40.

Программа, показанная в листинге 2.3, запрашивает имя пользователя и его возраст, а затем выводит сообщение, например, такое:

Hello, Cay. Next year, you'll be 41.

Листинг 2.3. Считывание ввода

import javax.swing.*;

public class InputTest {

 public static void main(String[] args) {

 // Первый ввод

 String name = JOptionPane.showInputDialog

   ("Назовите Ваше имя");

 // Второй ввод

 String input = JOptionPane.showInputDialog

   ("Сколько Вам лет?");

 // Преобразовать строку в целое число

 int age = Integer.parseInt(input);

 // Вывести результат на консоль

 System.out.println("Привет, " + name +

   ". В следующем году Вам будет " + (age + 1));

 System.exit(0);

}

}

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

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

Результат работы программы будет выведен в консольное, а не диалоговое окно.

Рассмотрим методы JOptionPane.showsInputDialog и System.out.println, поскольку их легче всего использовать.

Заметим, что программа завершает свою работу вызовом метода System.exit(0);

Каждый раз, когда программа вызывает метод JOptionPane.showsInputDialog, ее работу необходимо завершать вызовом метода System.exit(0). В основном это вызвано техническими причинами. Вывод на экран диалогового окна запускает новый поток управления. При завершении работы метода main этот новый поток управления не прекращает свою работу автоматически. Чтобы закрыть все потоки, нужно вызвать метод System.exit.

Метод System.exit получает целочисленный параметр, представляющий собой "код выхода" из программы. По умолчанию, если работа программы завершилась нормально, ее код выхода равен 0, в противном случае этот код не равен нулю. Для индикации разных ошибочных ситуаций можно использовать разные коды выхода. Завершенная программа передает свой код выхода операционной системе. Затем сценарии и bat-файлы могут проверять этот код.

Задания.

Задание 1

Написать приложение, выводящее n строк с переходом и без перехода на новую строку.

Задание 2

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

Задание 3

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

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

1. Укажите, для каких целей предназначена IDE Eclipse.

2. Укажите последовательность действий для вызова панели Outline.

3. Перечислите основные представления, доступные в перспективе Java.

4. Существует ли возможность создать проект Eclipse на основе уже готовых исходных текстов, созданных в других средах разработки? Что для этого необходимо сделать?

5. Для каких целей используется представление Problems?

6. Что такое примитивный тип в Java?

7. Какие существуют способы задания констант в Java?


 

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

42595. Метод измерения Рн прибором п-201 40.5 KB
  Цель работы: ознакомится с принципом действия и устройством промышленного Рнметра выполнить проверку ознакомится с устройством имитатора электронной системы. Схема собранная на преобразователе П201 назначение приборов П201 преобразовает сигнал с электродов Rt –замеряет температуру среды И02 иммитаор для проверки преобразователя М325 Рнметр предел измерений от 2 до12 МСР63 блок сопротивлений Соединительная схема протокол поверки: порядок работы проверку проверку производят при нормальных условиях T20C влажность...
42596. Геометрии токарных резцов 175.5 KB
  Наименование резца: А тип резца – проходной Б расположение главной режущей кромки – правый В форма и расположение головки резца – прямой Г способ крепления режущей части – напайной 2 Наименование резца: А тип резца – подрезной Б расположение главной режущей кромки – правый В форма и расположение головки резца – отогнутый Г способ крепления режущей части – напайной Результаты измерений Измеряемые элементы Обозначение Величина ВК81 ВК8 Главный передний угол γ 750 20 Передний угол фаски γ _ _ Главный задний угол α 130 1650 Угол...
42597. Методологія розробки програмних продуктів та великих програмних систем 333.5 KB
  2010 18:00 77 Общий сбор scrum meeting 71.2010 9:00 78 Общий сбор scrum meeting 1 .2010 9:00 79 Общий сбор scrum meeting 2 .2010 9:00 80 Общий сбор scrum meeting 3 .
42598. Метод измерения Рн-прибором п-201с применением измерительных электродов 37 KB
  Березниковский филиал Пермского Государственного Технического Университета лабораторная работа №3 По курсу: методика автоматического анализа Тема: метод измерения Рнприбором п201с применением измерительных электродов Выполнил: студент гр. Цель работы: произвести измерение с помощью электродов сравнить данные с приборов с истинным значением сделать вывод. назначение приборов П201 преобразовывает сигнал с электродов Rt –замеряет температуру среды М325...
42599. Изучение конструкции и геометрических параметров спиральных сверл 517 KB
  Угол наклона винтовой канавки а расчетный б по отпечатку в по угломеру ЛМТ ω1 ω2 ω3 280 270 270 9. Угол при вершине сверла Угол при режущей кромки 1 Угол при режущей кромки 2 2φ φ1 φ2 3440 34020’ 34020’ 11. Угол наклона поперечной режущей кромки: по угломеру ψ 5310 13. Главный задний угол в осевой плоскости: rx=09r rx=04r 108 48 16.
42600. ФИЗИОЛОГИЯ СОСУДИСТОЙ СИСТЕМЫ. КРОВЯНОЕ ДАВЛЕНИЕ И ПУЛЬС 220.37 KB
  Кровяное давление как основной показатель гемодинамики. Факторы, обуславливающие величину артериального и венозного давления. Методы исследования. Артериальный и венный пульс, их происхождение. Анализ сфигмограммы и флебограммы.
42601. Конструктивные элементы и геометрические параметры фрез 150.5 KB
  Фреза — инструмент с несколькими режущими лезвиями (зубьями) для фрезерования. Виды фрез по геометрии(исполнению) бывают — цилиндрические, торцевые, червячные, концевые, конические и др. Виды фрез по обрабатываемому материалу - дерево,сталь, чугун, нержавеющая сталь, закаленная сталь, медь, алюминий, графит. Материал режущей части — быстрорежущая сталь, твёрдый сплав, минералокерамика, металокерамика или алмаз, массив кардной проволоки.
42602. Классификация токарных резцов 82 KB
  Характеристика резцов Материал режущей части Назначение Форма и расположения головки Направления подачи Конструкция Характер обработки Форма передней поверхности 1 ВК 6 Проходной прямой левый Прямая Левое Напайная Черновая Плоская с положительным передним углом 2 ВК 8 Подрезной торцевой левый Прямая Левое Напайная Черновая Плоская с положительным передним углом 3 ВК 8 Подрезной торцевой левый Отогнутая Левое Напайная Черновая Плоская с положительным передним углом 4 Проходной прямой левый Отогнутая Правое Цельная Черновая Плоская с...
42603. Формы в HTML-документах 80 KB
  enctype Атрибут указывающий способ кодирования содержимого формы для передачи программеобработчику. type Атрибут type определяет вид элемента INPUT. Значения атрибута type элемента INPUT: type= text по умолчанию Создание поля ввода в котором можно сразу после загрузки страницы разместить произвольный текст используя атрибут vlue. Например INPUT nme= T1 vlue= Родион type= pssword Создание поля для ввода пароля.