Не очень понятно про оболочечные Данные,ячейки памяти могут наверно размер менять,какое это значение те же операции только ячейки больше,по скорости тоже самое |
Опубликован: 04.12.2009 | Доступ: свободный | Студентов: 8424 / 660 | Оценка: 4.30 / 3.87 | Длительность: 27:27:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Теги:
Лекция 3:
Примитивные типы данных и операторы для работы с ними
Краткие итоги
- Величины типа boolean принимают значения true или false.
- Логические операторы && -"И", || - "ИЛИ", ^ - "Исключающее ИЛИ", ! – "НЕ" применимы к величинам булевского типа. Логические выражения в Java вычисляются в соответствии с укороченным оцениванием.
- Операторы сравнения применимы к любым величинам a и b одного типа, а также к произвольным числовым величинам a и b, не обязательно имеющим один тип. В качестве оператора сравнения на равенство используется составной символ, состоящий из двух подряд идущих символов равенства "==".
- В Java имеются встроенные примитивные целые типы byte, short, int, long и символьный тип char, в некотором смысле также являющийся целочисленным. При этом только тип char беззнаковый, все остальные – знаковые.
- Для задания в тексте программы численных литерных констант типа long, выходящих за пределы диапазона чисел типа int, после написания числа следует ставить постфикс – букву L.
- Константами называются именованные ячейки памяти с неизменяемым содержимым. Объявление констант осуществляется в классе, при этом перед именем типа константы ставится комбинация зарезервированных слов public и final.
- В Java имеется два встроенных примитивных вещественных типа float и double (точнее, типы чисел в формате с плавающей точкой).
- Математические функции, а также константы "пи" ( Math.PI ) и "е" ( Math.E ) заданы в классе Math, находящемся в пакете java.lang.
- Целочисленные математические вычисления проводятся на аппаратном уровне только с величинами типа int или long. Для величин типа byte, short или char сначала происходит преобразование в тип int, после чего производится их подстановка в качестве операндов. Если же один из операндов имеет тип long, действия производятся с числами типа long, поскольку второй операнд автоматически преобразуется к этому типу.
- При работе с вещественными величинами в Java возможна работа на аппаратном уровне только с операндами типов float и double. Если один из операндов имеет тип double, а другой float, действия производятся с числами типа double, поскольку операнд типа float автоматически преобразуется к типу double.
- Если один из операндов целочисленный, а другой вещественный, сначала идет преобразование целочисленного операнда к такому же вещественному типу, а потом выполняется оператор.
- В Java каждому примитивному типу сопоставляется объектный тип, то есть класс. Такие классы называются оболочечными ( class wrappers ). В общем случае они имеют те же имена, что и примитивные типы, но начинающиеся не со строчной, а с заглавной буквы. Исключение составляют типы int и char, для которых имена оболочечных классов Integer и Character.
- Основное назначение оболочечных классов – создание объектов, являющихся оболочками над значениями примитивных типов. Процесс создание такого объекта ("коробки" - box) из значения примитивного типа называется упаковкой ( boxing ), а обратное преобразование из объекта в величину примитивного типа – распаковкой ( unboxing ). Упаковка и распаковка для числовых классов осуществляется автоматически.
- В оболочечных классах имеется ряд полезных методов и констант. Например, минимальное по модулю не равное нулю и максимальное значение числового типа можно получить с помощью констант, вызываемых через имя оболочечного типа: Integer.MIN_VALUE, Integer.MAX_VALUE, Float.MIN_VALUE , Float.MAX_VALUE, Double.MIN_VALUE , Double.MAX_VALUE. и т.п.
- В Java имеется 15 уровней приоритета операторов. В хорошо написанной программе ставятся скобки, повышающие читаемость программы, даже если они не нужны с точки зрения таблицы приоритетов.
- Иногда требуется использовать элементы, которые не являются ни числами, ни строками, но ведут себя как имена элементов и одновременно обладают порядковыми номерами. Например, названия месяцев или дней недели. В этих случаях используют перечисления.
Типичные ошибки:
- Очень часто встречается ошибка, когда вместо сравнения численных значений вида a==b программист пишет a=b.Чаще всего такая ошибка возникает в условных операторах: вместо if(a==b){...} пишут if(a=b){...}. В Java такая ошибка диагностируется на этапе компиляции для всех типов, кроме булевского. Для булевских a и b вызов if(a=b){...} приведет к тому, что величине a будет присвоено значение b, и результат присваивания возвратится равным этому значению. А диагностики ошибки, к сожалению, выдано не будет.
- Начинающие программисты, изучавшие ранее язык BASIC, пытаются использовать выражение вида a^b для возведения в степень, то есть для вычисления выражения . В Java для такой операции следует использовать выражение Math.pow(a,b).
- Программисты, изучавшие ранее C/C++, пытаются использовать логические выражения вида a&b или a|b для полной (не укороченной) оценки логических выражений. В Java нет полной (не укороченной) оценки логических выражений, а операторы & и | зарезервированы для арифметических побитовых операций "И" и "ИЛИ".
- При использовании оператора instanceof пытаются написать instanceOf.
- Путают класс java.lang.Math и пакет java.math.
- Очень часто встречается ошибка, когда забывают, что для величин типа byte, short или char сначала происходит преобразование в тип int, и только после этого производится их подстановка в качестве операндов. Поэтому, в частности, побитовые операции с величинами этих типов дают те же результаты, что и при работе с величинами типа int.
- Не ставятся скобки, группирующие операнды в длинных выражениях, где стороннему программисту неочевидна последовательность выполнения операндов.
- Элементы перечисления пытаются задавать как строковые, или же пытаются предварительно задать числовые переменные с именами элементов перечисления.
Задания
- На основе проекта с графическим пользовательским интерфейсом создать новый проект. В нем для каждого из целочисленных и вещественных типов задать переменные и кнопки с соответствующими надписями. При нажатии на кнопки должны показываться диалоговые панели с сообщением об имени и значении соответствующей переменной.
- На основе проекта с графическим пользовательским интерфейсом создать новый проект. В нем сделать два пункта ввода, метку и кнопки "Сложить", "Умножить", "Разделить", "sin". По нажатию на кнопки "Сложить", "Умножить", "Разделить" в метку должен выводиться результат. Действия проводить с величинами типа double. По нажатию на кнопку "sin" в метку должен выводиться синус значения, показывавшегося до того в метке.
- На основе проекта с графическим пользовательским интерфейсом создать новый проект. В нем сделать пункт ввода и радиогруппу с выбором варианта для каждого из целочисленных типов, а также кнопку JButton с надписью "Преобразовать в число". При выборе соответствующего варианта в пункте ввода должно возникать случайным образом генерируемое число, лежащее в пределах допустимых значений для этого типа. При нажатии на кнопку содержимое пункта ввода должно быть преобразовано в число соответствующего типа, и это значение должно быть показано с помощью диалоговой панели с сообщением.
Работа с выбором вариантов осуществляется следующим образом:
-
if(jRadioButton1.isSelected() ) оператор1;
-
if(jRadioButton2.isSelected()) оператор2;
-
if(jRadioButton3.isSelected()) оператор3;
-
- Создать приложение Java с графическим пользовательским интерфейсом. В нем должно быть перечисление Spring ("весна"), в котором расположены весенние месяцы, и кнопки "m2=m1" и "Вывести значение m2". Задать две переменные типа Spring - m1 и m2. Переменную m1 инициализированной, со значением April, переменную m2 - не инициализированной. При нажатии на кнопку " m2=m1" переменной m2 должно присваиваться значение m1. При нажатии на кнопку "Вывести значение m2" должно выводиться значение переменной m2.