

Лекция 1. Введение в Java. |
|
|
|
Содержание |
|
|
|
Лекция 1. Введение в Java.......................................................................................................................... |
|
1 |
|
1.1. Отличия Java от C++..................................................................................................................... |
|
1 |
|
1.2. |
Необходимое программное обеспечение. Установка............................................................. |
2 |
|
1.3. |
Интерфейс NetBeans. Первая программа.................................................................................. |
|
3 |
1.4. |
Типы данных................................................................................................................................ |
|
8 |
1.5. |
Основные конструкции языка.................................................................................................. |
10 |
|
1.6. |
Консольный ввод-вывод........................................................................................................... |
13 |
|
1.1.ОтличияJava отC++. |
|
|
|
|
Таблица 1.1. Сравнение языков программирования C++ и Java. |
||
|
C++ |
Java |
|
Переносимость на уровне исходного кода. |
Переносимость на уровне байт-кода. Принцип: |
|
|
Принцип: Write once compile anywhere (WOCA). |
Write once run anywhere / everywhere (WORA / |
|
|
|
|
WORE). |
|
Разрабатывался для системного |
Разрабатывался для прикладного |
|
|
программирования. |
программирования в неоднородных |
|
|
|
|
компьютерных сетях и программирования |
|
|
|
бытовых электронных устройств. |
|
Возможно использование процедурного и |
Полностью объектно-ориентированный язык. |
|
|
объектно-ориентированного |
|
|
|
программирования. |
|
|
|
Явное управление памятью, поддержка |
Отсутствие указателей, не допускается прямое |
|
|
указателей. |
обращение к памяти. |
|
|
Отсутствие контроля границ массивов. |
Контроль границ массивов. |
|
|
Программа сама управляет выделением и |
Автоматическая сборка мусора. |
|
|
освобождением памяти. |
|
|
|
Поддержка множественного наследования. |
Множественное наследование реализовано с |
|
|
|
|
помощью интерфейсов. |
|
Отсутствует стандартный механизм |
Документирование с помощью Javadoc. |
|
|
документирования исходного кода. |
|
|
|
Поддержка оператора goto. |
Отсутствие оператора goto. Поддержка меток в |
||
|
|
циклах. |
|
Нестрогий контроль типов. |
Строгий контроль типов. |
|
Исходный код программ на Java хранится в файлах с расширением *.java. Во время компиляции каждый файл *.java преобразуется в соответствующий файл с расширением *.class. В отличие от C++, в Java исходный код компилируется не в набор инструкций конкретного процессора, а в платформенно-независимый байт-код (инструкции абстрактного Java-процессора). Несколько файлов *.class, а также необходимые ресурсы (например html-файлы, изображения, звуковые файлы) для удобства могут быть объединены в один архив *.jar. Файлы *.class или *.jar могут быть запущены под управлением виртуальной машины Java (JVM, Java Virtual Machine), которая

