Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемАлександра Хметевская
1 1 © Luxoft Training 2012 Понятие Java приложения Модуль #4
2 2 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
3 3 © Luxoft Training 2012 Идентификатор – слово используемое для наименования переменной, метода, класса или метки. Ключевые слова и зарезервированные слова не могут быть использованы в качестве идентификаторов. Идентификатор должен начинаться с буквы, символа доллара ($) или символа подчеркивания (_). Последующими символами могут быть: буквы, $, _, цифры. Описание класса
4 4 © Luxoft Training 2012 Ключевые слова Java
5 5 © Luxoft Training 2012 Класс – набор данных и методов работы с этими данными. Класс необходимо представлять как штамп, производящий экземпляры этого класса. Экземпляр – создается в runtime (в процессе выполнения программы). Представляет из себя память, выделенную под данные и инструкции JVM, как вызывать методы класса. Описание класса
6 6 © Luxoft Training 2012 Декларация класса: Описание класса определяет видимость класса, т.е. какие классы могут получить доступ к данному классу. Модификатор public говорит, что к такому классу могут обращаться откуда угодно. Может быть определен только один public класс в файле. class { }
7 7 © Luxoft Training 2012 Тело класса – это кодовый блок, содержащий данные. Его тело должно заключаться в { }. Данные – декларация переменных и методы. Стоит различать переменные класса и переменные экземпляра (об этом в следующих модулях). Описание класса
8 8 © Luxoft Training 2012 Метод – набор инструкций работы с данными класса, а так же с параметрами метода. Метод также представляет кодовый блок и заключается в { }. Описание класса ( ) {... }
9 9 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
10 10 © Luxoft Training 2012 Работа любой java программы (java приложения) начинается с выполнения метода main. Простейшее приложение состоит из одного метода main. Для запуска программы в JVM, необходимо задать в командной строке java: Описание класса Внимание! Eсли указанный класс не содержит main, или не верна его сигнатуры, Возбуждается java.lang.NoSuchMethodError
11 11 © Luxoft Training 2012 Сигнатура метода main. Сигнатура метода public static void main(String[] args) void – возвращаемый тип. args – список аргументов командной строки. Метод main должен быть объявлен как статический. Статический метод может и должен быть вызван так: TheClass.staticMethod(...) Внимание! Время жизни программы равно времени выполнения метода main.
12 12 © Luxoft Training 2012 Метод создает экземпляры классов, вызывает методы этих объектов, которые могут вызывать другие методы, запрашивать ввод с консоли и т.д. Данная цепочка вызовов методов называется поток выполнения(execution thread). JVM ведет выполнение метода строго последовательно, от выражения к выражению. Описание класса
13 13 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
14 14 © Luxoft Training 2012 Класс – это файл, содержащий байт-код, определяющий данные и методы. Экземпляр – память, выделенная под структуры данных, декларированные в классе. Для того, чтобы JVM могла работать в классом (создавать экземпляры), она должна загрузить код класса. Описание класса
15 15 © Luxoft Training 2012 Для того, чтобы создать экземпляр класса, используется оператор new. При этом в динамической области памяти, называемой кучей (heap), выделяется память под данные экземпляра (объекта). Размер кучи можно задать при запуске JVM. Описание класса Оператор new возвращает ссылку на созданный экземпляр класса.
16 16 © Luxoft Training 2012 JVM имеет специальный загрузчик (bootstrap classloader), который умеет загружать байт-код класса из файловой системы, учитывая полное имя класса. Байт-код класса можно загрузить также из другого источника. В этом случае необходимо создать специфический загрузчик. JVM сама управляет загрузкой классов. Загрузка класса
17 17 © Luxoft Training 2012 Работа с объектами в Java всегда ведется через ссылку. Тип ссылки определяется типом созданного объекта. Тип ссылки может совпадать с классом создаваемого объекта, либо отличаться, что является полиморфизмом. Работа с объектами
18 18 © Luxoft Training 2012 Описание класса
19 19 © Luxoft Training 2012 Конструирование и инициализация Вызов Xyz x = new Xyz() выполняет: Связывание ссылки с ее типом. Выделение памяти под объект. Выполняется явная инициализация атрибутов. Вызывается конструктор. Объектная ссылка возвращается оператором new. Объектная ссылка присваивается переменной х. Внимание! Декларация только выделит память для хранения ссылки.
20 20 © Luxoft Training 2012 Конструирование и инициализация Выделение памяти под ссылку Выделение памяти под объект. MyDate my_birth; new MyDate(31,3,1988)
21 21 © Luxoft Training 2012 Конструирование и инициализация Инициализация атрибутов Вызов конструктора.
22 22 © Luxoft Training 2012 Конструирование и инициализация Присвоение объектной ссылки MyDate my_birth = new MyDate(22, 7, 1964)
23 23 © Luxoft Training 2012 Конструирование и инициализация Две переменные ссылаются на один объект int x = 7; int y = x; MyDate s = new MyDate(22, 7, 1964); MyDate t = s; При переприсваивании t она ссылается на новый объект: t = new MyDate(22, 7, 1964);
24 24 © Luxoft Training 2012 Конструирование и инициализация Java поддерживает следующие виды переменных, отличающихся в области памяти и временем жизни: Свойство объекта (member) Создается когда создается объект. Размещается в куче. Cтековая переменная (local variable) Определяется в методе. Переменная класса (class member) Создается когда класс загружается загрузчиком классов. Может существовать только одна копия.
25 25 © Luxoft Training 2012 Размер объектов (основы) Бит. 0 или 1 Байт. 8 бит Мегабайт (MB). ~1 миллион или 2^20 байт Гигабайт (GB). ~1 миллиард или 2^30 байт
26 26 © Luxoft Training 2012 Размер объектов (основы) Бит. 0 или 1 Байт. 8 бит Мегабайт (MB). ~1 миллион или 2^20 байт Гигабайт (GB). ~1 миллиард или 2^30 байт Старые компьютеры: Имеется ввиду 32-разрадный компьютер с указателем в 4 байта. Новые компьютеры: Имеется ввиду 64-разрадный компьютер с указателем в 8 байт. Можно использовать больше памяти Указатели используют больше места Некоторые JVM сжимают указатели до 4 х байт.
27 27 © Luxoft Training 2012 Размер объекта byte 1 int 4 float 4 char 2 short 2 long 8 double 8 int[] 4N + 24 char[][] ~2MN double[][] ~8MN char[] 2N + 24 double[] 8N + 24 int[][] ~4MN bytes type Примитивные типы Одномерные массивы Двумерные массивы Внимание! Примитивные типы более подробно рассмотрены в модуле 5.
28 28 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт.
29 29 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт. Пример 1. Объект Data использует 32 байта памяти. class Date { int day; int month; int year;... } Заголовок класса day month year Выравнивание 16 байт 4 байт 32 байт
30 30 © Luxoft Training 2012 Размер класса Заголовок класса. 16 байт. Ссылка. 8 байт. Выравнивание снизу. Каждый объект выравнивается до кратности 8 байт. Пример 2. Пустая строка длинны N использует ~2N байт памяти. class String { char[] vale; int offset; int count; int hash;... } Заголовок класса value offset count Выравнивание 16 байт 8 байт(ccылка на массив) 4 байт 2N + 64 байта hash 2N + 24 байта (массив) 4 байт
31 31 © Luxoft Training 2012 Размер класса Сколько памяти использует объект QuickUnion как функция от N? class QuickUnion { int[] id; int[] size; int count; … }
32 32 © Luxoft Training 2012 Размер класса (итог) Использование памяти для различных типов. Примитивные типы: 4 байта для int, 8 байт для double.... Объектная ссылка: 8 байт Массивы: 24 байта + память для каждого элемента. Объект: 16 байт + память для каждого члена класса Вложенный класс: 8 байт Выравнивание: кратно 8 байт.
33 33 © Luxoft Training 2012 Работа с экземпляром класса К свойству объекта можно обратиться с помощью оператора «. » Аналогично можно вызвать метод объекта. Если метод не принимает аргументы, нужно указать (), чтоб отличить метод от свойства. Аргументы заключаются в скобки ().
34 34 © Luxoft Training 2012 Работа с экземпляром класса
35 35 © Luxoft Training 2012 Упражнение 5 Разработка приложения из 2-х классов.
36 36 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
37 37 © Luxoft Training 2012 Понятие classpath Программа Java – это цепочка вызовов методов объектов некоторых классов, т.о. В процессе компиляции и работы программы требуется информация, где расположен байт-код необходимых классов. При запуске программы javac можно указать список путей файловой системы, где необходимо искать зависимые классы. Это спецификация путей поиска и называется classpath.
38 38 © Luxoft Training 2012 Понятие classpath В Windows список путей разделяется ;, в Unix : Если компилируемый java файл Person.java использует некоторые скомпилированные классы, находящиеся в c:\lib\classes, то необходимо указать компилятору данный путь через флаг -classpath javac -d bin -sourcepath src -classpath C:\lib\classes Person.java
39 39 © Luxoft Training 2012 Понятие classpath Аналогично можно задать classpath при запуске java приложения. Необходимые классы JVM будет искать в указанных путях. java -classpath C:\lib\classes Test Внимание! Для избегания компиляции каждого класса в отдельности, можно указать класс содержащий метод main.
40 40 © Luxoft Training 2012 Компиляция и выполнение
41 41 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
42 42 © Luxoft Training 2012 Пакеты Пакет – способ организации классов. Подобно тому, как два различных файла readme.txt могут располагаться в разных директориях, java-классы тоже могут размещаться в разных директориях. Пакеты позволяют избежать коллизий классов с одинаковым именем.
43 43 © Luxoft Training 2012 Пакеты Для того, чтобы разместить файл HelloWorld.java в пакет world, необходимо указать имя пакета в файле с помощью ключевого слова package. Декларация пакета должна идти в самом начале файла.
44 44 © Luxoft Training 2012 Пакеты Для того чтобы использовать класс, необходимо указать его полное имя:
45 45 © Luxoft Training 2012 Пакеты Существует способ упростить способ спецификации полного имени класса, импортировав пространство имен.
46 46 © Luxoft Training 2012 Импорт Импорт класса не имеет ничего общего с загрузкой класса и не влияет на скорость компиляции и выполнения Можно внести все классы данного пакета в пространство имен. import package.subpackage.*;
47 47 © Luxoft Training 2012 Модуль 4 Описание класса Понятие Java-приложения Работа с экземпляром класса Понятие classpath Пакеты Java-архивы Отладка приложений
48 48 © Luxoft Training 2012 Jar-архивы Cуществует способ организации классов в zip-aрхивы для более удобного распространения группы.class файлов. Архив имеет расширения.jar. Если классы в jar-файле, то необходимо указывать имя этого файла в classpath. java –classpath c:\libs\myjar.jar thepackage.MainClass
49 49 © Luxoft Training 2012 Jar-архивы Для того чтобы создать Jar-файл. jar.exe cf myjar.jar MainClass.class c – создать Jar-файл f – задает имя файла
50 50 © Luxoft Training 2012 Jar-архивы В Jar файле можно также вручную определить специальный файл манифеста, описывающий данный JAR файл. Манифест располагается в каталогк META-INF архива. Он создается по умолчанию инструментом jar.
51 51 © Luxoft Training 2012 Jar-архивы Например, манифест может указывать имя класса, содержащего main (): В таком случае JVM можно запустить так: Manifest-Version: 1.0 java -jar MyJar.jar Class-Path: ojdbc14. jar Created-By: Eclipse Main-Class: MyPackage.MyClass
52 52 © Luxoft Training 2012 Упражнение Работа с пакетами и jar-файлами
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.