Интернет магазин китайских планшетных компьютеров |
||
Компьютеры - Java - Основные идеи24 апреля 2011Оглавление: 1. Java 2. Основные особенности языка 3. История версий 4. Классификация платформ Java 5. Java и Microsoft 6. Применения платформы Java 7. Пример программы 8. Основные идеи 9. Библиотеки классов Примитивные типыВ языке Java только 8 примитивных типов: boolean, byte, char, short, int, long, float, double. Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации: когда складывался стандарт, уже существовал Unicode-16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причем в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения , и «не число». Для типа double они обозначаются
Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java и одной из причин её успеха. Тем не менее одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово Преобразования при математических операцияхВ языке Java действуют следующие правила:
Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++. Объектные переменные, объекты, ссылки и указателиВ языке Java имеются только динамически создаваемые объекты. Причем переменные объектного типа и объекты в Java совершенно разные сущности. Переменные объектного типа являются ссылками, то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных. Так, в Java нельзя писать: double a; Foo b; а нужно: double a = new double; Foo b = new Foo; При присваиваниях, передаче в подпрограммы и сравнениях объектные переменные ведут себя как указатели, то есть присваиваются, копируются и сравниваются адреса объектов. А при доступе с помощью объектной переменной к полям данных или методам объекта не требуется никаких специальных операций разыменовывания этот доступ осуществляется так, как если бы объектная переменная была самим объектом. Объектными являются переменные любого типа, кроме примитивного. Явных указателей в Java нет. В отличие от указателей C, C++ и других языков программирования, ссылки в Java в высокой степени безопасны благодаря жёстким ограничениям на их использование, в частности:
Благодаря таким специально введенным ограничениям в Java невозможно прямое манипулирование памятью на уровне физических адресов. Если нужен указатель на примитивный тип, используются классы-обёртки примитивных типов: Дублирование ссылок и клонированиеИз-за того, что объектные переменные являются ссылочными, при присваивании не происходит копирования объекта. Так, если написать Foo foo, bar; … bar = foo; то произойдет копирование адреса из переменной Метод Сборка мусораВ языке Java невозможно явное удаление объекта из памяти вместо этого реализована сборка мусора. Традиционным приёмом, дающим сборщику мусора «намёк» на освобождение памяти, является присваивание переменной пустого значения Классы и функцииJava не является процедурным языком: любая функция может существовать только внутри класса. Это подчёркивает терминология языка Java, где нет понятий «функция» или «функция-член», а только метод. В методы превратились и стандартные функции. Например, в Java нет функции Статические методы и поляВ Java используются статические методы, которые задаются при помощи ключевого слова Например, математические функции, реализованные в классе double x = Math.sin; вместо Math m = new Math; double x = m.sin; Поскольку статические методы существуют независимо от объектов, они не имеют доступа к обычным полям и методам данного класса. В частности, при реализации статического метода недопустимо использовать идентификатор ЗавершённостьКлючевое слово АбстрактностьВ Java методы, не объявленные явно как Абстрактным методом в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не тело. Абстрактный метод определяется в классах-наследниках. В C++ то же самое называется чисто виртуальной функцией. Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя. ИнтерфейсыВысшей степенью абстрактности в Java является интерфейс. Все методы интерфейса абстрактны: описатель В Java класс не может наследовать более одного класса, зато может реализовывать сколько угодно интерфейсов. Множественное наследование интерфейсов не запрещено, то есть один интерфейс может наследоваться от нескольких. Интерфейсы можно передавать методам как параметры, но нельзя создавать объекты их типов. Маркерные интерфейсыВ Java есть некоторые интерфейсы, которые не содержат методов для реализации, а специальным образом обрабатываются JVM. Это интерфейсы:
Шаблоны в JavaНачиная с версии Java 5 в языке появился механизм обобщённого программирования шаблоны, внешне близкие к шаблонам C++. С помощью специального синтаксиса в описании классов и методов можно указать параметры-типы, которые внутри описания могут использоваться в качестве типов полей, параметров и возвращаемых значений методов. // Объявление обобщённого класса class GenericClass<E> { E getFirst { ... } void add { ... } } // Использование обобщённого класса в коде GenericClass<String> var = new GenericClass<String>; var.add; String p = var.getFirst; Допускается обобщённое объявление классов, интерфейсов и методов. Кроме того, синтаксис поддерживает ограниченные объявления типов-параметров: указание в объявлении конструкции вида В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет. Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java. Проверка принадлежности к классуВ Java можно явно проверить, к какому классу принадлежит объект. Выражение Далее, функция Кроме того, объект типа Однако прямое сравнение классов не всегда является оптимальным средством проверки на принадлежность к классу. Зачастую вместо него используют функцию В паре с упомянутыми функциями объекта типа Просмотров: 11223
|