Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГерасим Тимушкин
1 1 Java 2. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ
2 2 Примитивные типы ТипРазмер (бит) По умолчанию МинМаксТип упаковки boolean-false--Boolean char16'\u0000'Unicode 0Unicode Character byte Byte short Short int Integer long Long float320.0IEEE754 Float double640.0IEEE754 Double void---Void
3 3 IEEE IEEE 754 широко распространённый стандарт формата представления чисел с плавающей точкой, используемый как в программных реализациях арифметических действий, так и во многих аппаратных (CPU и FPU) реализациях. Стандарт описывает: Определения форматов хранения мантиссы, показателя и знака, форматы положительного и отрицательного нуля, плюс и минус бесконечностей, а также определение «не числа» (NaN). Методы, которые используются для преобразования числа в процессе математических операций. Обработку исключительных ситуаций таких, как деление на нуль, переполнение, потеря значимости, работу с денормализованными числами и т.д. Операции: арифметические и другие операций по арифметике форматов.
4 4 «Оболочки» примитивных типов Если вы хотите создать не примитивный объект в куче для представления примитивного типа, вы используете ассоциированную оболочку. Например: char c = 'x'; Character ch = new Character(c); Или : Character ch = new Character('x'); Механизм автоматической упаковки Java SE автоматически преобразует примитивный тип в объектную «обертку» Character ch = x; char c = ch;
5 5 Значения по умолчанию Переменная базового типа, объявленная как член класса, получает нулевое значение по умолчанию, соответствующее своему типу Переменная, объявленная как локальная переменная в методе, перед использованием обязательно должна быть проинициализирована, так как она не инициализируется по умолчанию нулем. Область действия и время локальной такой переменной ограничена блоком { }, в котором она объявлена. example01: значение по умолчанию : InitValue.java
6 6 Литералы Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. Всего в Java определены следующие виды литералов: булевский (boolean); символьный (character); целочисленный (integer); дробный (floating-point); строковый (string); null-литерал (null-literal).
7 7 Литералы типа boolean Единственные правомерные литералы типа boolean - true и false. Например: boolean isBig = true; boolean isLittle = false;
8 8 Литералы типа char Символ в одинарных кавычках. Например: char c = 'w'; В формате Unicode первый байт содержит код управляющего символа или национального алфавита, второй байт соответствует стандартному ASCII коду. Любой символ можно представить в виде '\ucode', где code представляет двухбайтовый шестнадцатеричный код символа. Например: char c1 = '\u4567'; Начиная с J2SE 5.0 используется формат Unicode 4.0. Поддержку четырехбайтным символам обеспечивает наличие специальных методов в классе Character.
9 9 Специальные символы в Java '\n' – новая строка; '\r' – возврат каретки на начало строки; '\t' – табуляция; '\b' – возврат каретки на одну позицию назад; '\f' – новая страница; '\'' – одинарная кавычка; '\"' – двойная кавычка; '\\' – обратная наклонная линия; '\uxxxx' – шестнадцатеричный символ Unicode; '\ddd' – восьмеричный символ и др.
10 10 Целочисленные литералы Целочисленные литералы могут быть выражены в десятичной, восьмеричной (префикс литерала - 0) и шестнадцатеричной (префикс литерала - 0х или 0Х) форме. В последнем случае и верхний и нижний регистр может использоваться. Например, 28 может быть выражено шестью способами: х1с 0х1С 0Х1с 0Х1С По умолчанию целочисленный литерал занимает 32 бита. Чтобы указать 64-хбитовый (long) литерал, нужно добавить суффикс L к литеральному выражению.
11 11 Литералы с плавающей точкой Литерал с плавающей точкой выражает число с плавающей точкой. Для того, чтобы считаться литералом с плавающей точкой, численное выражение должно удовлетворять одной из следующих опций: десятичная точка: Буква E или e, указывающая на научную нотацию: 4.23E+21 Суффикс F или f, указывающий на литерал типа float: 1.828f Суффикс D или d, указывающий на литерал типа double: 1234d Литерал с плавающей точкой без суффикса F или D по умолчанию является литералом типа double.
12 12 Строковые литералы Строковый литерал - это последовательность символов, заключённых в двойные кавычки. String s = "Characters in strings are 16-bit Unicode." При инициализации строки всегда создается объект класса String – это не массив символов и не строка. Строки, заключенные в двойные апострофы, считаются литералами и размещаются в пуле литералов, но в то же время такие строки представляют собой объекты.
13 13 Преобразования типа В арифметических выражениях автоматически выполняются расширяющие преобразования типа byte short int long float double. Java автоматически расширяет тип каждого byte или short операнда до int в выражениях. Для сужающих преобразований необходимо производить явное преобразование вида (тип)значение. Например: byte b = (byte)128; // преобразование int в byte В операциях присваивания литералов при инициализации преобразования выполняются автоматически. short s = 9; short s1 = 9 + s ; //ошибка компиляции, //потому что тип выражения 9 + s есть int, а не short. example01 : типы данных, литералы и операции над ними TypeByte.java
14 14 Документирование кода Блочный комментарий /* */ однострочный комментарий //, комментарий /** */, с дескрипторами – задает сведения об – задает номер версии – задает имя класса – описывает параметры, передаваемые – описывает тип, возвращаемый – указывает, что метод – с какой версии метод (член класса) – описывает исключение, генерируемое – что следует посмотреть дополнительно. Из java-файла, содержащего такие комментарии, утилита javadoc.exe может извлекать информацию для документирования классов и сохранения ее в виде HTML-документа. example01 : документирование кода User.java
15 15 Операторы Операторы Java практически совпадают с операторами C++ и имеют такой же приоритет. Поскольку указатели в Java отсутствуют, то отсутствуют операторы *, &, ->, delete для работы с ними. Операторы работают с базовыми типами и объектами классов- оболочек над базовыми типами. Операторы + и += производят также действия по конкатенации с операндами типа String. Логические операторы ==, != и оператор присваивания = применимы к операндам любого объектного и базового типов, а также литералам. Применение оператора присваивания к объектным типам часто приводит к ошибке несовместимости типов.
16 16 Операции над числами: +, –, *, %, /, ++, –– а также битовые операции &, |, ^, ~ и операции сдвига аналогичны операциям C++. Деление на ноль целочисленного типа вызывает исключительную ситуацию, переполнение не контролируется. Операции над числами с плавающей запятой практически те же, что и в других алгоритмических языках, но по стандарту IEEE 754 введены понятие бесконечности +Infinity и –Infinity и значение NaN (Not a Number), которое может быть получено, например, при извлечении квадратного корня из отрицательного числа.
17 17 Арифметические операторы +Сложение/Деление +=Сложение (с присваиванием) /=Деление (с присваиванием) -Вычитание%Остаток от деления -=Вычитание (с присваиванием) %=%= Остаток от деления (с присваиванием) *Умножение++Инкремент *=Умножение (с присваиванием) --Декремент
18 18 Битовые операторы над целочисленными типами |Или>>Сдвиг вправо |=Или (присв)>>=Сдвиг вправо (присв) &И>>>Сдвиг вправо с появлением нулей &=И (присв)>>>=Сдвиг вправо с появлением нулей (присв) ^Искл. Или
19 19 Операторы отношения Больше =Больше или равно ==Равно!=Не равно
20 20 Логические операторы ||Или&&И !Унарное отрицание оператор определения принадлежности типу instanceof тернарный оператор ?: (if-then-else) boolean_значение ? первое : второе example01 : битовые операторы и %: DemoOperators.java
21 21 instanceof class Course extends Object {} class BaseCourse extends Course {} class FreeCourse extends BaseCourse {} class OptionalCourse extends Course {} void doLogic(Course c) { if (c instanceof BaseCourse) { /*реализация для BaseCourse и FreeCourse*/ } else if (c instanceof OptionalCourse) { /*реализация для OptionalCourse*/ } else { /*реализация для Course*/ } }
22 22 Классы-оболочки example03 : преобразование типов данных: CastTypes.java
23 23 Преобразование строки в число и обратно Строка в число преобразуется функцией: Byte.valueOf(str); Integer.valueOf(str); Float.valueOf(str); Double.valueOf(str); Long.valueOf(str); Short.valueOf(str); Или через конструктор: new Byte(str); new Integer(str); new Float(str); new Double(str); … Перевод числа в строку производится через переопределенный метод toString();
24 24 Автоупаковка/распаковка В версии 5.0 введен процесс автоматической инкапсуляции данных базовых типов в соответствующие объекты оболочки и обратно (автоупаковка). Автораспаковка – процесс извлечения из объекта-оболочки значения базового типа. Допускается участие объектов в арифметических операциях, но упаковка/распаковка является ресурсоемким процессом Integer j = 71; // создание объекта+упаковка Integer k = ++j; // распаковка+операция+упаковка
25 25 Операторы управления if (boolexp) { /*операторы*/} else { /*операторы*/ } while (boolexp) { /*операторы*/ } do { /*операторы*/ } while (boolexp); for(exp1; boolexp; exp3){ /*операторы*/ } for(ТипДанных имя : имяОбъекта){ /*операторы*/ } int[ ] array = {1, 3, 5}; for(int i : array){ System.out.printf("%d ", i); } switch(exp) { case exp1:{/*операторы*/} break; case expN:{/*операторы*/} break; default: {/*операторы*/} }
26 26 Операторы прерывания: break, continue int j = -3; OUT: while(true) { for(;;) while (j < 10) { if (j == 0) break OUT; else { j++; System.out.printf("%d ", j); } System.out.print("end");
27 27 Массивы Массив представляет собой объект, где имя массива является объектной ссылкой. Элементами массива могут быть значения базового типа или объекты. Индексирование элементов начинается с нуля. Все массивы в языке Java динамические, поэтому для создания массива требуется выделение памяти с помощью оператора new или прямой инициализации. Значения элементов неинициализированного массива, для которого выделена память, устанавливаются в значения по умолчанию для массива базового типа или null для массива объектных ссылок. example04: массивы и ссылки: ArrRef.java
28 28 Массив базовых типов Number n1 = 1; Number n2 = 7.1; Number array[] = {71, 7.1, 7L}; Переменная базового типа всегда передается в метод по значению, а переменная класса-оболочки – по ссылке.
29 29 Многомерный массив Массив представляет собой безопасный объект, поскольку все элементы инициализируются и доступ к элементам невозможен за пределами границ. Размерность массива хранится в его свойстве length. int arr[ ][ ] = { { 1 }, { 2, 3 }, { 4, 5, 6 }, { 7, 8, 9, 0 } }; arr[2][0] = ?
30 30 Копирование массивов У класса System есть метод, arrayCopy который копирует данные из одного массива в другой public static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) Object src - массив откуда копировать Object dest - массив куда копировать int srcPos - исходная позиция в исходном массиве int destPos - исходная позиция в массиве адресата int length - число элементов для копирования
31 31 Произведение матриц example05: класс хранения матрицы : Matrix.java
32 32 Класс Маth Класс java.lang.Math содержит только статические методы для физических и технических расчетов, а также константы E и PI. example06: использование методов класса Math: MathMethods.java
33 33 Статический импорт Константы и статические методы класса можно использовать без указания принадлежности к классу import static java.lang.Math.*; Доступ только к одной константе класса или интерфейса System.out.println(2 * PI * radius); import static java.lang.Math.E; import static java.lang.Math.cos;// для одного метода
34 34 Управление приложением Все приложения автоматически импортируют пакет java.lang. Этот пакет содержит класс java.lang.System, предназначенный для выполнения ряда системных действий по обслуживанию работающего приложения. Поля класса: System.in System.out System.err
35 35 Методы java.lang.System void exit(int status) прекращение работы виртуальной java машины (JVM); void setIn(InputStream in) void setOut(PrintStream out) void setErr(PrintStream err) переназначение стандартных потоков ввода/вывода; Properties getProperties() получение всех свойств; String getProperty(String key) получение значения конкретного свойства; void setSecurityManager(SecurityManager s), SecurityManager setSecurityManager() получение и установка системы безопасности; void load(String filename) запуск программы из ОС; void loadLibrary(String libname) загрузка библиотеки; void arrayCopy(параметры) копирование части одного массива вдругой.
36 36 Управление потоком выполнения Класс java.lang.Runtime. Объект класса Runtime создается при помощи вызова статического метода getRuntime(), возвращающего объект Runtime, который ассоциирован с данным приложением. Остановить виртуальную машину можно с помощью методов exit(int status) и halt(int status). Существует несколько возможностей по очистке памяти: gc(), runFinalization() и др. Определить общий объем памяти и объем свободной памяти можно с помощью методов totalMemory() и freeMemory(). example07 : информация о состоянии оперативной памяти: RuntimeDemo.java
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.