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

Dive Into Android. Основы Java

Dive Into Android. Основы Java

Avatar for Alex Korovyansky

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