1 Java 2. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ. 2 Примитивные типы ТипРазмер (бит) По умолчанию МинМаксТип упаковки boolean-false--Boolean char16'\u0000'Unicode 0Unicode.

Презентация:



Advertisements
Похожие презентации
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Advertisements

Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
b5_java_s4
Лекция 2 Введение в язык Си.
©ρŧą Базовые конструкции языка.
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Тип, имя и значение переменной.. Переменные. В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют.
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Тип, имя и значение переменной. В объектно-ориентированных языках программирования переменные играют такую же важную роль, как и в процедурных языках.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Работу выполнили ученицы 9 «Б» класса Гордеева Татьяна и Шебаршова Рита.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx в IDE Code Composer Studio Часть II. Язык программирования С. Основные понятия.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Описание переменных в языке Visual Basic Презентацию подготовила учитель информатики МБОУ СОШ 3 г. Светлого Нетесова Н. А.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Транксрипт:

1 Java 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 IEEE IEEE 754 широко распространённый стандарт формата представления чисел с плавающей точкой, используемый как в программных реализациях арифметических действий, так и во многих аппаратных (CPU и FPU) реализациях. Стандарт описывает: Определения форматов хранения мантиссы, показателя и знака, форматы положительного и отрицательного нуля, плюс и минус бесконечностей, а также определение «не числа» (NaN). Методы, которые используются для преобразования числа в процессе математических операций. Обработку исключительных ситуаций таких, как деление на нуль, переполнение, потеря значимости, работу с денормализованными числами и т.д. Операции: арифметические и другие операций по арифметике форматов.

4 «Оболочки» примитивных типов Если вы хотите создать не примитивный объект в куче для представления примитивного типа, вы используете ассоциированную оболочку. Например: char c = 'x'; Character ch = new Character(c); Или : Character ch = new Character('x'); Механизм автоматической упаковки Java SE автоматически преобразует примитивный тип в объектную «обертку» Character ch = x; char c = ch;

5 Значения по умолчанию Переменная базового типа, объявленная как член класса, получает нулевое значение по умолчанию, соответствующее своему типу Переменная, объявленная как локальная переменная в методе, перед использованием обязательно должна быть проинициализирована, так как она не инициализируется по умолчанию нулем. Область действия и время локальной такой переменной ограничена блоком { }, в котором она объявлена. example01: значение по умолчанию : InitValue.java

6 Литералы Литералы позволяют задать в программе значения для числовых, символьных и строковых выражений, а также null-литералов. Всего в Java определены следующие виды литералов: булевский (boolean); символьный (character); целочисленный (integer); дробный (floating-point); строковый (string); null-литерал (null-literal).

7 Литералы типа boolean Единственные правомерные литералы типа boolean - true и false. Например: boolean isBig = true; boolean isLittle = false;

8 Литералы типа char Символ в одинарных кавычках. Например: char c = 'w'; В формате Unicode первый байт содержит код управляющего символа или национального алфавита, второй байт соответствует стандартному ASCII коду. Любой символ можно представить в виде '\ucode', где code представляет двухбайтовый шестнадцатеричный код символа. Например: char c1 = '\u4567'; Начиная с J2SE 5.0 используется формат Unicode 4.0. Поддержку четырехбайтным символам обеспечивает наличие специальных методов в классе Character.

9 Специальные символы в Java '\n' – новая строка; '\r' – возврат каретки на начало строки; '\t' – табуляция; '\b' – возврат каретки на одну позицию назад; '\f' – новая страница; '\'' – одинарная кавычка; '\"' – двойная кавычка; '\\' – обратная наклонная линия; '\uxxxx' – шестнадцатеричный символ Unicode; '\ddd' – восьмеричный символ и др.

10 Целочисленные литералы Целочисленные литералы могут быть выражены в десятичной, восьмеричной (префикс литерала - 0) и шестнадцатеричной (префикс литерала - 0х или 0Х) форме. В последнем случае и верхний и нижний регистр может использоваться. Например, 28 может быть выражено шестью способами: х1с 0х1С 0Х1с 0Х1С По умолчанию целочисленный литерал занимает 32 бита. Чтобы указать 64-хбитовый (long) литерал, нужно добавить суффикс L к литеральному выражению.

11 Литералы с плавающей точкой Литерал с плавающей точкой выражает число с плавающей точкой. Для того, чтобы считаться литералом с плавающей точкой, численное выражение должно удовлетворять одной из следующих опций: десятичная точка: Буква E или e, указывающая на научную нотацию: 4.23E+21 Суффикс F или f, указывающий на литерал типа float: 1.828f Суффикс D или d, указывающий на литерал типа double: 1234d Литерал с плавающей точкой без суффикса F или D по умолчанию является литералом типа double.

