SlideShare une entreprise Scribd logo
1  sur  53
ВВЕДЕНИЕ В ЯЗЫК
ПРОГРАММИРОВАНИЯ JAVA,
ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ,
ОПЕРАТОРЫ
Дата официального выпуска — 23 мая 1995 года. На 2018
год Java — один из самых популярных языков
программирования.
Основной целю технологии java является принцип —
«Написанное один раз — работает везде» (англ. «Write
once — run anywhere.» WORA).
СРАВНЕНИЕ С++
И JAVA:
•В Java отсутствует перегрузка операторов;
•в Java отсутствует прямой доступ к памяти через указатель;
•в Java отсутствуют деструкторы;
•в Java отсутствует возможность процедурного
программирования;
•в Java статическая длина массивов и проверка индекса при
доступе к элементу;
•в Java значение переменных экземпляра (полей класса),
в случае отсутствия инициализации, принимают значения по
умолчанию (для целых и дробных типов это 0, для
boolean — это false, для ссылочных типов — это null);
•в Java отсутствуют препроцессорные операции;
•в Java отсутствуют файлы заголовки (header);
•в Java контроль за расходом памяти возложен на
специальный механизм сборки мусора, в С++ за этим следит
сам программист.
СРАВНЕНИЕ С# И
JAVA
• В Java нет перегрузки операторов
• Java использует JVM и преобразует исходный код в байт-код,
тогда как С# запускает программы на CRL (Common Runtime
Language) , преобразовывая исходных код в IL (Intermediate
Language). IL используется для интерпретации различный языков
высокого уровня (C#, VB). Аналог машинного кода.
• Java различает два типа исключений – проверяемые и
непроверяемые. C# имеет только один тип исключения.
• В C# есть делегаты, которые по существу служат в качестве
методов, которые могут быть вызваны без знания целевого
объекта. В Java нет.
• Generics улучшает проверку типов с помощью компилятора, в
основном удаляя приведения из исходного кода. В Java средства
обобщений реализуются с использованием стираний. Параметры
общего типа «стираются», а при компиляции в байт-код
добавляются приведения. C# также использует обобщения,
интегрируя его в CLI и предоставляя информацию о типе во время
выполнения, что дает небольшое увеличение производительности.
НЕМНОГО ТЕОРИИ
Виртуальная машина (JVM) — это спецификация, описывающая абстрактную
машину, в которой могут выполнятся приложения на java. Машина считается
виртуальной, так как большую ее часть составляют различные программные
компоненты. Существуют JVM реализованные различными производителями, но
все они придерживаются единой спецификации. Реализация JVM это программное
обеспечение интерпретирующее инструкции байт-кода программы в команды
операционной системы.
Компилятор — это средство, которое преобразует исходный код в байт-код. Java
компилятор написан на языке java. Существуют компиляторы которые
преобразуют исходный код с других языков (Ada, JavaScript, Python, Ruby) в байт-
код. Существуют так же языки адаптированные для работы на виртуальной java
машине (Scala, Groovy).
Байт код — это набор инструкций на промежуточном языке, предназначенный для
выполнения виртуальной машинной. Каждая инструкция кодируется одним
байтом. Существует 205 инструкций, остальные (51) являются резервом. Байт-код
создается в результате компиляции кода программы, находящейся в файлах
с расширением java. Байт-код сохраняется в файлах с расширением class.
ПРИМЕР БАЙТ-КОДА
(для использования synchronized блока в теле метода)
ECLIPSE
IDE Eclipse — бесплатная свободная среда для
разработки много-модульных и кроссплатформенных
приложений. Имеет открытый исходный код. Развивается
и поддерживается некоммерческой организацией «Eclipse
Foundation». Изначально среда принадлежала IBM.
Представляет собой многослойный конструктор
состоящий из сервисной платформы «OSGI»
и «SWT/JFace». Расширение функционала
осуществляется с помощью плагинов (plugins), которых
имеется большое количество.
УСТАНОВКА
1. Установить JDK и JRE с официального сайта, через
установочный пакет, который можно скачать по
адресу
https://www.oracle.com/technetwork/java/javase/downloads/i
ndex.html
Начиная с Java 11, Oracle JDK, на который ссылаются почти все
поисковые запросы, теперь является коммерческим, и не является
бесплатным.
Ключевая часть обновлённого лицензионного соглашения
(https://www.oracle.com/technetwork/java/javase/terms/license/javase-
license.html) заключается в следующем:
«You may not: use the Programs for any data processing or any commercial,
production, or internal business purposes other than developing, testing,
prototyping, and demonstrating your Application;»
Что это значит?
Начиная с Java 11, Oracle будет выпускать JDK под лицензией GNU
General Public License v2, with the Classpath Exception (GPLv2+CPE) и под
коммерческой лицензией для тех, кто использует Oracle JDK как часть
продуктов или сервисов Oracle, или кто не хочет использовать открытое
программное обеспечение. Эта комбинация из OS-лицензии и
коммерческой заменяет старую лицензию BCL (Oracle Binary Code
License), которая состоит из коммерческих и бесплатных условий
использования.
Для каждой лицензии будут предоставляться отдельные сборки, но эти
сборки будут идентичны функционально, кроме некоторых
косметических различий и различий в способе упаковки бинарников.
После установки Java платформы, необходимо
сконфигурировать систему для работы с Java.
ЧЕРЕЗ ПОИСК НАХОДИМ
РАЗДЕЛ СИСТЕМА – ПАНЕЛЬ
УПРАВЛЕНИЯ
ДОПОЛНИТЕЛЬНЫЕ
ПАРАМЕТРЫ СИСТЕМЫ
– ПЕРЕМЕННЫЕ СРЕДЫ
•В переменную PATH указываем полный путь к
директории bin нашего JDK
•Создаем переменную JAVA_HOME и вносим полный путь
к JDK.
INTELLIJ IDEA
Разрабатывается компанией «Jet Brains». Отличительной
особенностью является понимание контекста и большого
количества поддерживаемых технологий и фреймворков
прямо из коробки. Имеется бесплатная версия Community
(отсутствует поддержка JEE технологий, определение
дупликатов и технологий работы с базами данных)
и платная Ultimate (30-дневный пробный период).
Официальный сайт https://www.jetbrains.com/idea/
NETBEANS
NetBeans — бесплатная свободная среда разработки
с открытым исходным кодом. Поддерживает различные
языки программирования и разметки. Поддержка
большинства современных java технологий.
Присутствует интерфейс на русском языке и большое
русскоязычное сообщество.
Официальный сайт https://netbeans.org/
CODENVY
Бесплатная среда разработки не требующая установки
приложения на компьютер. Разработка ведется
в браузере, после загрузки в него необходимого контента.
Официальный сайт https://codenvy.com/
ЗАПУСК ПРОСТЕЙШЕГО
ПРИЛОЖЕНИЯ
ИМЕНОВАНИЕ
ПАКЕТОВ
Согласно конвенции наименования, принята следующая
структура именования пакетов
com.[Название компании].[Название продукта]
Следует обратить внимание на следующий факт: в одном
классе может несколько методов main, при условии, что
их сигнатуры не будут совпадать. При этом, точка входа в
систему будет неизменна: Метод
public static void main(String[] args)
ТИПЫ ДАННЫХ
Примитивные и ссылочные
ПРИМИТИВНЫЕ ТИПЫ
ДАННЫХ
Целочисленные примитивные типы данных могут хранить
в себе только целые числа (без дробной части) из диапазона
заданного размерностью типа.
Дробные типы данных предназначены для хранения значений
дроби. Дробный тип данных может быть представлен в виде
десятичной дроби. В качестве разделителя целой и дробной
части используется точка. Например 1.5 — это одна целая
и пять десятых. Так же могут быть использованы научная
и экспоненциальная форма записи.
Особенности специальных значений с плавающей точкой
•Math.sqrt(-1.0) = NaN
•0.0 / 0.0 = NaN
•1.0 / 0.0 = Infinity
•–1.0 / 0.0 = -Infinity
•NaN==NaN = false
•Infinity==Infinity = false
Символьный тип может хранить в себе только целые числа,
которые интерпретируются, как коды символов из таблицы на
основе юникода (Unicode). Юникод — эта стандарт
кодирования символов, где каждому символу соответствует
определенный код. В юникоде представлены все возможные
знаки различных народов мира. Каждый символ кодируется
двумя байтами. Если нет возможности набрать в коде символ
с клавиатуры он может быть заменен на запись символа
в виде юникода. Например: ‘u0056’
Логический тип используется для хранения значений
полученных в результате вычисления логических выражений
или может задаваться логическими литералами: где true —
обозначает истину, false — обозначает ложь. В стандартной
реализации «Sun JVM» для хранения значений типа boolean
используется 32 бита, а в случае массива boolean происходит
оптимизация до 8 бит. Для хранения большого количества
значений типа boolean рекомендуется использовать класс
BitSet.
Все остальные типы данных считаются ссылочными и, по
своей сути, являются ссылками на объекты, имеющими
общий суперкласс: Object.
Такие объекты имеют как стандартные наследуемые от класса
Object методы, так и свои уникальные методы.
ПРИМЕРЫ ССЫЛОЧНЫХ
ТИПОВ ДАННЫХ
•String
•Double
•Integer
•Float
•Byte
•Character
•StreamReader / StreamWriter
•Long
Такие ссылочные типы данных как Double, Long, Integer, и т.д.
по сути являются «обертками» над их примитивами,
предоставляя дополнительный функционал для работы с
этими типами (Сравнение, нахождение min/max значений,
конвертирование строчных в заглавные символы и наоборот,
и т.д.)
Для определения разницы между примитивами и
ссылочными типами рекомендуется решить следующую
задачу
РЕЗУЛЬТАТОМ РАБОТЫ
ПРОГРАММЫ ПОЛУЧИМ
СЛЕДУЮЩИЙ РЕЗУЛЬТАТ
New Integer() создает новый объект типа Integer, который
имеет другой адрес в памяти. Оператор == сравнивает между
собой адреса объектов, а не их значения. Поэтому результат
второй проверки равен false. Для сравнения значений
объектов ссылочных типов необходимо использовать метод
.Equals()
ENUM
Enum, или перечисление, также относится к ссылочным
типам данных и являет собою класс (enum type),
содержащий список констант.
И да, enum, как и любой объект, может иметь свой
собственный конструктор и методы.
ПЕРЕМЕННАЯ
Переменная — это именованная область памяти,
в которую может быть записано или перезаписано
и откуда может быть прочитано значение определенного
типа. Тип переменной и ее имя (идентификатор) задаются
в момент объявления переменной в программе.
Синтаксис объявления переменной:
тип идентификатор;
КОНСТАНТЫ
Это переменные, значение которых обычно нельзя
изменить после инициализации.
Для их объявления используется модификатор final.
Однако, следует разделять final переменные и константы.
Константы инициализируются сразу после объявления
переменной
Final же переменные могут, и должны быть,
инициализированы либо в блоке инициализации, либо в
конструкторе класса.
МОЖНО ЛИ ИЗМЕНЯТЬ
ЗНАЧЕНИЕ FINAL ПЕРЕМЕННОЙ?
Да, можно, используя Reflection API.
Однако, изменить значение константы невозможно, даже
используя Reflection API.
ЛИТЕРАЛЫ
Литерал — это явно заданное в коде значение
определенного типа. Для задание литералов в коде
программы используется специальный синтаксис.
Примечание: Начиная с версии JDK 7.0 java позволяет
разделять разряды числовых литералов символом
подчеркивания. Например: 100_000_000.
Тип литерала Тип данных Спецсимволы Пример
Целочисленный
int x 3, 03, 0x3
long L, l 3l, 3L
Дробный
float F, f, e 1.5f, 1.5F, 1.5e-1f
double D, d, e
1.5, 1.5d, 1.5D,
1.5e-1
Булевый boolean true, false true, false
Символьный char ‘ ‘a’, ‘u0041’
Ссылочный Все ссылочные null null
МОДИФИКАТОРЫ
Модификаторы доступа
•private – только внутри класса
•public – переменная доступна всем.
•default – видимость внутри пакета как public
•protected – для класса и его наследников
Остальные модификаторы переменных:
•static – предоставляет доступ на уровне класса, а не
экземпляра. Значение едино для всех экземпляров класса.
•final - константа
•transient - переменные не могут быть final или static. Такие
переменные не сериализуются.
•volatile – используется при проектировании
многопоточности. Гарантирует синхронизацию значения
переменной со всеми потоками.
ОПЕРАТОРЫ
Операции в языке java — это специальные символы,
которые показывают какое действие необходимо выполнить
для заданных операндов.
Операнд — может быть литералом, переменной или
выражением, над которыми производится операция.
Операции могут применяться к одному (унарная операция),
двум (бинарная операция) или трем (тернарная операция)
операндам.
Операции могут быть объединены в выражения. В отличии
от С++ в Java отсутствует перегрузка операций, так как
создатели языка решили, что перегрузка операций
существенно запутывает код и усложняет его понимание.
ТИПЫ ОПЕРАТОРОВ
Арифметические
Логические
Операторы ветвлений
Унарные
Бинарные
Тернарный
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
ПРЕДПОЛОЖИМ, ЛОГИЧЕСКАЯ ПЕРЕМЕННАЯ A ИМЕЕТ ЗНАЧЕНИЕ TRUE,
А ПЕРЕМЕННАЯ B ХРАНИТ FALSE. В СЛЕДУЮЩЕЙ ТАБЛИЦЕ
ПЕРЕЧИСЛЕНЫ ЛОГИЧЕСКИЕ ОПЕРАТОРЫ В JAVA:
Оператор Описание Пример
&& Называется логический
оператор «И». Если оба
операнда являются не
равны нулю, то условие
становится истинным
(A && B) — значение
false
|| Называется логический
оператор «ИЛИ». Если
любой из двух операндов
не равен нулю, то условие
становится истинным
(A || B) — значение true
! Называется логический
оператор «НЕ».
Использование меняет
логическое состояние
своего операнда. Если
условие имеет значение
true, то оператор
логического «НЕ» будет
делать false
!(A && B) — значение
true
ОПЕРАТОРЫ
ВЕТВЛЕНИЯ
• If
• else if
• else
• switch()
ТЕРНАРНЫЙ
ОПЕРАТОР
Тернарный оператор содержит три операнда.
Результатом операции может быть второй или третий
операнд. Первый операнд должен иметь тип boolean.
Синтаксис:
выражение1 ? выражение2 : выражение3;
Операция вернет значение «выражение2» если результат
вычисления «выражения1» примет значение истина,
иначе вернет значение «выражения3».
ОПЕРАЦИЯ
ПРИСВАИВАНИЯ
Для сохранения в переменной значения литерала,
переменной или значения выражения используется
операция присваивания. Оператор присваивания имеет
самый низкий приоритет, поэтому в начале выполнятся
все операции в выражении и только потом вычисленное
значение передастся в переменную. Синтаксис:
переменная = выражение;
АРИФМЕТИЧЕСКИЕ
ОПЕРАТОРЫ
Обозначение Описание Пример
+ Унарный плюс, не меняет
значение операнда.
int i = -1; i = +i;
System.out.println(i);
Бинарный плюс, суммирует
операнды.
int i = -1; i = i + 3;
System.out.println(i);
- Унарный минус — меняет знак
операнда на противоположный.
int i = 1; i = -i;
System.out.println(i);
Бинарный минус — вычитает
правый операнд из левого.
int i = 3; i = i - 2;
System.out.println(i);
* Умножение операндов int i = 2; i = i * 2;
System.out.println(i);
/ Деление левого операнда на
правый.
int i = 4; i = i / 2;
System.out.println(i);
% Вычисление остатка от деления
левого операнда на правый.
int i = 3; i = i % 2;
System.out.println(i);
++ Бинарный оператор увеличения
значения переменной на 1.
Инкремент.
i++; заменяет
выражение i = i + 1;
Постфиксная версия.
Префиксная ++I;
-- Бинарный оператор уменьшения
значения переменной на 1.
Декремент.
i--; заменяет
выражение i = i - 1;
ПРИОРИТЕТ ОПЕРАЦИЙ

Contenu connexe

Tendances

Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
C:\fakepath\lopc_midlet
C:\fakepath\lopc_midletC:\fakepath\lopc_midlet
C:\fakepath\lopc_midletstaticboy44
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
введение в Javascript
введение в Javascriptвведение в Javascript
введение в Javascriptinqubick
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействиеUnguryan Vitaliy
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.Igor Shkulipa
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Stfalcon Meetups
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекцийstudent_kai
 
Lektsia 5
Lektsia 5Lektsia 5
Lektsia 5bomfan
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 

Tendances (20)

Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Java 9 - Back to the Future
Java 9 - Back to the FutureJava 9 - Back to the Future
Java 9 - Back to the Future
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
C:\fakepath\lopc_midlet
C:\fakepath\lopc_midletC:\fakepath\lopc_midlet
C:\fakepath\lopc_midlet
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
введение в Javascript
введение в Javascriptвведение в Javascript
введение в Javascript
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
 
презентация конспекта лекций
презентация конспекта лекцийпрезентация конспекта лекций
презентация конспекта лекций
 
Lektsia 5
Lektsia 5Lektsia 5
Lektsia 5
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Deep storm presentation
Deep storm presentationDeep storm presentation
Deep storm presentation
 

Similaire à Step 1

Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?GetITAbroad
 
Разговор про Java 9. Extended version
Разговор про Java 9. Extended versionРазговор про Java 9. Extended version
Разговор про Java 9. Extended versionIvan Krylov
 
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreTatyanazaxarova
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPmikhailshurgulaya
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Seleniumjazzteam
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрийsolit
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftAnton Loginov
 
Presentation for students about Laravel.pptx
Presentation for students about Laravel.pptxPresentation for students about Laravel.pptx
Presentation for students about Laravel.pptxGetOverHere
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 

Similaire à Step 1 (20)

Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?Что такое Java? Кто такой Java разработчик?
Что такое Java? Кто такой Java разработчик?
 
WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Разговор про Java 9. Extended version
Разговор про Java 9. Extended versionРазговор про Java 9. Extended version
Разговор про Java 9. Extended version
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 
Lesson 01
Lesson 01Lesson 01
Lesson 01
 
Сущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCoreСущность библиотеки анализа кода VivaCore
Сущность библиотеки анализа кода VivaCore
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Inroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAPInroducing SAP ABAP - Presentation with basics SAP ABAP
Inroducing SAP ABAP - Presentation with basics SAP ABAP
 
Java 2 - Java Intro
Java 2 - Java IntroJava 2 - Java Intro
Java 2 - Java Intro
 
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
 
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)
 
