SlideShare a Scribd company logo
1 of 77
Язык программирования
JAVA
Лекция# 1
Введение
Базовый синтаксис и типы данных
Управление выполнением программы
Моисеенко Антон
canggu@mail.ru
СПГУАП
Кафедра Информационно-Сетевых Технологий
Содержание курса
■ Введение. Базовый синтаксис и типы данных.
Управление выполнением программ.
■ Создание собственных классов. Работа со
строками. Внутренние классы.
■ Наследование и полиморфизм. Массивы и
коллекции.
■ Абстрактные классы и интерфейсы.
■ Обработка исключений.
■ Создание интерфейса пользователя.
■ Работа с потоками ввода/вывода.
■ Мультизадачность в Java.
Что такое JAVA?
• Язык программирования
• Платформа
• Технологии
• Сообщество
разработчиков
Что такое JAVA?
■ Объектно-ориентированный язык
программирования
■ Изначально был разработан для
управления бытовой электроникой
■ Поставляется с большой
библиотекой классов
■ Использует виртуальную машину
(JVM) для выполнения программ
Популярность JAVA технологий
• 6 млн. Java разработчиков.
• 2.5 млн. серверов используют GlassFish.
• 5 млрд. устройств снабжены Java.
• 800 млн. настольных систем с установленной
JVM.
• 2.1 млрд. телефонов с поддержкой Java.
• 11 млн. пользователей используют JavaTV.
• Популярность курсов по Java технологиям в
ведущих университетах.
• >472,000 выданных сертификатов.
Платформа Java
• Средства разработки существуют для
большинства аппаратных платформ.
• Виртуальная машина Java (Java Virtual Machine,
JVM) гарантирует единообразие интерфейса с
операционной системой.
• Переносимость: «Write once, run everywhere».
• Поставляется с богатой библиотекой классов
JDK (Java Development Kit).
• JRE (Java Runtime Environment) – среда,
позволяющая запустить программу, написанную
на языке Java.
Общий вид платформы Java SE
Отличия от С++
• Перегрузка операторов
• Множественное наследование
• Автоматическое согласование типов
• Адресная арифметика
• Деструкторы
Инструментарий
В состав JDK входит набор утилит для создания Java
приложений.
Утилита для создания дистрибутивов Java программ.jar
Дизассемблерjavap
утилита создания заголовочные файлов для интеграции.javah
Утилита формирования стандартной документации JavaDoc.javadoc
Интерпретатор байт-кода. Запускает класс на выполнение.java
Компилятор языка Java. Преобразует исходный код в
промежуточный байт-код.
javac
Среда разработки
Среда разработки предлагает редактор,
компилятор и набор вспомогательных программ,
упрощающих разработку ПО.
• Eclipse http://www.eclipse.org/
• NetBeans http://www.netbeans.org/
• IntelliJ Idea http://www.jetbrains.com/
• JBuilder, CodeGear http://www.borland.com/
Ключевые особенности JAVA
• Простой
• Объектно-ориентированный
• Распределенный
• Интерпретируемый
• Надежный
• Безопасный
• Архитектурно-нейтральный
• Переносимый
• Многопоточный
Объектно-ориентированный подход
■ Объекты и классы
○ Объект-представление «вещи» в реальном
мире
○ Класс – «шаблон», определяющий «вещи»
■ Модель классов объединяет
○ Существующие классы и объекты
○ Поведение, цели и структуру
○ Отношения между классами
○ Отношения между объектами
■ Модель используется во всем проекте
Независимость от платформы
■ Исходные тексты хранятся в текстовом
виде в файле .java
■ Файл .java компилируется в файл .class
■ Этот файл содержит байт-код
(инструкции для выполнения
интерпретатором)
■ Байт-код интерпретируется во время
выполнения
Just-In-Time (JIT) компилятор
■ Компилирует байт-код в
исполняемый код для конкретной
платформы
■ Увеличивает производительность
■ Оптимизирует повторяющийся код,
например, циклы
Java - приложения
■ Клиентские
○ JVM выполняет отдельное приложение
из командной строки
○ Классы загружаются с локального
диска
■ Серверные
○ Обслуживают несколько клиентов
○ Применяются для многозвенных
приложений
Java - апплеты
■ Предназначены для встраивания в
HTML страницы
■ Выполняются внутри браузера и
могут взаимодействовать с
сервером
■ Могут быть преобразованы в
обычное приложение
Java SDK (JDK)
■ Sun Java SDK включает в себя
○ Компилятор (javac)
○ Библиотеку классов
○ Отладчик (jdb)
○ Интерпретатор (java)
○ Генератор документации (javadoc)
○ Архиватор (jar)
○ Другое…
Варианты поставки
■ J2ME (Micro Edition) – для
мобильных устройств
■ J2SE (Standard Edition) – разработка
обычных приложений
■ J2EE (Enterprise Edition) –
разработка приложений
многозвенной архитектуры
Инструменты, используемые в
данном курсе
■ Java 6 SE
■ В качестве IDE будет
использоваться Eclipse
Основы объектно-ориентированного
программирования
■ Объектная модель
■ Объекты и классы
■ Взаимодействие классов
Зачем нужна объектная модель?
■ Единое представление об
окружающем мире в одном проекте
■ Простота модификации
■ Расширяемость
Объекты и классы
■ Объект – некоторая КОНКРЕТНАЯ
сущность моделируемой
предметной области
■ Класс – шаблон или АБСТРАКЦИЯ
сущности предметной области
Квадрат
Свойства классов и объектов
■ Уникальные характеристики,
которые необходимы при
моделировании предметной
области
■ ОБЪЕКТЫ различаются значениями
свойств
■ Свойства отражают состояние
объекта
Методы классов и объектов
■ Метод отражает ПОВЕДЕНИЕ
объектов
■ Выполнение методов, как правило,
меняет значение свойств
■ Поведение объекта может меняться
в зависимости от состояния
Инкапсуляция
■ Значение свойств
можно менять
ТОЛЬКО
ПОСРЕДСТВОМ
ВЫЗОВА МЕТОДОВ
Наследование
■ Класс может иметь
одного или нескольких
потомков. Потомки
(подклассы) содержат
в себе тот же набор
свойств и методов,
что и класс-родитель
(суперкласс).
Наследование
■ В Java нет множественного
наследования
■ Все методы в Java – виртуальные
(могут быть перекрыты), если явно
не указано обратное
Полиморфизм
■ Технология, позволяющая
задать для одного и того же
(по смыслу) метода
различные способы
выполнения, в зависимости
от класса, в котором этот
метод реализован
■ Основан на наследовании
■ Методы ОБЯЗАНЫ иметь
одно и то же имя и набор
параметров (сигнатуру)
Взаимодействие классов
■ Зависимость (uses-a) – класс
использует другой класс
■ Агрегирование (has-a) – класс
содержит объекты другого класса
■ Наследование (is-a) – класс
является наследником (родителем)
другого класса
Итоги
■ Java – объектно-ориентированный,
платформонезависимый язык
программирования
■ Выполняется в виртуальной Java
машине (JVM)
■ Программы, написанные на Java,
могут выполняться внутри HTML
страниц (апплеты)
Базовый синтаксис языка
■ Ключевые компоненты SDK
■ Структура файла
■ Определение классов
■ Базовые типы данных и операторы
■ Использование переменной
CLASSPATH
■ Компиляция и запуск приложения
Ключевые компоненты SDK
■ Компилятор (javac) – создает из
исходного кода байт-код
■ Интерпретатор (java) – выполняет
байт-код
Пакеты
■ Классы объединяются в специальные
структуры, называемые пакетами
■ Стандартные пакеты для
○ Поддержки базовых конструкций языка
(java.lang)
○ Создания оконного интерфейса (javax.swing)
○ Управления вводом/выводом (java.io)
Структура исходного файла класса Java
■ Исходный файл состоит из следующих частей
○ Необязательное слово package, за которым следует
наименование пакета, в котором содержится класс
○ Необязательный оператор import (может быть
несколько), который указывает, какие классы из
сторонних пакетов используются создаваемым
классом
○ Одно или более определение class или interface,
за которым следует программный блок
○ Файл должен иметь ТО ЖЕ имя, что и создаваемый
класс
■ Ключевые слова языка Java ЧУВСТВИТЕЛЬНЫ
К РЕГИСТРУ
■ В файле может быть ТОЛЬКО ОДИН public класс
Пример класса Java
package ru.vsu.test;
import java.util.Date;
public class FirstProgram {
private Date today;
public Date getToday(){
return today;
}
public void setToday(Date aToday){
today = aToday;
}
public static void main (String[] args){
FirstProgram fp = new FirstProgram();
fp.setToday(new Date());
System.out.println (fp.getToday());
}
}
Соглашения об именовании
■ Имена файлов
○ Customer.java
○ Person.class
■ Имена пакетов
○ java.util
○ javax.swing
■ Имена классов
○ Customer
○ Person
■ Имена свойств класса
○ firstName
○ id
■ Имена методов
○ getName
○ isAlive
■ Имена констант
○ SQUARE_SIZE
Также могут использоваться цифры 1..9, _, $
Определение класса
■ Определение класса включает:
○ Модификатор доступа
○ Ключевое слово class
○ Свойства класса
○ Конструкторы
○ Методы
○ Статические свойства
○ Статические методы
Пример
public class FirstProgram {
private Date today;
public Date getToday(){
return today;
}
public static final PROGRAM_SIZE=560;
public static void main (String[] args){
...
}
}
Блоки кода
■ Блоки кода обрамляются в
фигурные скобки “{“ “}”
■ Охватывают определение класса
■ Определения методов
■ Логически связанные разделы кода
import java.util.Date;
public class FirstProgram {
public static void main (String[] args){
System.out.println (new Date());
}
}
Объявление методов
■ Методы определяются только
внутри класса
■ Указывается
○ Модификатор доступа
○ Слово static
○ Тип возвращаемого значения
○ Аргументы
Пример
import java.util.Date;
public class FirstProgram {
private Date today;
public Date getToday(){
return today;
}
public void setToday(Date aToday){
int i = 0;
i++
today = aToday;
}
}
Переменные
■ Основное место для хранения
данных
■ Должны быть явно объявлены
■ Каждая переменная имеет тип,
идентификатор и область
видимости
■ Определяются для класса, для
экземпляра и внутри метода
Объявление переменных
■ Может быть объявлена в любом месте блока
кода
■ Должна быть объявлена перед использованием
■ Обычно переменные объявляются в начале
блока
■ Область видимости определяется блоком
■ Необходимо инициализировать переменные
перед использованием
■ Переменные простых типов инициализируются
автоматически
Объявление переменных
■ Основная форма объявления
○ тип идентификатор [ = значение];
■ При объявлении переменные могут
быть проинициализированы
public class FirstProgram {
public static void main (String[] args){
int itemsSold = 10;
float itemCost = 11.0f;
int i, j, k;
double interestRate;
}
}
Именование переменных
■ Имя переменной должно начинаться
с буквы, знака подчеркивания или со
знака “$”
■ Имя переменной может включать
цифры
■ Давайте переменным осмысленные
имена
Простые типы данных
■ Восемь простых типов данных
○ Шесть числовых
○ Символьный
○ Логический
■ Определяемые пользователем типы
○ Классы
○ Интерфейсы
○ Массивы
Простые типы данных
Целые С плавающей
точкой
Символьный Логический
byte
short
int
long
float
double
char boolean
1, 2, 3, -2
012
0x23f
2553L
3.0F
.9937F
3.455E8
1.0D
‘s’
‘141’
‘u0061’
‘n’
true
false
Строки
■ Класс java.lang.String представляет собой хранилище символов
и функциональность для работы с ними.
■ Строка имеет фиксированную длину и не завершается
специальным символом.
■ Объект класса String – неизменяем.
■ Возможности:
– обращение к символу по его номеру,
– поиск,
– выделение подстроки,
– изменение регистра,
– и т.п.
Размещение сущностей
• Переменная может быть размещена в одном из
двух хранилищ:
• Стек – расположен в памяти VM и имеет
поддержку в виде указателя стека.
• Куча (heap) – область памяти VM, в которой
хранятся все ссылочные типы.
• Переменной простого типа выделяется память в
стеке.
• Ссылки располагаются в куче.
Операторы
■ Пять типов операторов
○ Присваивание
○ Арифметические
○ Побитовый сдвиг
○ Равенство
○ Логические
Оператор присваивания
■ Оператор присваивания – выражение и может
использоваться там, где допустимы выражения
■ Сначала вычисляется правая часть, а затем
полученное значение присваивается левой
части
int itemsSold = 10;
double itemCost = 11.0F+12.0D;
int i = i+7;
i = j = k = 100;
Арифметические операторы
■ Сложение (+)
■ Умножение (*)
■ Вычитание (-)
■ Деление (/)
■ Остаток от деления (%)
Все арифметические операции производятся над int или long
ВНИМАНИЕ:
byte a = 100;
byte b = 100;
byte c = a+b;
c = -56!!!
Операции инкремента и декремента
■ Увеличение на 1 (++)
■ Уменьшение на 1 (--)
int var1 = 3;
int var2 = 0;
var2 = ++var1; //сначала увеличивается var1, а затем
//присваивается var2
var2 = var1++; //сначала присваивается var2, а затем
// увеличивается var1
Побитовый сдвиг
■ << - сдвиг влево
■ >> - сдвиг вправо
■ >>> - сдвиг вправо с заполнением нулями
■ Правая часть сокращается до остатка от
деления на длину числа, т.е. 1 << 35 == 1 << 3
0 0 0 0 1 0 1 0 0 01 << 3 == 8
1 1 0 0 0 1 0 0 0 1-8 >> 3 == -1
1 1 0 0 0 0 0 0 0 1-8 >>> 3 = …
Операторы сравнения
■ < - меньше
■ > - больше
■ >= - больше или равно
■ <= - меньше или равно
■ == - равно
■ != - не равно
Логические операторы
■ && - and
■ || - or
■ ^ - xor
■ ! – not
Приоритет операций
№ Операция Порядок выполнения
1 [ ] . () (вызов метода) Слева направо
2 ! ~ ++ -- +(унарный) -(унарный) () (приведение) new Справа налево
3 * / % Слева направо
4 + - Слева направо
5 << >> >>> Слева направо
6 < <= > >= instanceof Слева направо
7 == != Слева направо
8 & Слева направо
9 ^ Слева направо
10 | Слева направо
11 && Слева направо
12 || Слева направо
13 ?: Слева направо
14 = += -= *= /= %= |= ^= <<= >>= >>>= Справа налево
Управление выполнением программы
■ Типы выполнения
○ Последовательность
○ Выбор
○ Итерация
○ Переход
Последовательность
■ Каждый оператор завершается
точкой с запятой
■ Группы операторов обрамляются
фигурными скобками
■ Каждая группа выполняется как
единый оператор внутри
последовательности операторов
Оператор if
if (логическое выражение)
оператор1;
[else
оператор2];
if (i % 2 == 0)
System.out.println(“Even”);
else
System.out.println(“Odd”);
if (i % 2 == 0){
System.out.print(i);
System.out.println(“ is even”);
}
Оператор switch
■ Используется для
выбора из
счетного
количества
вариантов
■ Выражения const
должны быть типа
byte, int, char или
short
switch (выражение целого типа){
case const1:
statement1;
break;
case const2:
statement2;
break;
default:
statement3;
}
Циклы
■ Три типа
○ while
○ do..while
○ for
■ Все циклы имеют две части
○ Условие выполнения
○ Тело
Цикл while
while (логическое выражение)
оператор;
int i = 0;
while (i < 100){
System.out.println(“i = ”+i);
i++;
}
Цикл do..while
do
оператор;
while (условие выхода);
int i = 0;
do{
System.out.println(“i = ”+i);
i++;
}
while (i < 10);
Цикл for
for (инициализация; условие выхода; условие итерации)
оператор;
for (int i = 0; i < 10; i++)
{
System.out.println(“i = ”+i);
}
for (int i = 0, j = 10; i < j; i++, j--)
{
System.out.println(“i = ”+i);
System.out.println(“j = ”+j);
}
Массивы
■ Для хранения нескольких однотипных
значений используется ссылочный тип –
массив:
//примитивный тип, размер массива задан явно
int price[] = new int[10];
//неявное задание размера
int rooms[] = new int[]{1, 2, 3};
//содержит ссылочные переменные
Item [] items = new Item[10];
Item [] undefinedItems = new Item[]{
new Item(1),
new Item(2),
new Item(3)};
Доступ к элементам массива
Доступ осуществляется по индексу.
Размер хранится в немодифицируемом
поле массива length.
for (int i = 0;
i < undefinedItems.length;
i++){
// должен быть представим в виде
// строки (переопределен метод
// toString())
System.out.println(undefinedItems[i]);
}
Многомерный массив
• Является массивом массивов.
• Многомерный массив концептуально представляет
собой многомерную матрицу.
int twoDim [][] = new int[4][5];
Массив массивов
• Каждый из массивов может иметь отличную от
других длину.
int twoDim [][] = new int[4][];
twoDim[0] = new int [10];
twoDim[1] = new int [20];
twoDim[2] = new int [30];
twoDim[3] = new int [100];
Ошибки времени выполнения
• Обращение к несуществующему индексу массива
отслеживается виртуальной машиной во время
исполнения кода:
public class Main {
public static void main(String[] args) {
int array [] = new int[]{1, 2, 3};
System.out.println(array[3]);
}
}
//попытка обратиться к несуществующему
//индексу:
Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 3
at Main.main(Main.java:27)
Ошибки времени выполнения
• Попытка поместить в массив
неподходящий элемент пресекается
виртуальной машиной:
Object x[] = new String[3];
//попытка поместить в массив содержимое //несоответствующего
типа
x[0] = new Integer(0);
Exception in thread "main" java.lang.ArrayStoreException:
java.lang.Integer
at Main.main(Main.java:22)
Переменная среды CLASSPATH
■ Определяется в операционной системе
■ Указывает JVM, где необходимо искать
файлы .class
■ Может ссылаться на каталоги и файлы
.jar и .zip
■ Интерпретатор загружает встроенные
классы перед тем, как загрузить
пользовательские
■ Используется с командами java и javac
Выполнение JAVA программ
■ Для того, чтобы класс можно было
запустить, в нем должен быть определен
метод main
public class FirstProgram {
public static void main (String[] args){
int itemsSold = 10;
float itemCost = 11.0f;
int i, j, k;
double interestRate;
}
}
Компиляция и запуск JAVA программ
■ Компиляция .java файла
■ Запуск .class файла
> javac [-classpath <path>] FirstProgram.java
> java [-classpath <path>] FirstProgram
Рекомендуемая литература
■ Java Platform SE7 Specification
■ Хорстманн, Корнелл Java2, в 2-х томах
■ Bruce Eckel Thinking in Java
■ Ильдар Хабибуллин. "Java 7. В подлиннике"
Изд. - БХВ-Петербург. 2012.
■ Герберт Шилдт. "Java. Полное руководство"
Изд. - Вильямс. 2012. "Java 7: The Complete
Reference"
Ссылки
■ httphttp://http://ruhttp://ru.http://ru.wikipediahttp://ru.
wikipedia.http://ru.wikipedia.orghttp://ru.wikipedia.or
g/http://ru.wikipedia.org/wikihttp://ru.wikipedia.org/wi
ki/http://ru.wikipedia.org/wiki/Java
■ http://www.oracle.com/technetwork/java/index.html
■ http://www.oracle.com/technetwork/java/javase/doc
umentation/index.html
■ http://jdk7.java.net/
■ http://www.oracle.com/technetwork/java/javase/dow
nloads/jdk-7u1-download-513651.html
■ http://java.sun.com/learning/tutorial/index.html
Вопросы?

