methodichkaA5
.pdfП.Е. Пустовойтов
ПРОГРАММИРОВАНИЕ НА JAVA 2
учебное пособие по дисциплине
«Вычислительная техника и программирование»
для студентов специальности 6.091200 - Видео-, аудио- и кинотехника
Утверждено редакционно-издательским советом университета, протокол №___ от ________
Харьков НТУ «ХПИ» 2007
1
ББК хх.ххх
УДК ххх.ххх
Рецензенты: Л.Г. Раскин, доктор техн. наук, НТУ «ХПИ» Н.Ф.Логвиненко, канд. техн. наук, ХГУВД
Пустовойтов П.Є. Програмування на JAVA 2: Навчальний посібник. – Харків: НТУ «ХПІ», 2007. – 76 с.
Представлен первый раздел «Программирование на JAVA 2» дисциплины
«Вычислительная техника и программирование». Изложен учебно-теоретический материал,
описывающий основные понятия и принципы программирования в целом. Теоретический материал сопровождается примерами программ на JAVA 2.
Предназначено для студентов специальности 6.091200 - Видео-,аудио- и кинотехника.
Представлено перший розділ «Програмування на JAVA 2» дисципліни «Обчислювальна техніка та програмування». Викладено учбово-теоретичний матеріал, що описує основні поняття й принципи програмування в цілому. Теоретичний матеріал супроводжується прикладами програм на JAVA 2.
Призначено для студентів спеціальності 6.091200 - Відео-, аудіота кінотехніка.
Ил. 10. Табл. 10. Библиогр. 6 назв.
ISBN
© П.Е. Пустовойтов, 2007
©НТУ «ХПИ», 2007
2
Вступление
Дисциплина «вычислительная техника и программирование» построена на изучении объектно-ориентированного языка программирования Java.
Если кратко, то Java - это один из языков программирования. Он разработан компанией Sun и является платформо-независимым. Это означает, что программа, написанная на Java, будет одинаково выполняться в любой операционной системе (Windows, Linux, и др.). Это достигается путем того, что, текст программы переводится с помощью компилятора не в родные для процессора команды, а в коды виртуальной java-машины (JVM). Коды виртуальной машины одинаковы на любой платформе, и именно поэтому одна и та же программа и будет работать на разных платформах. Эти коды называются байт-кодами. Сама же виртуальная машина, естественно, зависит от платформы (виртуальная машина для Windows отличается от виртуальной машины для других ОС). В процессе изучения курса будем разрабатывать программы на Java для Windows, но это не означает, что они не будут работать на других платформах (рис.1).
Код |
|
Двоичный |
|
Код |
Компилятор |
БайтКод |
|
||
|
|
интер- |
|||||||
программ |
|
файл |
программы |
Java |
Java |
||||
|
претатор |
||||||||
|
|
windows |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
windows |
|
____ |
Windows |
|
|
____ |
|
|
____ |
|
|
|
|
|
|
|
|
|
|||
____ |
|
Двоичный |
|
____ |
|
|
____ |
|
интер- |
____ |
|
|
|
|
|
||||
|
файл |
|
____ |
|
|
____ |
|
||
|
|
|
|
|
претатор |
||||
____ |
|
|
|
|
|
||||
|
linux |
|
____ |
|
|
____ |
|
linux |
|
____ |
|
|
|
|
|
||||
Unix |
|
|
____ |
|
|
____ |
|
|
|
____ |
|
|
|
|
|
|
|||
|
|
|
|
|
|||||
|
|
|
____ |
|
|
____ |
|
|
|
|
|
Двоичный |
|
|
|
|
|
|
интер- |
|
|
файл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
претатор |
|
|
|
OS/2 |
|
|
|
|
|
|
OS/2 |
|
OS/2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 1 – Различие между программами, написанными на Java и программами, написанными на других языках
Прежде чем приступать к написанию программ необходимо ознакомиться с набором средств для разработки приложений.
JDK расшифровывается как Java Developer Kit. Это набор программ и утилит, предназначенный для программирования на Java. В его состав входит ряд утилит.
3
компилятор javac. Переводит текст программы на Java в байт-коды виртуальной машины. Для каждой операционной системы разработан свой компилятор javac, но байт-коды они генерируют одинаковые, не зависящие от операционной системы;
интерпретатор java. С его помощью запускаются откомпилированные в байт-коды программы. Он содержит в себе JVM (Виртуальную машину Java);
утилита appletviewer. С ее помощью можно запускать апплеты (программы, разрабатываемые для внедрения в HTML страницы);
утилита javadoc. Предназначена для создания документации.
Скачать JDK можно с сайта www.java.sun.com . JDK - это бесплатный набор. Как следствие, пользователям чистого JDK приходится работать без особого комфорта - тексты программ необходимо набирать в Блокноте или аналогичном текстовом редакторе. Чтобы написать программу на Java, необходим качественный редактор. В качестве редактора будем использовать
Borland Java Builder X.
Направления, по которым развивается java.
написание приложений ЭВМ;
Applet;
Servlet;
JSP, JavaBeans;
приложения для мобильных телефонов и карманных компьютеров;
1.Первые шаги в программировании
1.1.Первая программа на Java
1.Создание проекта. Выбираем пункт меню File->new project. В поле Name вводим название проекта «prg1» (рекомендуется обратить внимание на большие и маленькие буквы). Нажимаем кнопку finish.
2.Создание класса в проекте. Пункт меню File->new, закладка General. Выбираем пиктограмму class. В поле Class name вводим название класса «FirstProg». Нажимаем кнопку OK.
После вышеперечисленных манипуляций средой JBuilderX, будет автоматически сгенерирован следующий код программы.
package prg1;
/**
* <p>Title: </p>
4
*<p>Description: </p>
*<p>Copyright: Copyright (c) 2005</p>
*<p>Company: </p>
*@author not attributable
*@version 1.0
*/
public class FirstProg { public FirstProg() {
}
}
Исправим его до такого кода.
package prg1;
import java.lang.*;
public class FirstProg{
public static void main(String [] args){
System.out.println("Hello World!");
}
}
Здесь
package prg1; – название пакета в котором будет находиться разрабатываемый класс;
import java.lang.*; – подключение дополнительных классов и пакетов; public – сообщаем, что класс является общедоступным;
class FirstProg{ – название класса. Далее от символа { до последнего символа } будет находиться внутренний код класса – сама программа;
public static void main(String [] args){ – главный метод класса, называемый
еще и запускающим методом. Он всегда является общедоступным public и статическим static. Тип выдаваемых данных метода - void, это значит, что этот метод не выдает данных.
main – название метода. Между фигурными скобками, которые ограничивают тело метода, собственно говоря, и будет находиться текст первой программы.
System.out.println("Hello World!"); – в теле программы вызывается функция
вывода на консоль надписи
Hello World!
Во время первого запуска JBuilder предложит настроить RunTime Configuration. В появившемся окне нажимаем кнопку new. В поле main class указываем имя главного класса, в данном случае это – prg1.FistProg. Сохраняем RunTime Configuration и запускаем заново программу.
5
1.2. Переменные и типы данных
Переменная – ячейка в памяти, которая может принимать и хранить какое-нибудь значение (цифра, буква, набор букв). Каждая переменная имеет имя, тип и значение. Прежде чем использовать переменную, ее необходимо объявить. После того как переменная объявлена, ей можно присвоить значение.
Объявление переменных состоит из указания типа и имени переменной.
int myAge;
String myName;
boolean isTired;
Здесь переменная myAge имеет целочисленный тип, myName – текстовая, isTired – логическая (принимает значения true или false).
Переменная может быть объявлена в любом месте метода, хотя рекомендуется объявлять переменные в начале метода.
public static void main (String args[]) {
int count;
String title;
boolean isAsleep;
}
Несколько переменных одного типа могут быть объявлены через запятую.
int x, y, z;
String firstName, LastName;
Во время объявления переменной можно присваивать ей значение.
int myAge= 29;
String myName = "Pustovoitov"; boolean isMarried = false;
int a = 4, b = 5, c = 6;
Имя переменной может начинаться с буквы, символа подчеркивания или знака доллара. Переменные не могут начинаться с цифры. После первой буквы имя переменной может содержать любую букву или цифру.
Таблица 1 – Целочисленные типы данных
Тип |
Размер |
Диапазон |
|
byte |
8 bits |
-128 to |
127 |
short |
16 bits |
-32,768 to 32,767 |
|
int |
32 bits |
-2,147,483,648 to |
2,147,483,647 |
long |
64 bits |
-9,223,372,036,854,775,808 to |
9,223,372,036,854,775,807 |
|
|
6 |
|
Таблица 2 – Другие типы данных
Тип |
|
Название |
|
|
Пример |
|||
float |
|
Дробный тип |
|
float f=(float)3.5; |
||||
double |
Дробный тип двойной точности |
|
double d=3.1234567; |
|||||
String |
Строковый или текстовый |
String cityName = "Kharkiv"; |
||||||
char |
|
Символьный |
|
String firstLetter = ‘K’; |
||||
boolean |
|
Логический |
Принимает только значения |
|||||
|
|
|
|
|
|
true или false |
||
|
|
|
|
|
|
|
|
|
Таблица 3 – Арифметические операции |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Оператор |
|
Название операции |
|
Пример |
||
|
|
+ |
|
Сложение |
|
|
3 + 4 |
|
|
|
- |
|
Вычитание |
|
|
5 - 7 |
|
|
|
* |
|
Умножение |
|
|
5 * 5 |
|
|
|
/ |
|
Деление |
|
|
14 / 7 |
|
|
|
% |
|
Остаток от деления |
|
|
20 % 7 |
|
Пример.
Программа выполняет поочередно сложение, вычитание, деление значений двух переменных и ищет остаток от деления первой переменной на вторую.
package prg1; import java.lang.*; class ArithmeticTest {
public static void main (String args[]) { short x = 6;
int y = 4;
System.out.println("x равен " + x + ", y равен " + y);
System.out.println("x + y = " + (x + y));
System.out.println("x - y = " + (x - y));
System.out.println("x / y = " + (x / y));
System.out.println("x % y = " + (x % y));
}
}
Результат.
x равен 6, y равен 4
x + y = 10
x - y = 2
7
x / y = 1
x % y = 2
При написании программ необходимо следить за тем, чтобы название класса совпадало с названием файла с расширением .java. Таким образом,
классу ArithmeticTest будет соответствовать файл ArithmeticTest.java.
1.3. Присваивание
Присваивание значений переменным можно сделать следующим способом.
x = y = z = 0;
Таким образом, во все три ячейки памяти записывается значение 0.
x = x + 2;
Это значит, что к значению переменной x прибавляется 2, а результат записывается в переменную x, затирая, при этом, старое значение.
Если до выполнения операции x = x + 2 в переменной х было записано число 5, то после операции в ней будет храниться число 7.
Таблица 4 – Операторы присваивания
Выражение |
Значение |
x += y |
x = x + y |
x -= y |
x = x - y |
x *= y |
x = x * y |
x /= y |
x = x y |
x++ или ++x |
Инкремент x=x+1 |
x-- |
Декремент x=x-1 |
Пример.
Программа показывает разницу между вычислениями y=x++ и y=++x. В случае y=x++ в переменную y записывается значение х, а потом значение х увеличивается на единицу. В случае y=++x сначала х увеличивается на единицу, а потом новое значение х записывается в у.
class PrePostFixTest {
public static void main (String args[]) { int x = 0;
int y = 0;
System.out.println("x и y равны " + x + " и " + y ); x++;
8
System.out.println("x++ результат " + x); ++x;
System.out.println("++x результат " + x);
System.out.println("Обнуляем х");
x = 0; System.out.println("------------"); y = x++; System.out.println("y = x++ :"); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("------------"); y = ++x; System.out.println("y = ++x :"); System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("------------");
}
}
Результат.
x и y равны 0 и 0 x++ результат 1 ++x результат 2
Обнуляем х
------------
y = x++ : x = 1
y = 0
------------
y = ++x : x = 2
y = 2
------------
1.4. Порядок выполнения простых математических операций
Вычислим следующие значения функций.
y = 6 + 4 / 2;
y = (6 + 4) / 2;
Результат будет различен, потому что операция деления имеет больший приоритет, чем операция сложения. Поэтому, в первом случае результат будет
9
равен восьми, а во втором случае пяти. Таким образом, компилятор выполняет вычисление сложных формул согласно приоритету операций.
Таблица 5 – Приоритет выполнения операторов
Оператор |
|
Пояснение |
() |
|
Скобки обладают максимальным |
|
|
приоритетом |
|
|
|
++ -- ! ~ |
|
Инкремент, декремент, отрицание |
* / % |
|
Умножение, деление, остаток от деления |
+ - |
|
Сложение вычитание |
<< >> >>> |
|
Операторы двоичного сдвига |
< > <= >= |
|
Операторы сравнения |
== != |
|
Равно, неравно |
& |
|
AND |
^ |
|
XOR |
| |
|
OR |
&& |
|
Логическое AND |
|| |
|
Логическое OR |
= += -= *= /= %= ^= |
|
Присваивания |
&= |= <<= >>= >>>= |
|
Другие присваивания |
1.5. |
Преобразования числовых типов |
Часто возникает необходимость преобразовать один числовой тип в другой. На рисунке 2 показаны разрешенные преобразования.
Шесть черных стрелок (рис. 2) обозначают преобразования, которые выполняются без потери информации. Три серые стрелки означают преобразования, при которых может произойти потеря точности. Например, количество цифр в большом целом числе 123456789 превышает количество цифр, которое может быть представлено типом float. Число, преобразованное в тип float, имеет правильную величину, но несколько меньшую точность.
int n = 123456789; float f = n; // Число n равно 1.234S67892E8.
Если два значения объединяются бинарным оператором (например n+f, где n -целое число, a f - число с плавающей точкой), то перед выполнением операции оба операнда преобразовываются в числа, имеющие одинаковый тип.
10