Invisible
InvisibleInvisible
Invisible
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Как пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на SwiftКак пройти собеседование и получить первую работу на Swift
Как пройти собеседование и получить первую работу на Swift
 
Presentation for students about Laravel.pptx
Presentation for students about Laravel.pptxPresentation for students about Laravel.pptx
Presentation for students about Laravel.pptx
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 

Plus de DmitryTrushkin (7)

Step 7
Step 7Step 7
Step 7
 
Step 6
Step 6Step 6
Step 6
 
Step 5
Step 5Step 5
Step 5
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
Step 3.1
Step 3.1Step 3.1
Step 3.1
 
Collections
CollectionsCollections
Collections
 
Step 2
Step 2Step 2
Step 2
 

Step 1

  • 1. ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ JAVA, ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ, ОПЕРАТОРЫ
  • 2. Дата официального выпуска — 23 мая 1995 года. На 2018 год Java — один из самых популярных языков программирования. Основной целю технологии java является принцип — «Написанное один раз — работает везде» (англ. «Write once — run anywhere.» WORA).
  • 3. СРАВНЕНИЕ С++ И JAVA: •В Java отсутствует перегрузка операторов; •в Java отсутствует прямой доступ к памяти через указатель; •в Java отсутствуют деструкторы; •в Java отсутствует возможность процедурного программирования; •в Java статическая длина массивов и проверка индекса при доступе к элементу; •в Java значение переменных экземпляра (полей класса), в случае отсутствия инициализации, принимают значения по умолчанию (для целых и дробных типов это 0, для boolean — это false, для ссылочных типов — это null); •в Java отсутствуют препроцессорные операции; •в Java отсутствуют файлы заголовки (header); •в Java контроль за расходом памяти возложен на специальный механизм сборки мусора, в С++ за этим следит сам программист.
  • 4. СРАВНЕНИЕ С# И JAVA • В Java нет перегрузки операторов • Java использует JVM и преобразует исходный код в байт-код, тогда как С# запускает программы на CRL (Common Runtime Language) , преобразовывая исходных код в IL (Intermediate Language). IL используется для интерпретации различный языков высокого уровня (C#, VB). Аналог машинного кода. • Java различает два типа исключений – проверяемые и непроверяемые. C# имеет только один тип исключения. • В C# есть делегаты, которые по существу служат в качестве методов, которые могут быть вызваны без знания целевого объекта. В Java нет. • Generics улучшает проверку типов с помощью компилятора, в основном удаляя приведения из исходного кода. В Java средства обобщений реализуются с использованием стираний. Параметры общего типа «стираются», а при компиляции в байт-код добавляются приведения. C# также использует обобщения, интегрируя его в CLI и предоставляя информацию о типе во время выполнения, что дает небольшое увеличение производительности.
  • 5. НЕМНОГО ТЕОРИИ Виртуальная машина (JVM) — это спецификация, описывающая абстрактную машину, в которой могут выполнятся приложения на java. Машина считается виртуальной, так как большую ее часть составляют различные программные компоненты. Существуют JVM реализованные различными производителями, но все они придерживаются единой спецификации. Реализация JVM это программное обеспечение интерпретирующее инструкции байт-кода программы в команды операционной системы. Компилятор — это средство, которое преобразует исходный код в байт-код. Java компилятор написан на языке java. Существуют компиляторы которые преобразуют исходный код с других языков (Ada, JavaScript, Python, Ruby) в байт- код. Существуют так же языки адаптированные для работы на виртуальной java машине (Scala, Groovy). Байт код — это набор инструкций на промежуточном языке, предназначенный для выполнения виртуальной машинной. Каждая инструкция кодируется одним байтом. Существует 205 инструкций, остальные (51) являются резервом. Байт-код создается в результате компиляции кода программы, находящейся в файлах с расширением java. Байт-код сохраняется в файлах с расширением class.
  • 6. ПРИМЕР БАЙТ-КОДА (для использования synchronized блока в теле метода)
  • 7. ECLIPSE IDE Eclipse — бесплатная свободная среда для разработки много-модульных и кроссплатформенных приложений. Имеет открытый исходный код. Развивается и поддерживается некоммерческой организацией «Eclipse Foundation». Изначально среда принадлежала IBM. Представляет собой многослойный конструктор состоящий из сервисной платформы «OSGI» и «SWT/JFace». Расширение функционала осуществляется с помощью плагинов (plugins), которых имеется большое количество.
  • 8.
  • 9. УСТАНОВКА 1. Установить JDK и JRE с официального сайта, через установочный пакет, который можно скачать по адресу https://www.oracle.com/technetwork/java/javase/downloads/i ndex.html
  • 10. Начиная с Java 11, Oracle JDK, на который ссылаются почти все поисковые запросы, теперь является коммерческим, и не является бесплатным. Ключевая часть обновлённого лицензионного соглашения (https://www.oracle.com/technetwork/java/javase/terms/license/javase- license.html) заключается в следующем: «You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;» Что это значит? Начиная с Java 11, Oracle будет выпускать JDK под лицензией GNU General Public License v2, with the Classpath Exception (GPLv2+CPE) и под коммерческой лицензией для тех, кто использует Oracle JDK как часть продуктов или сервисов Oracle, или кто не хочет использовать открытое программное обеспечение. Эта комбинация из OS-лицензии и коммерческой заменяет старую лицензию BCL (Oracle Binary Code License), которая состоит из коммерческих и бесплатных условий использования. Для каждой лицензии будут предоставляться отдельные сборки, но эти сборки будут идентичны функционально, кроме некоторых косметических различий и различий в способе упаковки бинарников.
  • 11. После установки Java платформы, необходимо сконфигурировать систему для работы с Java.
  • 12. ЧЕРЕЗ ПОИСК НАХОДИМ РАЗДЕЛ СИСТЕМА – ПАНЕЛЬ УПРАВЛЕНИЯ
  • 14. •В переменную PATH указываем полный путь к директории bin нашего JDK •Создаем переменную JAVA_HOME и вносим полный путь к JDK.
  • 15. INTELLIJ IDEA Разрабатывается компанией «Jet Brains». Отличительной особенностью является понимание контекста и большого количества поддерживаемых технологий и фреймворков прямо из коробки. Имеется бесплатная версия Community (отсутствует поддержка JEE технологий, определение дупликатов и технологий работы с базами данных) и платная Ultimate (30-дневный пробный период). Официальный сайт https://www.jetbrains.com/idea/
  • 16.
  • 17. NETBEANS NetBeans — бесплатная свободная среда разработки с открытым исходным кодом. Поддерживает различные языки программирования и разметки. Поддержка большинства современных java технологий. Присутствует интерфейс на русском языке и большое русскоязычное сообщество. Официальный сайт https://netbeans.org/
  • 18.
  • 19. CODENVY Бесплатная среда разработки не требующая установки приложения на компьютер. Разработка ведется в браузере, после загрузки в него необходимого контента. Официальный сайт https://codenvy.com/
  • 20.
  • 22. ИМЕНОВАНИЕ ПАКЕТОВ Согласно конвенции наименования, принята следующая структура именования пакетов com.[Название компании].[Название продукта]
  • 23. Следует обратить внимание на следующий факт: в одном классе может несколько методов main, при условии, что их сигнатуры не будут совпадать. При этом, точка входа в систему будет неизменна: Метод public static void main(String[] args)
  • 24.
  • 27. Целочисленные примитивные типы данных могут хранить в себе только целые числа (без дробной части) из диапазона заданного размерностью типа. Дробные типы данных предназначены для хранения значений дроби. Дробный тип данных может быть представлен в виде десятичной дроби. В качестве разделителя целой и дробной части используется точка. Например 1.5 — это одна целая и пять десятых. Так же могут быть использованы научная и экспоненциальная форма записи. Особенности специальных значений с плавающей точкой •Math.sqrt(-1.0) = NaN •0.0 / 0.0 = NaN •1.0 / 0.0 = Infinity •–1.0 / 0.0 = -Infinity •NaN==NaN = false •Infinity==Infinity = false
  • 28. Символьный тип может хранить в себе только целые числа, которые интерпретируются, как коды символов из таблицы на основе юникода (Unicode). Юникод — эта стандарт кодирования символов, где каждому символу соответствует определенный код. В юникоде представлены все возможные знаки различных народов мира. Каждый символ кодируется двумя байтами. Если нет возможности набрать в коде символ с клавиатуры он может быть заменен на запись символа в виде юникода. Например: ‘u0056’ Логический тип используется для хранения значений полученных в результате вычисления логических выражений или может задаваться логическими литералами: где true — обозначает истину, false — обозначает ложь. В стандартной реализации «Sun JVM» для хранения значений типа boolean используется 32 бита, а в случае массива boolean происходит оптимизация до 8 бит. Для хранения большого количества значений типа boolean рекомендуется использовать класс BitSet.
  • 29. Все остальные типы данных считаются ссылочными и, по своей сути, являются ссылками на объекты, имеющими общий суперкласс: Object. Такие объекты имеют как стандартные наследуемые от класса Object методы, так и свои уникальные методы.
  • 31. Такие ссылочные типы данных как Double, Long, Integer, и т.д. по сути являются «обертками» над их примитивами, предоставляя дополнительный функционал для работы с этими типами (Сравнение, нахождение min/max значений, конвертирование строчных в заглавные символы и наоборот, и т.д.)
  • 32. Для определения разницы между примитивами и ссылочными типами рекомендуется решить следующую задачу
  • 33. РЕЗУЛЬТАТОМ РАБОТЫ ПРОГРАММЫ ПОЛУЧИМ СЛЕДУЮЩИЙ РЕЗУЛЬТАТ New Integer() создает новый объект типа Integer, который имеет другой адрес в памяти. Оператор == сравнивает между собой адреса объектов, а не их значения. Поэтому результат второй проверки равен false. Для сравнения значений объектов ссылочных типов необходимо использовать метод .Equals()
  • 34. ENUM Enum, или перечисление, также относится к ссылочным типам данных и являет собою класс (enum type), содержащий список констант. И да, enum, как и любой объект, может иметь свой собственный конструктор и методы.
  • 35.
  • 36. ПЕРЕМЕННАЯ Переменная — это именованная область памяти, в которую может быть записано или перезаписано и откуда может быть прочитано значение определенного типа. Тип переменной и ее имя (идентификатор) задаются в момент объявления переменной в программе. Синтаксис объявления переменной: тип идентификатор;
  • 37. КОНСТАНТЫ Это переменные, значение которых обычно нельзя изменить после инициализации. Для их объявления используется модификатор final. Однако, следует разделять final переменные и константы.
  • 38. Константы инициализируются сразу после объявления переменной Final же переменные могут, и должны быть, инициализированы либо в блоке инициализации, либо в конструкторе класса.
  • 39.
  • 40. МОЖНО ЛИ ИЗМЕНЯТЬ ЗНАЧЕНИЕ FINAL ПЕРЕМЕННОЙ? Да, можно, используя Reflection API.
  • 41. Однако, изменить значение константы невозможно, даже используя Reflection API.
  • 42. ЛИТЕРАЛЫ Литерал — это явно заданное в коде значение определенного типа. Для задание литералов в коде программы используется специальный синтаксис. Примечание: Начиная с версии JDK 7.0 java позволяет разделять разряды числовых литералов символом подчеркивания. Например: 100_000_000.
  • 43. Тип литерала Тип данных Спецсимволы Пример Целочисленный int x 3, 03, 0x3 long L, l 3l, 3L Дробный float F, f, e 1.5f, 1.5F, 1.5e-1f double D, d, e 1.5, 1.5d, 1.5D, 1.5e-1 Булевый boolean true, false true, false Символьный char ‘ ‘a’, ‘u0041’ Ссылочный Все ссылочные null null
  • 44. МОДИФИКАТОРЫ Модификаторы доступа •private – только внутри класса •public – переменная доступна всем. •default – видимость внутри пакета как public •protected – для класса и его наследников Остальные модификаторы переменных: •static – предоставляет доступ на уровне класса, а не экземпляра. Значение едино для всех экземпляров класса. •final - константа •transient - переменные не могут быть final или static. Такие переменные не сериализуются. •volatile – используется при проектировании многопоточности. Гарантирует синхронизацию значения переменной со всеми потоками.
  • 45. ОПЕРАТОРЫ Операции в языке java — это специальные символы, которые показывают какое действие необходимо выполнить для заданных операндов. Операнд — может быть литералом, переменной или выражением, над которыми производится операция. Операции могут применяться к одному (унарная операция), двум (бинарная операция) или трем (тернарная операция) операндам. Операции могут быть объединены в выражения. В отличии от С++ в Java отсутствует перегрузка операций, так как создатели языка решили, что перегрузка операций существенно запутывает код и усложняет его понимание.
  • 47. ЛОГИЧЕСКИЕ ОПЕРАЦИИ ПРЕДПОЛОЖИМ, ЛОГИЧЕСКАЯ ПЕРЕМЕННАЯ A ИМЕЕТ ЗНАЧЕНИЕ TRUE, А ПЕРЕМЕННАЯ B ХРАНИТ FALSE. В СЛЕДУЮЩЕЙ ТАБЛИЦЕ ПЕРЕЧИСЛЕНЫ ЛОГИЧЕСКИЕ ОПЕРАТОРЫ В JAVA: Оператор Описание Пример && Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным (A && B) — значение false || Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным (A || B) — значение true ! Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false !(A && B) — значение true
  • 49. ТЕРНАРНЫЙ ОПЕРАТОР Тернарный оператор содержит три операнда. Результатом операции может быть второй или третий операнд. Первый операнд должен иметь тип boolean. Синтаксис: выражение1 ? выражение2 : выражение3; Операция вернет значение «выражение2» если результат вычисления «выражения1» примет значение истина, иначе вернет значение «выражения3».
  • 50. ОПЕРАЦИЯ ПРИСВАИВАНИЯ Для сохранения в переменной значения литерала, переменной или значения выражения используется операция присваивания. Оператор присваивания имеет самый низкий приоритет, поэтому в начале выполнятся все операции в выражении и только потом вычисленное значение передастся в переменную. Синтаксис: переменная = выражение;
  • 52. Обозначение Описание Пример + Унарный плюс, не меняет значение операнда. int i = -1; i = +i; System.out.println(i); Бинарный плюс, суммирует операнды. int i = -1; i = i + 3; System.out.println(i); - Унарный минус — меняет знак операнда на противоположный. int i = 1; i = -i; System.out.println(i); Бинарный минус — вычитает правый операнд из левого. int i = 3; i = i - 2; System.out.println(i); * Умножение операндов int i = 2; i = i * 2; System.out.println(i); / Деление левого операнда на правый. int i = 4; i = i / 2; System.out.println(i); % Вычисление остатка от деления левого операнда на правый. int i = 3; i = i % 2; System.out.println(i); ++ Бинарный оператор увеличения значения переменной на 1. Инкремент. i++; заменяет выражение i = i + 1; Постфиксная версия. Префиксная ++I; -- Бинарный оператор уменьшения значения переменной на 1. Декремент. i--; заменяет выражение i = i - 1;