More Related Content

What's hot

Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.Igor Shkulipa
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.Igor Shkulipa
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.Igor Shkulipa
 
принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#bolevik
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5Technopark
 
C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.Igor Shkulipa
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.Igor Shkulipa
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.Igor Shkulipa
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.Igor Shkulipa
 

What's hot (14)

Классы и объекты С#
Классы и объекты С#Классы и объекты С#
Классы и объекты С#
 
Наследование и полиморфизм
Наследование и полиморфизмНаследование и полиморфизм
Наследование и полиморфизм
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.C++ Базовый. Занятие 09.
C++ Базовый. Занятие 09.
 
C# Desktop. Занятие 01.
C# Desktop. Занятие 01.C# Desktop. Занятие 01.
C# Desktop. Занятие 01.
 
принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#принципы ооп и программирование классов в C#
принципы ооп и программирование классов в C#
 
C++ весна 2014 лекция 5
C++ весна 2014 лекция 5C++ весна 2014 лекция 5
C++ весна 2014 лекция 5
 
C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.
 
C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.C++ Базовый. Занятие 08.
C++ Базовый. Занятие 08.
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.
 
C# Desktop. Занятие 02.
C# Desktop. Занятие 02.C# Desktop. Занятие 02.
C# Desktop. Занятие 02.
 

