Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dive Into Android. Основы Java

Dive Into Android. Основы Java

Alex Korovyansky

September 08, 2013
Tweet

More Decks by Alex Korovyansky

Other Decks in Programming

Transcript

  1. 5 Java за 30 секунд • Объектно-ориентированный язык программирования •

    Виртуальная машина Java (компиляция в байт-код) • Мощный, удобный, читаемый • Автоматический сборщик мусора • Разработан в Sun Microsystems в начале 1990-х
  2. 6 Характерные особенности Java • объектно- ориентированный • простой •

    распределенный • надежный • безопасный • не зависит от архитектуры компьютера • переносимый • интерпретируемый • многопоточный • динамичный из руководства от авторов Java - http://java.sun.com/docs/white/langenv/
  3. 7 Виртуальная машина исходный код байт-код Виртуальная машина Java (JVM)

    ... компилятор (javac) перенос выполнение (интерпретация) одна и та же программа работает во всех ОС одинаково
  4. 9 Java IDEs • http://www.javaportal.ru/projects/taidej/results.html • Очень много разных IDE,

    javaportal насчитали 56 • Eclipse, Netbeans, IntelliJ IDEA - хорошие Java IDE • Во всех можно разрабатывать под Android • Наш выбор Eclipse Juno (сборка For Mobile Developers) • http://www.eclipse.org/downloads/
  5. 10 Простая программа public class HelloJava { public static void

    main(String[] args) { System.out.println(“Hello World!”); } }
  6. 11 Синтаксис • Синтаксис Java основан на синтаксисе языка Си

    public int sign(int x){ if(x > 0){ return 1; } else if (x == 0){ return 0; } return -1; } public void spam(){ for(int i=0; i<1000; ++i) System.out.println("Spam"); }
  7. 12 Отличие от С/С++ • Отсутствие указателей • Нельзя объявить

    функцию вне класса • Нет перегрузки операторов • Нет множественного наследования классов • Авторы Java взяли за основу C/C++, стараясь сделать язык более простым
  8. 14 Комментарии • Три способа комментировать: // это строчный комментарий

    /* это блочный комментарий*/ /** это документирующий комментарий*/
  9. 15 Типы данных • Строгая типизация • Простые типы: int,

    short, long, byte, double, float, char, boolean • Составные типы: классы • Диапазоны целочисленных типов не зависят от конкретной машины //пример простых типов int i = 1; long l = 2L; float f = 3.14F; double d = 3.14; boolean b = true; char c = 'a';
  10. 16 Переменные • В Java каждая переменная имеет тип •

    Переменная должна быть инициализирована перед использованием • Для явной инициализации переменной составного типа (объекта) нужно использовать оператор new • Переменные составного типа являются ссылками • Пустая ссылка обозначается null
  11. 17 Преобразование типов byte short int char float long double

    без потери точности с потерей точности
  12. 18 Приведение типов • Приведение типов не происходит автоматически и

    всегда приводит к потери информации • Приведение простых типов: double x = 9.99; int nx = (int)x; //nx = 9 A a = new A(); B b = (B)a; • Приведение составных типов:
  13. 19 Строки • Объект класса String • Строка является составным

    типом, но очень тесно интегрирована в язык • Строка является неизменяемым типом String s1 = "строка"; String s2 = "другая " + s1;
  14. 21 Парадигма ООП • Объект - сущность с определенным поведением

    и скрытой внутренней реализацией • Класс - шаблон, по которому будет сделан объект • Конструирование объекта - создание экземпляра класса • Состояние объекта меняется путем вызова его методов
  15. 22 Отношения между классами • Зависимость (“использует”) Рабочий -> Инструмент

    • Агрегирование (“содержит”) Машина -> Двигатель • Наследование (“является”) Лев -> Животное
  16. 23 Работа с объектами • Создание собственных объектов • Использование

    объектов стандартной библиотеки Java и других библиотек • Объекты организуются в пакеты
  17. 24 Пакеты и импорт • Классы объединяются в наборы, называемые

    пакетами • Стандартная библиотека Java содержит большое количество пакетов java.lang, java.util, java.net и т.д. • Пакеты используются для организации классов и обеспечения уникальности имен классов • Ключевое слово import позволяет работать с классом без указания имени пакета java.util.Date today = new java.util.Date(); import java.util.Date; Date today = new Date();
  18. 26 Конструктор • Конструктор - специальный метод для создания и

    инициализации экземпляра класса (объекта) public class Team{ private String name; public Team(String name){ this.name = name; } } ... Team t1; System.out.println(t1); //ошибка! не инициализир. переменная Team t2 = new Team("Авангард"); System.out.println(t2); //ок!
  19. 27 Поля и методы • Поля — данные объекта public

    class Team{ ... //поля класса Team private String name; private int total; private int win; } public class Team{ //методы класса Team public String getName(){ return name; } public void winGame(){ ++win; ++total; } ... } • Методы — действия над объектом
  20. 28 Модификаторы доступа • Объект имеет полный доступ к своим

    данным! • public - доступно всем • protected - доступно наследникам • private - не доступно никому • по-умолчанию - доступно внутри пакета
  21. 29 Инкапсуляция • Один из основных принципов ООП • Скрытие

    внутреннего устройства класса public class Girl{ public int getAge(){ return (age > 25 ? age - 2 : age); } private int age; }
  22. 30 Неизменяемые поля • Ключевое слово final public class Team{

    ... private final String name; private final City city; } • Значение неизменяемой переменной должно быть установлено при инициализации объекта • Значение неизменяемой переменной изменить нельзя, но можно изменить внутреннее состояние объекта
  23. 31 Статические поля и методы • Ключевое слово static public

    class Math{ ... public static final double PI = 3.14; public static double sin(double x){ ... }; } • Объявленные таким образом поля или методы принадлежат не конкретному объекту, а классу в целом • Для вызова статического метода не нужно создавать экземпляр класса double x = Math.sin(Math.PI * alpha);
  24. 32 Явные и неявные параметры • Параметры всегда передаются по

    значению! public class Team{ public void addPlayer(Player p){ ... } } ... team.addPlayer(new Player("Ягр")); • Неявный параметр - объект класса Team Доступ к нему внутри метода через this • Явный параметр - объект класса Player Доступ к нему внутри метода через переменную p
  25. 33 Наследование • Один из основных принципов ООП • Объект

    подкласса можно использовать вместо любого объекта суперкласса • Программист -> Работник, Велосипед -> Транспортное средство, Кнопка -> Элемент интерфейса public class B extends A{ ... } • Множественное наследование классов не поддерживается в Java B A A B
  26. 34 Полиморфизм • Один из основных принципов ООП • Переменная

    класса A может ссылаться как на любой объект класса A, так и на любой объект класса B, наследника А. B A C • При связывании переменной суперкласса с объектом подкласса, происходит сужение до возможностей суперкласса A aa = new A(); A ab = new B(); A ac = new C();
  27. 35 Перегрузка • Перегрузка методов с одинаковыми именами, но разными

    сигнатурами • Динамическое связывание по умолчанию public class A{ public void f(String s){ ... } public void f(double x){ ... } } A ab = new B(); ab.method(); /*если method переопределен в B, то вызовется он*/
  28. 36 Класс Object • Оbject - глобальный суперкласс. Каждый класс

    в Java расширяет класс Object. • Методы класса Object: boolean equals(Object o); int hashCode(); String toString(); ...
  29. 37 Абстрактные классы • Класс, содержащий неопределенные методы для переопределения

    в наследнике, считается абстрактным • Создать объект абстрактного класса невозможно public abstract class Being { public abstract void say(); } Being b = new Being();//ошибка!
  30. 38 Интерфейсы • Интерфейс - множество требований, предъявляемых к классу

    • Не является классом public interface Comparable{ int compareTo(Object other); } • Класс может реализовывать один или несколько интерфейсов class Profit implements Comparable, Enumerable
  31. 39 Вложенные классы • Класс, определяемый внутри другого класса, называется

    вложенным • Объект внутреннего класса имеет доступ ко всем данным внешнего объекта class Outer{ private int outerData; private class Inner{ public void calc(){ return outerData / 2; } } }
  32. 40 Анонимные вложенные классы • Вложенный класс, там где это

    нужно public void start(int interval, final boolean beep){ //анонимный вложенный класс ActionListener listener = new ActionListener(){ public void actionPerformed(ActionEvent event){ System.out.println("Время!"); if (beep) Toolkit.getDefaultToolkit().beep(); } }; Timer t = new Timer(interval, listener); t.start(); }
  33. Теперь Вы знакомы с основами Java. Язык Java выразителен и

    одновременно прост. Книга из Дополнителных материалов поможет Вам быстро набрать необходимый уровень по Java. Дальше мы будем говорить об Android. Резюме 43
  34. 44 Дополнительные материалы • Книга по Java, которую стоит прочитать

    http://www.ozon.ru/context/detail/id/3817476/ • Java Code Convention http://www.oracle.com/technetwork/java/codeconv-138413.html