Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемnsumedia.ru
1 Операторы (1) НазваниеСинтаксисПримечание Пустой;Этот символ превращает выражения присваиваний, инкрементов и вызовов методов в операторы Условный if ( ЛВ ) ОператорИлиБлок [ else ОператорИлиБлок ] ЛВ – выражение, возвращающее логическое значение Переключатель switch ( ЦВ ) { case KВ: [ [ ПоследовательностьОператоров] [ break ; ] ] [ … ] [ default : [ ПоследовательностьОператоров] [ break ; ] ] } 1. Не может быть двух или более case с одинаковым значением КВ. 2. Не может быть более одного default.
2 Операторы (2) Цикла ( while )while ( ЛВ ) ОператорИлиБлок Цикла ( do )do ОператорИлиБлок while ( ЛВ ) ; Цикла ( for )for ( [ Инициализация ] ; [ Проверка ] ; [ Модификация ] ) ОператорИлиБлок Цикла (for- each) for ( Тип Переменная : ОбъектРеализующийИнтерфейсIterable ) ОператорИлиБлок Тип переменной должен быть одинаков с типом, возвращаемы м реализацией интерфейса Iterable
3 Операторы (3) Прекращения break [ Метка ] ; Если Метка отсутствует, производится выход из ближайшего охватывающего оператора. Если Метка указана, производится выход из оператора (не обязательно цикла), помеченного ею. Продолжения continue [ Метка ] ; Если Метка отсутствует, производится переход к следующей итерации ближайшего охватывающего оператора цикла. Если Метка указана, производится переход к следующей итерации цикла, помеченного ею. Возврата return [ Выражение ] ;
4 Операторы (4) Возбуждение исключения throw ОбъектноеВыражение ; ОбъектноеВы ражение должно возвращать объект исключения. Перехват исключения try { ПоследовательностьОператоров } [ catch ( ОбъявлениеОбъектаИсключения ) { ПоследовательностьОператоров } ] [ … ] [ finally { ПоследовательностьОператоров }] Должен присутствовать хотя бы один блок catch или блок finally
5 Операторы (5) Синхрони- зации synchronized ( ОбъектИлиМассив ) { ПоследовательностьОператоров } ПоследовательностьОпера торов выполняется только тогда, когда обеспечена полная блокировка указанного ОбъектИлиМассив от доступа других потоков. Проверки утверждений assert Утверждение [ : КодВозврата ] Утверждение должно возвращать булево значение. Если оно равно false, то возбуждается исключение AssertionError, содержащее КодВозврата. Это исключение обычно не перехватывают.
6 Структура java-файла [ package packageName; ] [ import packageOrClassNameToImport; … ] [ accessSpecifier ] class ClassName[ typeParameters ] // класс [ extendsOrImplements ] { [ accessSpecifier ] dataType variableName [ = initialValue ] [, …];// поле... [ accessSpecifier ] [ typeParameters ] ClassName ( [ argumentsList ] ) [ throwsList ]{// конструктор operatorsList } … [ accessSpecifier ] [ typeParameters ] retValueDataType methodName ( [ argumentsList ] ) [ throwsList ] {//метод operatorsList } … } […]//еще классы и/или интерфейсы
7 Элементы объявления класса Пакеты (1) package packageName; Это предложение, если оно присутствует в программе, должно быть первым в тексте. Пакет – именованная совокупность классов, интерфейсов и, возможно, подпакетов. Полное имя класса (интерфейса), его метода или поля включает имя пакета: java.lang.String или java.lang.String.length() Пакеты определяют пространства имен со специальным доступом для входящих в них классов. Если метод или поле не помечены ни одним модификатором доступа (public, protected, private), то он(о) доступен(но) из любого метода любого класса данного пакета. Если в тексте отсутствует предложение package, то компилятор по умолчанию всегда создает один и тот же неименованный (unnamed) пакет. Поэтому, если пишется не примитивная программа, то нужно указывать пакеты классов для того, чтобы закрыть доступ из посторонних классов, входящих в любой неименованный пакет.
8 Элементы объявления класса Пакеты (2) В пакетах могут быть определены подпакеты, имена которых должны быть различны, однако на имена внутри них никаких ограничений не накладывается. Главное, чтобы уникальными были полные или составные имена. Рекомендуется разделять имена подпакетов точками и указывать их в порядке, обратном порядку следования имен в имени интернет-домена автора, например: ru.nstu.cs.vt.wtl.syntaxилиcom.knownhost.direct Это гарантирует уникальность имен классов, их полей и методов каждого автора, которая не может быть достигнута в случае unnamed. Система пакетов платформы Java имеет деревообразную структуру, которая хорошо накладывается на структуру каталогов файловой системы. Для сокращения длины имен часто употребляемых пакетов собственником платформы Java фирмой Sun (теперь Oracle) введены и поддерживаются: java, javax и sun.
9 Элементы объявления класса Импорт Если известно полное имя класса, экземпляр которого нужно использовать в программе, то создавать экземпляр можно так: tta = new ru.nstu.cs.vt.wtl.templateToAutomates(); Тот же результат можно получить, указав необходимость импорта класса templateToAutomates из пакета: import ru.nstu.cs.vt.wtl.templateToAutomates; … tta = new templateToAutomates(); Полное имя класса можно указывать и тогда, когда присутствует директива его импорта или импорта содержащего его пакета. Если в программе требуется использовать несколько классов (или все классы) из некоторого пакета, то можно указать: import ru.nstu.cs.vt.wtl.*; Директив import может быть сколько угодно много, но все они должны находиться в начале файла сразу после package.
10 Элементы объявления класса Заголовок класса (1) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] accessSpecifier – одно или несколько ключевых слов: public – общедоступный класс (при отсутствии этого спецификатора поля и методы класса доступны только из методов классов пакета, содержащего данный класс, например - unnamed); abstract – абстрактный класс, его экземпляры не могут быть созданы (этот класс может использоваться только в качестве базового при наследовании); final – у этого класса не может быть наследников (естественно, не имеет смысла объявление abstract final class); strictfp – все методы этого класса используют операции с плавающей точкой ограниченной точности (введено для обеспечения совместимости с JDK v1.0, при этом сильно замедляется интерпретация программы, по возможности этот спецификатор лучше не использовать).
11 Элементы объявления класса Заголовок класса (2) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции и при создании экземпляров класса (механизм «generics», напоминающий шаблонные классы в С++). Пример определения параметризованного класса: public class Box { … } Пример создания экземпляра параметризованного класса: Box boxForIntegers = new Box ; Box boxForStrings = new Box ;
12 Элементы объявления класса Заголовок класса (3) [ accessSpecifier ] class ClassName[ typeParameters ] [ extendsOrImplements ] extendsOrImplements – указание родительского (super-) класса (возможно – отсутствующее) и/или указание списка реализуемых классом интерфейсов (также возможно отсутствующее): public final class HelloWorld extends Object { …// это лишнее, любой класс наследует от класса Object // не допускается множественное наследование от классов } public abstract class TaskTemplate implements Comparable, Runnable { …// имена интерфейсов обычно (но не обязательно) заканчиваются на able // допускается множественная реализация интерфейсов } class MyClass extends HelloWorld implements java.io.Serializable { …// класс может одновременно наследовать от одного класса // и реализовывать один или несколько интерфейсов }
13 Элементы объявления класса Поле (1) [ accessSpecifier ] dataType variableName [= initialValue ] …; accessSpecifier – ни одного, одно или несколько ключевых слов (рекомендуется указывать их именно в этом порядке): [ private – поле, доступ к которому возможен только из методов этого класса; нет (package: пакетный доступ) – поле, доступ к которому возможен из методов класса-наследника, объявленного в этом же пакете; protected – поле, доступ к которому возможен из методов этого класса и его наследников, не обязательно прямых; public – общедоступное поле; ] static – это поле принадлежит классу в целом, а не экземпляру; final – значение этого поля не может быть изменено (поле является константой); transient – это поле не должно сериализоваться (сохраняться во внешней памяти в составе объекта); volatile – это поле предназначено для организации взаимодействия несинхронизируеых потоков и операции с ним не подлежат какой-бы то ни было оптимизации (используется крайне редко). Спецификаторы доступа относятся только к тому объявлению, в котором они указаны и не распространяются на последующие объявления.
14 Элементы объявления класса Поле (2) [ accessSpecifier ] dataType variableName [= initialValue ] [, … ]; dataType – имя примитивного или объектного типа данных, возможно – сопровождаемое модификатором массива: размерностью (размерностями) в квадратных скобках. Если часть [= initialValue ] отсутствует, то: -переменные типа boolean инициализируются значением false; -остальные численные переменные инициализируются значением 0 (нуль); -все объектные переменные инициализируются значением null. Поля и методы могут иметь одинаковые имена, поскольку обращение к методу отличается от обращения к полю по круглой скобке после имени.
15 Элементы объявления класса Поле (3) Примеры public int eventCount ; //значение по умолчанию 0 private boolean hideFlag = false;//и по умолчанию false protected char currentSymbol;//по умолчанию \u0000 private byte шагСетки = 1; static final float PACKAGE_VERSION = 2.01; short[ ] arrayOfArrays[ ];//эквивалентно short arrayOfArrays[ ][ ]; private transient float exchangeRate$; long resultNumber = -1; protected volatile int семафорПотока = 0; private double[ ] startCoordinates = { 1.0, 2.0, 3.0 }; public String className;//по умолчанию - null Не рекомендуется объявлять переменные так: int i,a,j,x,k=0,l,m,n;
16 Элементы объявления класса Конструктор (1) [ accessSpecifier ] [ typeParameters ] ClassName ( [ argumentsList ] ) [ throwsList ] { operatorsList } accessSpecifier – одно (или ни одного) из ключевых слов: public, protected, private. typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции конструктора (эти элементы Java-generics будут подробно рассматриваться позже). argumentsList – список типов и имен аргументов, используемых конструктором при создании экземпляра класса. throwsList – список исключений, бросаемых конструктором. Исключения – единственный способ не создавать объект при выполнении new. operatorsList – последовательность операторов, образующая тело конструктора. В классе может быть несколько конструкторов. Поскольку у них одно и то же имя, совпадающее с именем класса, то они должны отличаться типом и/или количеством параметров.
17 Элементы объявления класса Конструктор (2) Конструктор имеется в байт-коде любого класса. Если ни одного конструктора нет в исходном тексте, компилятор Java сам создаст конструктор по умолчанию (default constructor), который не делает ничего, кроме вызова конструктора суперкласса. Однако, если явно определен хотя бы один конструктор класса, то конструктор без аргументов неявно не создается, если нужно – его придется определять явно. Конструктор выполняется автоматически при создании экземпляра класса, сразу после распределения памяти и стандартной инициализации полей, но до начала использования создаваемого объекта. Конструктор не возвращает никакого значения. Конструктор не является методом, он даже не считается членом класса. Поэтому его нельзя наследовать или переопределить в подклассе.
18 Элементы объявления класса Конструктор (3) Тело конструктора может начинаться: с вызова одного из конструкторов суперкласса, для этого записывается слово super() с параметрами в скобках, если они нужны; если вызов super( … ) в начале конструктора явно не написан, то вначале все равно будет вызван конструктор суперкласса без аргументов, затем выполнена инициализация полей значениями, указанными при их объявлении, а уже потом то, что записано в теле конструктора; с вызова другого конструктора того же класса, для этого записывается слово this() с параметрами в скобках, если они нужны (такие вызовы не должны образовывать циклическую цепочку); внутри тела конструктора (после первой строки) вызовы конструктора суперкласса или другого конструктора этого же класса не допускаются (компилятор выдаст ошибку);
19 Элементы объявления класса Метод (1) [ accessSpecifier ] [ typeParameters ] retValueDataType methodName ( [ argumentsList ] ) [ throwsList ] { operatorsList } accessSpecifier – ни одного, одно или несколько ключевых слов: [ public, protected, private, ] [ abstract, final, ] static, synchronized, native, strictfp. typeParameters – список имен типов, заключенных в угловые скобки, информация о которых должна использоваться при компиляции метода (эти элементы Java-generics будут подробно рассматриваться позже).
20 Элементы объявления класса Метод (2) retValueDataType – тип значения, возвращаемого методом, это может быть: ключевое слово void, один из примитивных типов данных (boolean, char, byte, short, int, long, float, double), какой-либо ссылочный тип (имя класса), массив значений примитивного либо ссылочного типа. argumentsList – список типов и имен аргументов, обрабатываемых методом (начиная с Java5 метод может обрабатывать заранее неизвестное количество аргументов, специальный синтаксис таких списков будет рассмотрен позже). Если этот список пуст, то в отличие от C/C++ ключевое слово void не употребляется, пишется ( ). Аргументы всегда передаются по значению. Перед типом аргумента может быть записано ключевое слово final, означающее запрет изменения значения этого аргумента в теле метода. throwsList – список исключений, возбуждаемых (бросаемых) методом; исключения и их обработка будут рассматриваться отдельно. operatorsList – последовательность операторов, образующая тело метода.
21 Элементы объявления класса Метод (3) Методы не могут быть вложенными. Сигнатурой метода называется совокупность из: имени метода; количества, порядка следования, и типов аргументов. Имена аргументов и тип значения, возвращаемого методом, не входят в сигнатуру. Контрактом метода называется сигнатура совместно с типом возвращаемого значения. Класс может иметь несколько разных методов с одним и тем же именем (так называемая перегрузка или overloading методов). Сигнатуры всех методов любого класса должны быть попарно различны, т.е. перегруженные методы должны иметь разные списки типов аргументов. В языке Java все методы классов являются виртуальными функциями как следствие того, что любой объект представлен указателем.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.