Viewers also liked

Expert Java Day: Java concurrency
Expert Java Day: Java concurrencyExpert Java Day: Java concurrency
Expert Java Day: Java concurrencyPavel Titkov
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Nikita Lipsky
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Javaaragozin
 
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)Igor Khotin
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaNikita Lipsky
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilationNikita Lipsky
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Alexey Zinoviev
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Nikita Lipsky
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейSkillFactory
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8Ilya Lapitan
 

Viewers also liked (11)

Expert Java Day: Java concurrency
Expert Java Day: Java concurrencyExpert Java Day: Java concurrency
Expert Java Day: Java concurrency
 
Java худеет. Спроси меня как.
Java худеет. Спроси меня как.Java худеет. Спроси меня как.
Java худеет. Спроси меня как.
 
Секреты сборки мусора в Java
Секреты сборки мусора в JavaСекреты сборки мусора в Java
Секреты сборки мусора в Java
 
WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)WDB005.1 - JavaScript for Java Developers (Lecture 1)
WDB005.1 - JavaScript for Java Developers (Lecture 1)
 
Клиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на JavaКлиентская Java вне браузера. Делаем нативные клиенты на Java
Клиентская Java вне браузера. Делаем нативные клиенты на Java
 
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
 
Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8Keynote on JavaDay Omsk 2014 about new features in Java 8
Keynote on JavaDay Omsk 2014 about new features in Java 8
 
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
 
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 днейГотовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
Готовимся к Java SE 7 Programmer: от новичка до профессионала за 45 дней
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Date & Time in Java SE 8
Date & Time in Java SE 8Date & Time in Java SE 8
Date & Time in Java SE 8
 