12 Строковые литералы Строковый литерал - это последовательность символов, заключённых в двойные кавычки. String s = "Characters in strings are 16-bit Unicode." При инициализации строки всегда создается объект класса String – это не массив символов и не строка. Строки, заключенные в двойные апострофы, считаются литералами и размещаются в пуле литералов, но в то же время такие строки представляют собой объекты.

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 Документирование кода Блочный комментарий /* */ однострочный комментарий //, комментарий /** */, с дескрипторами – задает сведения об – задает номер версии – задает имя класса – описывает параметры, передаваемые – описывает тип, возвращаемый – указывает, что метод – с какой версии метод (член класса) – описывает исключение, генерируемое – что следует посмотреть дополнительно. Из java-файла, содержащего такие комментарии, утилита javadoc.exe может извлекать информацию для документирования классов и сохранения ее в виде HTML-документа. example01 : документирование кода User.java

15 Операторы Операторы Java практически совпадают с операторами C++ и имеют такой же приоритет. Поскольку указатели в Java отсутствуют, то отсутствуют операторы *, &, ->, delete для работы с ними. Операторы работают с базовыми типами и объектами классов- оболочек над базовыми типами. Операторы + и += производят также действия по конкатенации с операндами типа String. Логические операторы ==, != и оператор присваивания = применимы к операндам любого объектного и базового типов, а также литералам. Применение оператора присваивания к объектным типам часто приводит к ошибке несовместимости типов.

16 Операции над числами: +, –, *, %, /, ++, –– а также битовые операции &, |, ^, ~ и операции сдвига аналогичны операциям C++. Деление на ноль целочисленного типа вызывает исключительную ситуацию, переполнение не контролируется. Операции над числами с плавающей запятой практически те же, что и в других алгоритмических языках, но по стандарту IEEE 754 введены понятие бесконечности +Infinity и –Infinity и значение NaN (Not a Number), которое может быть получено, например, при извлечении квадратного корня из отрицательного числа.

17 Арифметические операторы +Сложение/Деление +=Сложение (с присваиванием) /=Деление (с присваиванием) -Вычитание%Остаток от деления -=Вычитание (с присваиванием) %=%= Остаток от деления (с присваиванием) *Умножение++Инкремент *=Умножение (с присваиванием) --Декремент

18 Битовые операторы над целочисленными типами |Или>>Сдвиг вправо |=Или (присв)>>=Сдвиг вправо (присв) &И>>>Сдвиг вправо с появлением нулей &=И (присв)>>>=Сдвиг вправо с появлением нулей (присв) ^Искл. Или

19 Операторы отношения Больше =Больше или равно ==Равно!=Не равно

20 Логические операторы ||Или&&И !Унарное отрицание оператор определения принадлежности типу instanceof тернарный оператор ?: (if-then-else) boolean_значение ? первое : второе example01 : битовые операторы и %: DemoOperators.java

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 Классы-оболочки example03 : преобразование типов данных: CastTypes.java

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 Автоупаковка/распаковка В версии 5.0 введен процесс автоматической инкапсуляции данных базовых типов в соответствующие объекты оболочки и обратно (автоупаковка). Автораспаковка – процесс извлечения из объекта-оболочки значения базового типа. Допускается участие объектов в арифметических операциях, но упаковка/распаковка является ресурсоемким процессом Integer j = 71; // создание объекта+упаковка Integer k = ++j; // распаковка+операция+упаковка

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 Операторы прерывания: 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 Массивы Массив представляет собой объект, где имя массива является объектной ссылкой. Элементами массива могут быть значения базового типа или объекты. Индексирование элементов начинается с нуля. Все массивы в языке Java динамические, поэтому для создания массива требуется выделение памяти с помощью оператора new или прямой инициализации. Значения элементов неинициализированного массива, для которого выделена память, устанавливаются в значения по умолчанию для массива базового типа или null для массива объектных ссылок. example04: массивы и ссылки: ArrRef.java

28 Массив базовых типов Number n1 = 1; Number n2 = 7.1; Number array[] = {71, 7.1, 7L}; Переменная базового типа всегда передается в метод по значению, а переменная класса-оболочки – по ссылке.

29 Многомерный массив Массив представляет собой безопасный объект, поскольку все элементы инициализируются и доступ к элементам невозможен за пределами границ. Размерность массива хранится в его свойстве length. int arr[ ][ ] = { { 1 }, { 2, 3 }, { 4, 5, 6 }, { 7, 8, 9, 0 } }; arr[2][0] = ?

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 Произведение матриц example05: класс хранения матрицы : Matrix.java

32 Класс Маth Класс java.lang.Math содержит только статические методы для физических и технических расчетов, а также константы E и PI. example06: использование методов класса Math: MathMethods.java

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 Управление приложением Все приложения автоматически импортируют пакет java.lang. Этот пакет содержит класс java.lang.System, предназначенный для выполнения ряда системных действий по обслуживанию работающего приложения. Поля класса: System.in System.out System.err

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 Управление потоком выполнения Класс java.lang.Runtime. Объект класса Runtime создается при помощи вызова статического метода getRuntime(), возвращающего объект Runtime, который ассоциирован с данным приложением. Остановить виртуальную машину можно с помощью методов exit(int status) и halt(int status). Существует несколько возможностей по очистке памяти: gc(), runFinalization() и др. Определить общий объем памяти и объем свободной памяти можно с помощью методов totalMemory() и freeMemory(). example07 : информация о состоянии оперативной памяти: RuntimeDemo.java