преобразует байт-код в инструкции того процессора, на котором они выполняются. Таким |
||||
образом, достигается переносимость скомпилированных приложений Java на любую |
||||
процессорную архитектуру. Достаточно, чтобы для этой архитектуры существовала Java-машина. |
||||
|
|
|
Таблица 1.2. Компиляция программ. |
|
*.c, *.cpp, *.h |
*.obj |
|
Исполняемый |
|
C++ |
|
|
модуль |
|
(файлы исходного кода) |
(объектные файлы) |
|||
|
||||
*.java |
*.class |
|
*.jar |
|
Java |
|
|
|
|
(файлы исходного кода) |
|
|
(архив Jar) |
|
|
|
|
Таблица 1.3. Выполнение программ. |
|
C++ |
|
|
Java |
|
Исполняемый модуль |
|
Архив Jar или файл *.class |
||
(имеет формат, поддерживаемый |
|
(содержит платформенно- |
||
требуемой операционной системой, и |
|
независимый байт-код) |
||
содержит инструкции требуемой |
|
|
|
|
архитектуры процессора) |
|
|
|
JVM (Java Virtual Machine) –
Виртуальная машина Java. Операционная система
(преобразует байт-код в инструкции целевого процессора во время выполнения, JiT (Just in Time) –
компиляция)
Операционная система
1.2.Необходимоепрограммноеобеспечение.Установка.
Для программирования на Java требуется:
•JDK (Java Development Kit) – набор инструментов разработки на языке Java (включён в Mac OS X, для Windows требуется скачать с сайта http://www.oracle.com/technetwork/java/javase/downloads/index.html)
•Интегрированная среда разработки (IDE, Integrated development environment).

Внастоящее время существует несколько свободно распространяемых сред разработки на Java:
•NetBeans (http://netbeans.org/)
•Eclipse (http://www.eclipse.org/)
•JDeveloper (http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html)
Атакже, коммерческие IDE, такие как:
•IntelliJ IDEA (http://www.jetbrains.com/idea/)
•JBuilder (http://www.embarcadero.com/products/jbuilder)
1.3.Интерфейс NetBeans.Перваяпрограмма.
Создание проекта на Java в среде NetBeans.
1.В меню File выберите пункт New Project. В появившемся окне выберите в списке Categories пункт Java, а в списке Projects – Java Application. Нажмите кнопку Next.

2.В пункте Project Name введите название Вашего проекта. Если отмечен пункт Create Main Class, будет автоматически создан главный класс проекта. Нажмите кнопку Finish.
3.Во вкладке Projects появится структура созданного проекта.
4.Если был создан главный класс проекта, он будет автоматически открыт в редакторе.

5.Можно добавить в проект другие классы, выбрав в меню File пункт New File. В списке
Categories выберите Java, а в списке File Types – Java Class. Нажмите кнопку Next.
6. В пункте Class Name введите имя класса. Нажмите кнопку Finish.

Запуск программ в среде NetBeans (на примере программы вычисления корней квадратного уравнения).
1.Создайте проект с главным классом Main. Введите в редакторе текст программы вычисления корней квадратного уравнения (листинг 1.1).
2.В меню Run выберите пункт Run Main Project. В нижней части окна среды появится текстовая консоль, которая отображает вывод программы и позволяет вводить данные.

3.В случае успешного завершения программы в консоль будет выведено сообщение BUILD SUCCESSFUL.
Листинг 1.1. Первая программа (нахождение корней квадратного уравнения).
import java.io.*; public class Main {
public static void main(String[] args) throws IOException { double a, b, c, d;
BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
System.out.print("Введите коэффициент a: "); a = Double.parseDouble(in.readLine()); System.out.print("Введите коэффициент b: "); b = Double.parseDouble(in.readLine()); System.out.print("Введите коэффициент c: ");
c = Double.parseDouble(in.readLine()); if ((d = b * b - 4 * a * c) < 0) {
d = 0.5 * Math.sqrt(-d) / a; a = -0.5 * b / a;
System.out.printf("x1 = %.2f - i%.2f\nx2 = %.2f + " +
"i%.2f\n", a, d, a, d);
} else {
d = 0.5 * Math.sqrt(d) / a; a = -0.5 * b / a;
System.out.printf("x1 = %.2f\nx2 = %.2f\n", a - d, a + d);
}
}
}
1.4.Типы данных.
Типы данных в java делятся на примитивные и объектные. Примитивные типы строго определены в соответствие с синтаксисом языка Java. Все объектные типы являются наследниками класса Object, пользователь может создать любое количество собственных объектных типов. Каждому примитивному типу данных для удобства поставлен в соответствие объектный тип. Такие типы называются оболочечными классами.
|
|
|
|
|
|
|
|
|
Таблица 1.4. Целочисленные типы данных. |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
Тип |
|
Оболочечный |
Ширина (в |
Область допустимых значений |
||||||||
|
|
класс |
битах) |
|
|
|
|
|
||||
long |
|
Long |
64 |
|
|
-9223372036854775808 .. 9223372036854775807 |
||||||
int |
|
Integer |
32 |
|
|
-2147483648 .. 2147483647 |
||||||
short |
|
Short |
16 |
|
|
-32768 .. 32767 |
|
|
|
|||
byte |
|
Byte |
8 |
|
|
|
-128 .. 127 |
|
|
|
||
|
|
|
|
|
|
|
|
|
Таблица 1.5. Примеры целочисленных констант. |
|||
Представление |
|
|
|
|
Типы byte, short и int |
|
|
Тип long |
||||
Десятичное представление |
|
|
|
|
349 |
|
|
|
|
349L |
||
Восьмеричное представление |
|
|
|
|
0567 |
|
|
|
|
0567L |
||
Шестнадцатеричное представление |
0x4d5a |
|
|
|
|
0x4d5aL |
||||||
|
|
|
|
|
|
|
Таблица 1.6. Операторы для работы с целочисленными данными. |
|||||
|
|
|
|
|
|
|
|
|
|
|||
Оператор |
|
|
|
|
Назначение |
|
|
|
Пример |
|||
+ |
|
|
|
|
|
Сложение |
|
|
|
a+b |
||
- |
|
|
|
|
|
Вычитание |
|
|
|
a-b |
||
* |
|
|
|
|
|
Умножение |
|
|
|
a*b |
||
/ |
|
|
|
|
|
Целочисленное деление |
|
a/b |
||||
% |
|
|
|
|
|
Остаток от деления |
|
a%b |
||||
= |
|
|
|
|
|
Присваивание |
|
|
|
a=b |
||
++ |
|
|
|
|
|
Инкремент |
|
|
|
a++, ++a |
||
-- |
|
|
|
|
|
Декремент |
|
|
|
a--, --a |
||
+= |
|
|
|
|
|
Сложение с присваиванием |
|
a+=b |
||||
-= |
|
|
|
|
|
Вычитание с присваиванием |
|
a-=b |
||||
*= |
|
|
|
|
|
Умножение с присваиванием |
|
a*=b |
||||
/= |
|
|
|
|
|
Целочисленное деление с |
|
a/=b |
||||
|
|
|
|
|
|
присваиванием |
|
|
|
|
|
|
%= |
|
|
|
|
|
Остаток от деления с |
|
a%=b |
||||
|
|
|
|
|
|
присваиванием |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.7. Вещественные типы. |
||
Имя |
Оболочечный |
|
Ширина (в битах) |
Область допустимых значений по модулю |
||||||||
|
|
класс |
|
|
|
|
|
|
|
|
|
|
double |
Double |
|
64 |
|
|
4.9e-324 .. 1.8e+308 |
||||||
float |
Float |
|
32 |
|
|
1.4e-045 .. 3.4e+038 |
||||||
|
|
|
|
|
|
|
|
|
Таблица 1.8. Примеры вещественных констант. |
|||
|
|
|
|
|
|
|
|
|
||||
Запись |
|
|
|
|
Тип double |
|
|
Тип float |
||||
Стандартная |
|
|
23.657 |
|
|
23.657f |
||||||
Научная |
|
|
|
|
3.1415e-13 |
|
|
3.1415e-13f |
||||
|
|
|
|
|
|
|
Таблица 1.9. Операторы для работы с вещественными типами. |
|||||
|
|
|
|
|
|
|
|
|
|
|||
Оператор |
|
|
|
|
Назначение |
|
|
|
Пример |
|||
+ |
|
|
|
|
|
Сложение |
|
|
|
a+b |
||
- |
|
|
|
|
|
Вычитание |
|
|
|
a-b |
* |
|
|
|
Умножение |
|
|
|
|
a*b |
||
/ |
|
|
|
Деление |
|
|
|
|
a/b |
||
% |
|
|
|
Остаток от деления |
|
|
a%b |
||||
= |
|
|
|
Присваивание |
|
|
|
|
a=b |
||
++ |
|
|
|
Инкремент |
|
|
|
|
a++, ++a |
||
-- |
|
|
|
Декремент |
|
|
|
|
a--, --a |
||
+= |
|
|
|
Сложение с присваиванием |
|
|
a+=b |
||||
-= |
|
|
|
Вычитание с присваиванием |
|
|
a-=b |
||||
*= |
|
|
|
Умножение с присваиванием |
|
|
a*=b |
||||
/= |
|
|
|
Деление с присваиванием |
|
|
a/=b |
||||
%= |
|
|
|
Остаток от деления с |
|
|
a%=b |
||||
|
|
|
|
присваиванием |
|
|
|
|
|
||
Символьный тип в Java имеет ширину 16 бит и представляет собой символ в двухбайтной |
|||||||||||
кодировке Unicode. |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.10. Символьный тип. |
|
|
|
|
|
|
|
|
|
|||
Имя |
Оболочечный класс |
|
Ширина (в битах) |
Область допустимых значений |
|||||||
char |
Character |
|
16 |
|
|
\u0000 .. \uFFFF |
|||||
|
|
|
|
|
|
|
Таблица 1.11. Примеры символьных констант. |
||||
Запись |
|
|
|
|
|
Пример |
|
|
|
||
Непосредственно символ |
|
|
|
‘a’ |
|
|
|
||||
Значение символа в восьмеричной форме |
|
‘\141’ |
|
|
|
||||||
Значение символа в шестнадцатеричной форме |
|
‘\u0061’ |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
Таблица 1.12. Логический тип. |
|
|
|
|
|
|
|
|||||
Имя |
|
Оболочечный класс |
|
Область допустимых значений |
|||||||
boolean |
|
Boolean |
|
true, false |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Таблица 1.13. Логические операторы. |
||
Оператор |
|
|
Назначение |
|
|
|
Пример |
||||
&& |
|
|
|
Логическое И |
|
|
|
a&&b |
|||
|| |
|
|
|
Логическое ИЛИ |
|
a||b |
|||||
! |
|
|
|
Логическое НЕ |
|
|
|
!a |
|||
|
|
|
|
|
|
|
|
|
Таблица 1.14. Операторы сравнения. |
||
Оператор |
|
|
Назначение |
|
|
|
Пример |
||||
== |
|
|
|
Равно |
|
|
|
a==b |
|||
!= |
|
|
|
Не равно |
|
|
|
a!=b |
|||
> |
|
|
|
Больше |
|
|
|
a>b |
|||
< |
|
|
|
Меньше |
|
|
|
a<b |
|||
>= |
|
|
|
Больше или равно |
|
a>=b |
|||||
<= |
|
|
|
Меньше или равно |
|
a<=b |
Все остальные типы являются объектными. Переменная объектного типа содержит ссылку на объект или значение null, если она не связана ни с каким объектом.

1.5.Основные конструкции языка.
Комментарии.
•Однострочный комментарий открывается двумя прямыми слешами //. Всё, что стоит правее этих символов является комментарием и игнорируется компилятором. Пример:
// Это комментарий
•Многострочный комментарий заключается в скобки из символов /* и */. Всё что находится внутри этих скобок является комментарием и игнорируется компилятором.
Пример:
/* Это многострочный Комментарий */
Составной оператор.
Составной оператор представляет собой несколько операторов, заключённых в фигурные скобки {}. Этот оператор используется, если требуется последовательность нескольких операторов в конструкциях, предусматривающих использование только одного оператора, например, после оператора if.
Пример:
{
Оператор1; Оператор2;
}
Условный оператор if.
if( условие )
else оператор1; |
|
|
|
|
|||||
|
|
|
Да |
|
|||||
оператор2; |
|
|
|
|
|
|
|||
условие |
|
|
|||||||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
оператор2 |
|
|
|
оператор1 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Условие – любое выражение, возвращающее тип boolean. В случае, если условие истинно, выполняется оператор1, если условие ложно, выполняется оператор2.
Также используется редуцированная форма оператора if. В этой форме, если условие равно true выполняется оператор1, в противном случае никаких действий не выполняется.