Similar to Java Core. Lecture# 1. Intro

Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)Alexander Gornik
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекцийstudent_kai
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLcolriot
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsNoveo
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 
Александр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitАлександр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitYandex
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Levon Avakyan
 
Загрузчики классов в Java - коллекция граблей
Загрузчики классов в Java - коллекция граблейЗагрузчики классов в Java - коллекция граблей
Загрузчики классов в Java - коллекция граблейAnton Arhipov
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)Alexander Gornik
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1Technopark
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практикеEatDog
 
Java. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and ObjectsJava. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and Objectscolriot
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Sergey Polazhenko
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
JUnit, дай пять!
JUnit, дай пять!JUnit, дай пять!
JUnit, дай пять!Dmitrii Tuchs
 

Similar to Java Core. Lecture# 1. Intro (20)

Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
разработка бизнес приложений (6)
разработка бизнес приложений (6)разработка бизнес приложений (6)
разработка бизнес приложений (6)
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекций
 
Java. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UMLJava. Lecture 03. OOP and UML
Java. Lecture 03. OOP and UML
 
Android - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, genericsAndroid - 02 - annotations, exceptions, io, generics
Android - 02 - annotations, exceptions, io, generics
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
Александр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnitАлександр Ярулин - Автоматизация тестирования с xUnit
Александр Ярулин - Автоматизация тестирования с xUnit
 
Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей. Программирование как способ выражения мыслей.
Программирование как способ выражения мыслей.
 
Загрузчики классов в Java - коллекция граблей
Загрузчики классов в Java - коллекция граблейЗагрузчики классов в Java - коллекция граблей
Загрузчики классов в Java - коллекция граблей
 
разработка бизнес приложений (7)
разработка бизнес приложений (7)разработка бизнес приложений (7)
разработка бизнес приложений (7)
 
Step 3.1
Step 3.1Step 3.1
Step 3.1
 
C++ осень 2012 лекция 1
C++ осень 2012 лекция 1C++ осень 2012 лекция 1
C++ осень 2012 лекция 1
 
Step 1
Step 1Step 1
Step 1
 
Принципы Solid на практике
Принципы Solid на практикеПринципы Solid на практике
Принципы Solid на практике
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Java. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and ObjectsJava. Lecture 02. Classes and Objects
Java. Lecture 02. Classes and Objects
 
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
Language oriented programming_(lop)_в_действии_(максим_мазин,_add-2011)
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
JUnit, дай пять!
JUnit, дай пять!JUnit, дай пять!
JUnit, дай пять!
 

Java Core. Lecture# 1. Intro

  • 1. Язык программирования JAVA Лекция# 1 Введение Базовый синтаксис и типы данных Управление выполнением программы Моисеенко Антон canggu@mail.ru СПГУАП Кафедра Информационно-Сетевых Технологий
  • 2. Содержание курса ■ Введение. Базовый синтаксис и типы данных. Управление выполнением программ. ■ Создание собственных классов. Работа со строками. Внутренние классы. ■ Наследование и полиморфизм. Массивы и коллекции. ■ Абстрактные классы и интерфейсы. ■ Обработка исключений. ■ Создание интерфейса пользователя. ■ Работа с потоками ввода/вывода. ■ Мультизадачность в Java.
  • 3. Что такое JAVA? • Язык программирования • Платформа • Технологии • Сообщество разработчиков
  • 4. Что такое JAVA? ■ Объектно-ориентированный язык программирования ■ Изначально был разработан для управления бытовой электроникой ■ Поставляется с большой библиотекой классов ■ Использует виртуальную машину (JVM) для выполнения программ
  • 5. Популярность JAVA технологий • 6 млн. Java разработчиков. • 2.5 млн. серверов используют GlassFish. • 5 млрд. устройств снабжены Java. • 800 млн. настольных систем с установленной JVM. • 2.1 млрд. телефонов с поддержкой Java. • 11 млн. пользователей используют JavaTV. • Популярность курсов по Java технологиям в ведущих университетах. • >472,000 выданных сертификатов.
  • 6. Платформа Java • Средства разработки существуют для большинства аппаратных платформ. • Виртуальная машина Java (Java Virtual Machine, JVM) гарантирует единообразие интерфейса с операционной системой. • Переносимость: «Write once, run everywhere». • Поставляется с богатой библиотекой классов JDK (Java Development Kit). • JRE (Java Runtime Environment) – среда, позволяющая запустить программу, написанную на языке Java.
  • 8. Отличия от С++ • Перегрузка операторов • Множественное наследование • Автоматическое согласование типов • Адресная арифметика • Деструкторы
  • 9. Инструментарий В состав JDK входит набор утилит для создания Java приложений. Утилита для создания дистрибутивов Java программ.jar Дизассемблерjavap утилита создания заголовочные файлов для интеграции.javah Утилита формирования стандартной документации JavaDoc.javadoc Интерпретатор байт-кода. Запускает класс на выполнение.java Компилятор языка Java. Преобразует исходный код в промежуточный байт-код. javac
  • 10. Среда разработки Среда разработки предлагает редактор, компилятор и набор вспомогательных программ, упрощающих разработку ПО. • Eclipse http://www.eclipse.org/ • NetBeans http://www.netbeans.org/ • IntelliJ Idea http://www.jetbrains.com/ • JBuilder, CodeGear http://www.borland.com/
  • 11. Ключевые особенности JAVA • Простой • Объектно-ориентированный • Распределенный • Интерпретируемый • Надежный • Безопасный • Архитектурно-нейтральный • Переносимый • Многопоточный
  • 12. Объектно-ориентированный подход ■ Объекты и классы ○ Объект-представление «вещи» в реальном мире ○ Класс – «шаблон», определяющий «вещи» ■ Модель классов объединяет ○ Существующие классы и объекты ○ Поведение, цели и структуру ○ Отношения между классами ○ Отношения между объектами ■ Модель используется во всем проекте
  • 13. Независимость от платформы ■ Исходные тексты хранятся в текстовом виде в файле .java ■ Файл .java компилируется в файл .class ■ Этот файл содержит байт-код (инструкции для выполнения интерпретатором) ■ Байт-код интерпретируется во время выполнения
  • 14. Just-In-Time (JIT) компилятор ■ Компилирует байт-код в исполняемый код для конкретной платформы ■ Увеличивает производительность ■ Оптимизирует повторяющийся код, например, циклы
  • 15. Java - приложения ■ Клиентские ○ JVM выполняет отдельное приложение из командной строки ○ Классы загружаются с локального диска ■ Серверные ○ Обслуживают несколько клиентов ○ Применяются для многозвенных приложений
  • 16. Java - апплеты ■ Предназначены для встраивания в HTML страницы ■ Выполняются внутри браузера и могут взаимодействовать с сервером ■ Могут быть преобразованы в обычное приложение
  • 17. Java SDK (JDK) ■ Sun Java SDK включает в себя ○ Компилятор (javac) ○ Библиотеку классов ○ Отладчик (jdb) ○ Интерпретатор (java) ○ Генератор документации (javadoc) ○ Архиватор (jar) ○ Другое…
  • 18. Варианты поставки ■ J2ME (Micro Edition) – для мобильных устройств ■ J2SE (Standard Edition) – разработка обычных приложений ■ J2EE (Enterprise Edition) – разработка приложений многозвенной архитектуры
  • 19. Инструменты, используемые в данном курсе ■ Java 6 SE ■ В качестве IDE будет использоваться Eclipse
  • 20. Основы объектно-ориентированного программирования ■ Объектная модель ■ Объекты и классы ■ Взаимодействие классов
  • 21. Зачем нужна объектная модель? ■ Единое представление об окружающем мире в одном проекте ■ Простота модификации ■ Расширяемость
  • 22. Объекты и классы ■ Объект – некоторая КОНКРЕТНАЯ сущность моделируемой предметной области ■ Класс – шаблон или АБСТРАКЦИЯ сущности предметной области Квадрат
  • 23. Свойства классов и объектов ■ Уникальные характеристики, которые необходимы при моделировании предметной области ■ ОБЪЕКТЫ различаются значениями свойств ■ Свойства отражают состояние объекта
  • 24. Методы классов и объектов ■ Метод отражает ПОВЕДЕНИЕ объектов ■ Выполнение методов, как правило, меняет значение свойств ■ Поведение объекта может меняться в зависимости от состояния
  • 25. Инкапсуляция ■ Значение свойств можно менять ТОЛЬКО ПОСРЕДСТВОМ ВЫЗОВА МЕТОДОВ
  • 26. Наследование ■ Класс может иметь одного или нескольких потомков. Потомки (подклассы) содержат в себе тот же набор свойств и методов, что и класс-родитель (суперкласс).
  • 27. Наследование ■ В Java нет множественного наследования ■ Все методы в Java – виртуальные (могут быть перекрыты), если явно не указано обратное
  • 28. Полиморфизм ■ Технология, позволяющая задать для одного и того же (по смыслу) метода различные способы выполнения, в зависимости от класса, в котором этот метод реализован ■ Основан на наследовании ■ Методы ОБЯЗАНЫ иметь одно и то же имя и набор параметров (сигнатуру)
  • 29. Взаимодействие классов ■ Зависимость (uses-a) – класс использует другой класс ■ Агрегирование (has-a) – класс содержит объекты другого класса ■ Наследование (is-a) – класс является наследником (родителем) другого класса
  • 30. Итоги ■ Java – объектно-ориентированный, платформонезависимый язык программирования ■ Выполняется в виртуальной Java машине (JVM) ■ Программы, написанные на Java, могут выполняться внутри HTML страниц (апплеты)
  • 31. Базовый синтаксис языка ■ Ключевые компоненты SDK ■ Структура файла ■ Определение классов ■ Базовые типы данных и операторы ■ Использование переменной CLASSPATH ■ Компиляция и запуск приложения
  • 32. Ключевые компоненты SDK ■ Компилятор (javac) – создает из исходного кода байт-код ■ Интерпретатор (java) – выполняет байт-код
  • 33. Пакеты ■ Классы объединяются в специальные структуры, называемые пакетами ■ Стандартные пакеты для ○ Поддержки базовых конструкций языка (java.lang) ○ Создания оконного интерфейса (javax.swing) ○ Управления вводом/выводом (java.io)
  • 34. Структура исходного файла класса Java ■ Исходный файл состоит из следующих частей ○ Необязательное слово package, за которым следует наименование пакета, в котором содержится класс ○ Необязательный оператор import (может быть несколько), который указывает, какие классы из сторонних пакетов используются создаваемым классом ○ Одно или более определение class или interface, за которым следует программный блок ○ Файл должен иметь ТО ЖЕ имя, что и создаваемый класс ■ Ключевые слова языка Java ЧУВСТВИТЕЛЬНЫ К РЕГИСТРУ ■ В файле может быть ТОЛЬКО ОДИН public класс
  • 35. Пример класса Java package ru.vsu.test; import java.util.Date; public class FirstProgram { private Date today; public Date getToday(){ return today; } public void setToday(Date aToday){ today = aToday; } public static void main (String[] args){ FirstProgram fp = new FirstProgram(); fp.setToday(new Date()); System.out.println (fp.getToday()); } }
  • 36. Соглашения об именовании ■ Имена файлов ○ Customer.java ○ Person.class ■ Имена пакетов ○ java.util ○ javax.swing ■ Имена классов ○ Customer ○ Person ■ Имена свойств класса ○ firstName ○ id ■ Имена методов ○ getName ○ isAlive ■ Имена констант ○ SQUARE_SIZE Также могут использоваться цифры 1..9, _, $
  • 37. Определение класса ■ Определение класса включает: ○ Модификатор доступа ○ Ключевое слово class ○ Свойства класса ○ Конструкторы ○ Методы ○ Статические свойства ○ Статические методы
  • 38. Пример public class FirstProgram { private Date today; public Date getToday(){ return today; } public static final PROGRAM_SIZE=560; public static void main (String[] args){ ... } }
  • 39. Блоки кода ■ Блоки кода обрамляются в фигурные скобки “{“ “}” ■ Охватывают определение класса ■ Определения методов ■ Логически связанные разделы кода import java.util.Date; public class FirstProgram { public static void main (String[] args){ System.out.println (new Date()); } }
  • 40. Объявление методов ■ Методы определяются только внутри класса ■ Указывается ○ Модификатор доступа ○ Слово static ○ Тип возвращаемого значения ○ Аргументы
  • 41. Пример import java.util.Date; public class FirstProgram { private Date today; public Date getToday(){ return today; } public void setToday(Date aToday){ int i = 0; i++ today = aToday; } }
  • 42. Переменные ■ Основное место для хранения данных ■ Должны быть явно объявлены ■ Каждая переменная имеет тип, идентификатор и область видимости ■ Определяются для класса, для экземпляра и внутри метода
  • 43. Объявление переменных ■ Может быть объявлена в любом месте блока кода ■ Должна быть объявлена перед использованием ■ Обычно переменные объявляются в начале блока ■ Область видимости определяется блоком ■ Необходимо инициализировать переменные перед использованием ■ Переменные простых типов инициализируются автоматически
  • 44. Объявление переменных ■ Основная форма объявления ○ тип идентификатор [ = значение]; ■ При объявлении переменные могут быть проинициализированы public class FirstProgram { public static void main (String[] args){ int itemsSold = 10; float itemCost = 11.0f; int i, j, k; double interestRate; } }
  • 45. Именование переменных ■ Имя переменной должно начинаться с буквы, знака подчеркивания или со знака “$” ■ Имя переменной может включать цифры ■ Давайте переменным осмысленные имена
  • 46. Простые типы данных ■ Восемь простых типов данных ○ Шесть числовых ○ Символьный ○ Логический ■ Определяемые пользователем типы ○ Классы ○ Интерфейсы ○ Массивы
  • 47. Простые типы данных Целые С плавающей точкой Символьный Логический byte short int long float double char boolean 1, 2, 3, -2 012 0x23f 2553L 3.0F .9937F 3.455E8 1.0D ‘s’ ‘141’ ‘u0061’ ‘n’ true false
  • 48. Строки ■ Класс java.lang.String представляет собой хранилище символов и функциональность для работы с ними. ■ Строка имеет фиксированную длину и не завершается специальным символом. ■ Объект класса String – неизменяем. ■ Возможности: – обращение к символу по его номеру, – поиск, – выделение подстроки, – изменение регистра, – и т.п.
  • 49. Размещение сущностей • Переменная может быть размещена в одном из двух хранилищ: • Стек – расположен в памяти VM и имеет поддержку в виде указателя стека. • Куча (heap) – область памяти VM, в которой хранятся все ссылочные типы. • Переменной простого типа выделяется память в стеке. • Ссылки располагаются в куче.
  • 50. Операторы ■ Пять типов операторов ○ Присваивание ○ Арифметические ○ Побитовый сдвиг ○ Равенство ○ Логические
  • 51. Оператор присваивания ■ Оператор присваивания – выражение и может использоваться там, где допустимы выражения ■ Сначала вычисляется правая часть, а затем полученное значение присваивается левой части int itemsSold = 10; double itemCost = 11.0F+12.0D; int i = i+7; i = j = k = 100;
  • 52. Арифметические операторы ■ Сложение (+) ■ Умножение (*) ■ Вычитание (-) ■ Деление (/) ■ Остаток от деления (%) Все арифметические операции производятся над int или long ВНИМАНИЕ: byte a = 100; byte b = 100; byte c = a+b; c = -56!!!
  • 53. Операции инкремента и декремента ■ Увеличение на 1 (++) ■ Уменьшение на 1 (--) int var1 = 3; int var2 = 0; var2 = ++var1; //сначала увеличивается var1, а затем //присваивается var2 var2 = var1++; //сначала присваивается var2, а затем // увеличивается var1
  • 54. Побитовый сдвиг ■ << - сдвиг влево ■ >> - сдвиг вправо ■ >>> - сдвиг вправо с заполнением нулями ■ Правая часть сокращается до остатка от деления на длину числа, т.е. 1 << 35 == 1 << 3 0 0 0 0 1 0 1 0 0 01 << 3 == 8 1 1 0 0 0 1 0 0 0 1-8 >> 3 == -1 1 1 0 0 0 0 0 0 0 1-8 >>> 3 = …
  • 55. Операторы сравнения ■ < - меньше ■ > - больше ■ >= - больше или равно ■ <= - меньше или равно ■ == - равно ■ != - не равно
  • 56. Логические операторы ■ && - and ■ || - or ■ ^ - xor ■ ! – not
  • 57. Приоритет операций № Операция Порядок выполнения 1 [ ] . () (вызов метода) Слева направо 2 ! ~ ++ -- +(унарный) -(унарный) () (приведение) new Справа налево 3 * / % Слева направо 4 + - Слева направо 5 << >> >>> Слева направо 6 < <= > >= instanceof Слева направо 7 == != Слева направо 8 & Слева направо 9 ^ Слева направо 10 | Слева направо 11 && Слева направо 12 || Слева направо 13 ?: Слева направо 14 = += -= *= /= %= |= ^= <<= >>= >>>= Справа налево
  • 58. Управление выполнением программы ■ Типы выполнения ○ Последовательность ○ Выбор ○ Итерация ○ Переход
  • 59. Последовательность ■ Каждый оператор завершается точкой с запятой ■ Группы операторов обрамляются фигурными скобками ■ Каждая группа выполняется как единый оператор внутри последовательности операторов
  • 60. Оператор if if (логическое выражение) оператор1; [else оператор2]; if (i % 2 == 0) System.out.println(“Even”); else System.out.println(“Odd”); if (i % 2 == 0){ System.out.print(i); System.out.println(“ is even”); }
  • 61. Оператор switch ■ Используется для выбора из счетного количества вариантов ■ Выражения const должны быть типа byte, int, char или short switch (выражение целого типа){ case const1: statement1; break; case const2: statement2; break; default: statement3; }
  • 62. Циклы ■ Три типа ○ while ○ do..while ○ for ■ Все циклы имеют две части ○ Условие выполнения ○ Тело
  • 63. Цикл while while (логическое выражение) оператор; int i = 0; while (i < 100){ System.out.println(“i = ”+i); i++; }
  • 64. Цикл do..while do оператор; while (условие выхода); int i = 0; do{ System.out.println(“i = ”+i); i++; } while (i < 10);
  • 65. Цикл for for (инициализация; условие выхода; условие итерации) оператор; for (int i = 0; i < 10; i++) { System.out.println(“i = ”+i); } for (int i = 0, j = 10; i < j; i++, j--) { System.out.println(“i = ”+i); System.out.println(“j = ”+j); }
  • 66. Массивы ■ Для хранения нескольких однотипных значений используется ссылочный тип – массив: //примитивный тип, размер массива задан явно int price[] = new int[10]; //неявное задание размера int rooms[] = new int[]{1, 2, 3}; //содержит ссылочные переменные Item [] items = new Item[10]; Item [] undefinedItems = new Item[]{ new Item(1), new Item(2), new Item(3)};
  • 67. Доступ к элементам массива Доступ осуществляется по индексу. Размер хранится в немодифицируемом поле массива length. for (int i = 0; i < undefinedItems.length; i++){ // должен быть представим в виде // строки (переопределен метод // toString()) System.out.println(undefinedItems[i]); }
  • 68. Многомерный массив • Является массивом массивов. • Многомерный массив концептуально представляет собой многомерную матрицу. int twoDim [][] = new int[4][5];
  • 69. Массив массивов • Каждый из массивов может иметь отличную от других длину. int twoDim [][] = new int[4][]; twoDim[0] = new int [10]; twoDim[1] = new int [20]; twoDim[2] = new int [30]; twoDim[3] = new int [100];
  • 70. Ошибки времени выполнения • Обращение к несуществующему индексу массива отслеживается виртуальной машиной во время исполнения кода: public class Main { public static void main(String[] args) { int array [] = new int[]{1, 2, 3}; System.out.println(array[3]); } } //попытка обратиться к несуществующему //индексу: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at Main.main(Main.java:27)
  • 71. Ошибки времени выполнения • Попытка поместить в массив неподходящий элемент пресекается виртуальной машиной: Object x[] = new String[3]; //попытка поместить в массив содержимое //несоответствующего типа x[0] = new Integer(0); Exception in thread "main" java.lang.ArrayStoreException: java.lang.Integer at Main.main(Main.java:22)
  • 72. Переменная среды CLASSPATH ■ Определяется в операционной системе ■ Указывает JVM, где необходимо искать файлы .class ■ Может ссылаться на каталоги и файлы .jar и .zip ■ Интерпретатор загружает встроенные классы перед тем, как загрузить пользовательские ■ Используется с командами java и javac
  • 73. Выполнение JAVA программ ■ Для того, чтобы класс можно было запустить, в нем должен быть определен метод main public class FirstProgram { public static void main (String[] args){ int itemsSold = 10; float itemCost = 11.0f; int i, j, k; double interestRate; } }
  • 74. Компиляция и запуск JAVA программ ■ Компиляция .java файла ■ Запуск .class файла > javac [-classpath <path>] FirstProgram.java > java [-classpath <path>] FirstProgram
  • 75. Рекомендуемая литература ■ Java Platform SE7 Specification ■ Хорстманн, Корнелл Java2, в 2-х томах ■ Bruce Eckel Thinking in Java ■ Ильдар Хабибуллин. "Java 7. В подлиннике" Изд. - БХВ-Петербург. 2012. ■ Герберт Шилдт. "Java. Полное руководство" Изд. - Вильямс. 2012. "Java 7: The Complete Reference"
  • 76. Ссылки ■ httphttp://http://ruhttp://ru.http://ru.wikipediahttp://ru. wikipedia.http://ru.wikipedia.orghttp://ru.wikipedia.or g/http://ru.wikipedia.org/wikihttp://ru.wikipedia.org/wi ki/http://ru.wikipedia.org/wiki/Java ■ http://www.oracle.com/technetwork/java/index.html ■ http://www.oracle.com/technetwork/java/javase/doc umentation/index.html ■ http://jdk7.java.net/ ■ http://www.oracle.com/technetwork/java/javase/dow nloads/jdk-7u1-download-513651.html ■ http://java.sun.com/learning/tutorial/index.html