Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Идентификаторы, ключевые слова, операторы.Стр 1 из 3Следующая ⇒
Структура Java программы. Пример программы: import java util.*; public class HelloDate { public static void main(String[ ] args) { System.out.print(“Привет, сегодня- “); System out println(new Date()); } } В начале каждого файла с программой должны находиться директивы import, в которых перечисляются все дополнительные классы, необходимые вашей программе. Существует целая библиотека классов, присоединяющаяся автоматически к каждому файлу Java: java.lang. Так как пакет java.lang. автоматически включается в каждую программу на Java, эти классы всегда доступны для использования. Имя класса совпадает с именем файла. Когда вы создаете отдельную программу, подобную этой, один из классов, описанных в файле, должен иметь совпадающее с ним название. (Если это условие нарушено, компилятор сообщит об ошибке.) Одноименный класс должен содержать метод с именем main() со следующей сигнатурой и возвращаемым типом: public static void main(String[] args) { Ключевое слово public обозначает, что метод доступен для внешнего мира. Аргументом метода main() является массив строк. В данной программе массив args не используется, но компилятор Java настаивает на его присутствии, так как массив содержит параметры, переданные программе в командной строке. Строка, в которой распечатывается число, довольно интересна: System.out.println(new Date()): Аргумент представляет собой объект Date, который создается лишь затем, чтобы передать свое значение (автоматически преобразуемое в String) методу println(). Как только команда будет выполнена, объект Date становится ненужным, сборщик мусора заметит это, и в конце концов сам удалит его. Нам не нужно беспокоиться о его удалении самим. Идентификаторы, ключевые слова, операторы. Идентификаторы Имена переменных, классов, объектов, интерфейсов, методов называются идентификаторами. Названия идентификаторов выбираются по следующим правилам: • они должны начинаться с буквы или символа подчеркивания; • они могут содержать латинские буквы, символы подчеркивания или цифры без пробелов; • названия идентификаторов не должны совпадать с ключевыми словами Ключевые слова: 1) Ключевое слово static, делает элемент класса статическим. Когда вы объявляете что-либо как static, это означает, что данные или метод не привязаны к определенному экземпляру этого класса. Поэтому, даже если вы никогда не создавали объектов класса, вы можете вызвать статический метод или получить доступ к статическим данным. С обычным объектом вам необходимо сначала создать его и использовать для вызова метода или доступа к информации, так как нестатические данные и методы должны точно знать объект, с которым работают. 2) Почти во всех процедурных языках поддерживаются стандартные команды управления, и во многих языках они совпадают. В Java к их числу относятся ключевые слова if-else, while, do-while, for, а также команда выбора switch. 3) В теле любого из циклов вы можете управлять потоком программы, используя специальные ключевые слова break и continue. Команда break завершает цикл, при этом оставшиеся операторы цикла не выполняются. Команда continue останавливает выполнение текущей итерации цикла и переходит к началу цикла, чтобы начать выполнение нового шага. 4) Ключевые слова package и import позволяют разработчику библиотеки организовать логическое деление глобального пространства имен, предотвращающее конфликты имен. 5) Ключевые слова volatile и synchronized благодаря им задачи не мешают работе друг друга. Операторы Оператор получает один или несколько аргументов и создает на их основе новое значение. Форма передачи аргументов несколько иная, чем при вызове метода, но эффект тот же самый. Сложение (+), вычитание (-), умножение (*), деление (/) и присвоение (=) работают одинаково фактически во всех языках программирования. Все операторы работают с операндами и выдают какой-то результат. Вдобавок некоторые операторы могут изменить значение операнда. Почти все операторы работают только с примитивами. Исключениями являются =, = = и! =, которые могут быть применены к объектам. Кроме того, класс String поддерживает операции + и +=. Управляющие конструкции. Подобно любому живому существу, программа должна управлять своим миром и принимать решения во время исполнения. В языке Java для принятия решений используются управляющие конструкции. В Java задействованы все управляющие конструкции языка С. Почти во всех процедурных языках поддерживаются стандартные команды управления, и во многих языках они совпадают. В Java к их числу относятся ключевые слова if-else, while, do-while, for, а также команда выбора switch. Однако в Java не поддерживается часто критикуемый оператор goto. If-else Команда if-else является, наверное, наиболее распространенным способом передачи управления в программе. Условие должно дать результат типа boolean. В секции команд располагается либо простая команда, завершенная точкой с запятой, либо составная конструкция из команд, заключенная в фигурные скобки. Конструкции while, do-while и for управляют циклами и иногда называются циклическими командами. Команда повторяется до тех пор, пока управляющее логическое выражение не станет ложным. Логическое выражение вычисляется перед началом цикла(кроме do - while), а затем каждый раз перед выполнением очередного повторения оператора. У ключевого слова return имеется два предназначения: оно указывает, какое значение возвращается методом (если только он не типа void), а также используется для немедленного выхода из метода. Break и continue В теле любого из циклов вы можете управлять потоком программы, используя специальные ключевые слова break и continue. Команда break завершает цикл, при этом оставшиеся операторы цикла не выполняются. Команда continue останавливает выполнение текущей итерации цикла и переходит к началу цикла, чтобы начать выполнение нового шага. Switch Команду switch часто называют командой выбора. С помощью конструкции switch осуществляется выбор из нескольких альтернатив, в зависимости от значения целочисленного выражения. Команда switch сравнивает результат целочисленного выражения с каждым последующим целым-значением. Если обнаруживается совпадение, исполняется соответствующая команда. Если же совпадения не находится, исполняется команда после ключевого слова default. Команда switch обеспечивает компактный синтаксис реализации множественного выбора (то есть выбора из нескольких путей выполнения программы), но для нее необходимо управляющее выражение, результатом которого является целочисленное значение, такое как int или char. Если, например, критерием выбора является строка или вещественное число, то команда switch не подойдет. Придется использовать серию команд if-else. Объявление и определение методов класса. Методы класса · Метод – это функция, описанная внутри класса · Совокупность методов определяет поведение класса · Описание метода включает заголовок и тело: [модификаторы] тип имя(параметры) { тело; } · Тело – void printHello() { System.out.println(“hello”); } · Метод может принимать параметры и возвращать значение: int square(int x) { return x*x; } 1. Если метод возвращает значение простого типа или ссылку на объект, то его тип должен быть указан в заголовке метода. 2. Так же в теле метода должен содержаться хотя бы один оператор return(если не void) 3. Если метод ничего не возвращает то в заголовке должен быть указан тип void 4. Оператор return немедленно прекращает выполнение метода и возвращает управление вызывающему методу 5. Хороший стиль – использование одного оператора return в одном методе 6. Но JAVA не запрещает многократно использование return (при наличии соответствующих условий). Вызовы конструкторов. Конструктор инициализирует объект непосредственно во время создания. Имя конструктора совпадает с именем класса, включая регистр, а по синтаксису конструктор похож на метод без возвращаемого значения. У нас есть следующий класс: class Box { int width; // ширина коробки int height; // высота коробки int depth; // глубина коробки
// Конструктор Box() { width = 10; height = 10; depth = 10; }
// вычисляем объём коробки int getVolume() { return width * height * depth; } } Теперь при записи Box b = new Box(); буден создан объект у которого ширина высота и глубина будут равны 10. Имея дело с перегруженными конструкторами, удобно один конструктор вызывать из другого через ключевое слово this. Вызов конструктора this() должен быть первым оператором в конструкторе. Рассмотрим пример пусть есть класс с перегруженными конструкторами: class Cat { int age; int birthday;
// Инициализируем переменные явно Cat(int i, int j) { age = i; birthday = j; }
// Инициализируем переменные одним и тем значением Cat(int i) { age = i; birthday = i; }
// Присвоим значения по умолчанию 0 Cat() { age = 0; birthday = 0; } } Перепишем класс, используя конструктор this(). class Cat{ int age; int birthday;
// Инициализируем переменные явно Cat(int i, int j) { age = i; birthday = j; }
// Инициализируем переменные одним и тем значением Cat(int i) { this(i, i); // вызывается Cat(i, i); }
// Присвоим значения по умолчанию 0 Cat() { this(0); // вызывается Cat(0); } } У нас теперь только один конструктор, который присваивает значения полям - Cat(int, int). Что происходит при выполнении оператора:
Cat cat = new Cat(8);
Вызов конструктора Cat(8) приводит к выполнению конструктора this(8, 8), что равнозначно вызову конструктора Cat(8, 8). Статические методы У класса могут быть статические методы, объявленные с модификатором static. К ним можно обращаться не создавая объект. Мы уже встречали такой метод — он называется main. Такие методы не используют информацию о свойствах конкретных объектов класса - они обрабатывают общую для класса информацию, хранящуюся в его статических полях. Например, в классе Person может быть статический метод, обрабатывающий данные из статического поля message. Другим частым случаем применения статических методов является ситуация, когда класс предоставляет свои сервисы объектам других классов. Таковым является класс Math, который не имеет собственных полей - все его статические методы работают с объектами арифметических классов. Для обращения к статическим свойствам Вы указываете имя класса, точку и имя переменной. Для вызова статического метода надо будет сделать нечто подобное. Важным отличием статического метода от обычного является то, что там не существует переменной this, т.е. обратиться к свойству класса, которое не является статическим, невозможно. Пример статического метода public static boolean isPrime(int n) {for(int i = 2; i < = Math.sqrt(n); i++) { if(n%i == 0) { return false; } } return true; } Статические свойства
Статические методы/свойства классов это такие методы/свойства, к которым можно обратиться не создавая объект данного класса. Например, мы создаем описание стола. В этом случае, только когда мы создадим реальный стол, мы сможем говорить о его высоте и ширине (с учетом погрешностей при производстве). Но вот материал скорее всего будет один на всех. Также один на всех будет чертеж, название и прочие атрибуты. Т.е. очевидно, что некоторые свойства присущи не конкретному объекту, а классу целиком. Для обращения к статическим свойствам Вы указываете имя класса, точку и имя переменной. Если мы объявляем статическую переменную, это значит, что она одна на всех. Причем существует она даже тогда, когда нет ни одного экземпляра данного класса. Пример класса со статическим свойствами public class TestClass { private static Integer staticValue = 99;
public static void main(String[] arg) { System.out.println(TestClass.staticValue); } } Понятие интерфейса Интерфейсы в Java во многом напоминают классы, но могут содержать только константы, сигнатуры методов и вложенные типы. В интерфейсах нет описания методов. Нельзя создать объект типа интерфейса — интерфейсы могут только реализовываться некоторым классом или наследоваться другим интерфейсом. Объявление интерфейса очень похоже на объявление класса. Сигнатуры методов объявляются без фигурных скобок и заканчиваются точкой с запятой. Для использования интерфейса вы должны написать класс, который будет реализовывать ваш интерфейс. Класс который реализует интерфейс, должен описывать все методы, объявленные в интерфейсе. Интерфейсы играют важную роль в языке программировния Java. Java не разрешает множественного наследования, но интерфейсы предоставляют альтернативу. В Java класс может наследовать только один класс, но может реализовывать много интерфейсов. При создании объектов класса в качестве типа может указываться имя реализованного в классе интерфейса. Объявление интерфейса содержит ключевое слово interface, имя интерфейса, список родительских интерфейсов через запятую (если есть) и тело интерфейса. Например: public interface GroupedInterface extends Interface1, Interface2, Interface3 { // число e double E = 2.718282; // сигнатуры методов void doSomething (int i, double x); int doSomethingElse(String s); } Интерфейс может наследовать другие интерфейсы, как классы могут наследовать другой класс. В отличие от классов, интерфейсы могут наследовать любое количество других интерфейсов. Для объявления класса, реализующего интерфейс, вы должны использовать ключевое слово implements после которого перечисляются интерфейсы. Класс может реализовывать много интерфейсов. Объявление реализуемых интерфейсов идет после объявления наследуемого (extends) класса (если есть).
Понятие JVM Java Virtual Machine — виртуальная машина Java. Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM. JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение, и как самостоятельная платформа. Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилировано однажды, запускается везде» (compile once, run anywhere). Понятие наследования. Механизм называется наследованием, если новый класс создается как специализация существующего, т.е. взяв класс, который у нас имеется, за основу, мы добавляем к нему код без изменения существующего класса. Наследование используется для того, чтобы не проделывать работу с каким-либо классом, похожим на класс, который ранее уже был создан. Поэтому мы берём готовый класс, клонируем его и вносим в этот клон какие- то обновления. Но, если родительский(суперкласс) меняется, то меняется и дочерний(подкласс). Наследование является одним из принципов ООП, поэтому используется во всех ООП-языках, в том числе и в Java. Синтаксис наследования Нам необходимо показать, что новый класс похож на старый, для этого в программе перед фигурной скобкой, которая открывает тело класса, записываем сначала ключевое слово extends, после чего указываем имя базового класса. Этим действием мы получаем автоматически доступ ко всем методам и полям базового класса. Расширение классов. Функциональные возможности существующего класса можно расширить путем создания нового класса, производного от существующего. Производный класс наследует все свойства базового класса, и можно добавлять или переопределять методы и свойства в зависимости от необходимости. Пример int х, у; Point(int х, int у) { this.x = х; this. y = y; } } Раширим класс Point class Point3D extends Point { int z; Point3D(int x, int y, int z) { super(x, y); this.z = z; } Point3D() { this(-1, -1, -1); } } Реализация интерфейса. Для использования интерфейса вы должны написать класс, который будет реализовывать ваш интерфейс. Класс который реализует интерфейс, должен описывать все методы, объявленные в интерфейсе. Для того, чтобы реализовать интерфейс используется ключевое слово implements: public class имя_класса implements название_интерфейса { Класс может реализовывать много интерфейсов. Объявление реализуемых интерфейсов идет после объявления наследуемого (extends) класса (если есть). Перед каждой реализацией метода стоит ключевое слово @Override. Примитивные типы данных В Java существует 8 примитивных типов данных: Все числовые типы этого языка — знаковые . · byte (целые числа, 1 байт) · short (целые числа, 2 байта) · int (целые числа, 4 байта) · long (целые числа, 8 байтов) · float (вещественные числа, 4 байта) при инициализации переменной указывается буква f. · double (вещественные числа, 8 байтов) · char (символ Unicode, 2 байта) · boolean (значение истина/ложь, 1 байт) Эти 8 типов служат основой для всех остальных типов данных. Примитивные типы обладают явным диапазоном допустимых значений. char — символьный тип данных представляет собой один 16-битный Unicode символ. Ссылочные типы данных. В ссылочные типы входят все классы, интерфейсы, массивы. Тип String также относится к ссылочным типам данных. Также существуют классы-оболочки: · Byte · Short · Integer · Long · Float · Double · Character · Boolean В отличие от примитивных типов, они пишутся с заглавной буквы. Эти типы соответствуют примитивным типам, однако являются ссылочными. Их классы cодержат методы для преобразования типов, а также другие константы и методы полезные при работе с примитивными типами данных. В качестве типа также выступает любой созданный нами класс при создании экземпляра класса. Обработка исключений. Обработка исключения может быть произведена с помощью операторов try…catch, либо передана внешней части программы. Откомпилируем и запустим такую программу: class Main {public static void main(String[] args) { int a = 4; System.out.println(a/0); } } В момент запуска мы увидим сообщение откуда понимаем, что класс случившегося исключения — ArithmeticException. Это исключение можно обработать: class Main {public static void main(String[] args) { int a = 4; try { System.out.println(a/0); } catch (ArithmeticException e) { System.out.println(" Произошла недопустимая арифметическая операция" ); } } } Теперь вместо стандартного сообщения об ошибке будет выполняться блок catch, параметром которого является объект e соответствующего исключению класса. В блок try при этом помещается тот фрагмент программы, где потенциально может возникнуть исключение. Одному try может соответствовать сразу несколько блоков catch с разными классами исключений. Для того, что бы поймать какое то исключение, без указания точного исключения мы можем добавить обработчик для класса Exception, поскольку этот класс родительский для всех остальных контролируемых исключений, то он будет перехватывать любые из них. Поскольку исключения построены на иерархии классов и подклассов, то сначала надо пытаться обработать более частные исключения и лишь затем более общие. То есть поставив первым блок с обработкой исключения класса Exception, а после него блоки с обработкой более частных исключений будет выполняться блок с обработкой исключения класса Exceprtion и остальные выполняться не будут. Необязательным добавлением к блокам try…catch может быть блок finally. Помещенные в него команды будут выполняться в любом случае, вне зависимости от того, произошло ли исключение или нет. Примеры Классов Java IO API — InputStream / OutputStream — Reader / Writer — InputStreamReader / OutputStreamWriter — BufferedInputStream / BufferedOutputStream — BufferedReader / BufferedWriter Процесс чтения данных из ресурса и запись их в назначенное место показан на рисунку ниже.
Программа которая должна считать данные с потока и записать в поток показана на рисунке ниже. Структура Java программы. Пример программы: import java util.*; public class HelloDate { public static void main(String[ ] args) { System.out.print(“Привет, сегодня- “); System out println(new Date()); } } В начале каждого файла с программой должны находиться директивы import, в которых перечисляются все дополнительные классы, необходимые вашей программе. Существует целая библиотека классов, присоединяющаяся автоматически к каждому файлу Java: java.lang. Так как пакет java.lang. автоматически включается в каждую программу на Java, эти классы всегда доступны для использования. Имя класса совпадает с именем файла. Когда вы создаете отдельную программу, подобную этой, один из классов, описанных в файле, должен иметь совпадающее с ним название. (Если это условие нарушено, компилятор сообщит об ошибке.) Одноименный класс должен содержать метод с именем main() со следующей сигнатурой и возвращаемым типом: public static void main(String[] args) { Ключевое слово public обозначает, что метод доступен для внешнего мира. Аргументом метода main() является массив строк. В данной программе массив args не используется, но компилятор Java настаивает на его присутствии, так как массив содержит параметры, переданные программе в командной строке. Строка, в которой распечатывается число, довольно интересна: System.out.println(new Date()): Аргумент представляет собой объект Date, который создается лишь затем, чтобы передать свое значение (автоматически преобразуемое в String) методу println(). Как только команда будет выполнена, объект Date становится ненужным, сборщик мусора заметит это, и в конце концов сам удалит его. Нам не нужно беспокоиться о его удалении самим. Идентификаторы, ключевые слова, операторы. Идентификаторы Имена переменных, классов, объектов, интерфейсов, методов называются идентификаторами. Названия идентификаторов выбираются по следующим правилам: • они должны начинаться с буквы или символа подчеркивания; • они могут содержать латинские буквы, символы подчеркивания или цифры без пробелов; • названия идентификаторов не должны совпадать с ключевыми словами Ключевые слова: 1) Ключевое слово static, делает элемент класса статическим. Когда вы объявляете что-либо как static, это означает, что данные или метод не привязаны к определенному экземпляру этого класса. Поэтому, даже если вы никогда не создавали объектов класса, вы можете вызвать статический метод или получить доступ к статическим данным. С обычным объектом вам необходимо сначала создать его и использовать для вызова метода или доступа к информации, так как нестатические данные и методы должны точно знать объект, с которым работают. 2) Почти во всех процедурных языках поддерживаются стандартные команды управления, и во многих языках они совпадают. В Java к их числу относятся ключевые слова if-else, while, do-while, for, а также команда выбора switch. 3) В теле любого из циклов вы можете управлять потоком программы, используя специальные ключевые слова break и continue. Команда break завершает цикл, при этом оставшиеся операторы цикла не выполняются. Команда continue останавливает выполнение текущей итерации цикла и переходит к началу цикла, чтобы начать выполнение нового шага. 4) Ключевые слова package и import позволяют разработчику библиотеки организовать логическое деление глобального пространства имен, предотвращающее конфликты имен. 5) Ключевые слова volatile и synchronized благодаря им задачи не мешают работе друг друга. Операторы Оператор получает один или несколько аргументов и создает на их основе новое значение. Форма передачи аргументов несколько иная, чем при вызове метода, но эффект тот же самый. Сложение (+), вычитание (-), умножение (*), деление (/) и присвоение (=) работают одинаково фактически во всех языках программирования. Все операторы работают с операндами и выдают какой-то результат. Вдобавок некоторые операторы могут изменить значение операнда. Почти все операторы работают только с примитивами. Исключениями являются =, = = и! =, которые могут быть применены к объектам. Кроме того, класс String поддерживает операции + и +=. Управляющие конструкции. Подобно любому живому существу, программа должна управлять своим миром и принимать решения во время исполнения. В языке Java для принятия решений используются управляющие конструкции. В Java задействованы все управляющие конструкции языка С. Почти во всех процедурных языках поддерживаются стандартные команды управления, и во многих языках они совпадают. В Java к их числу относятся ключевые слова if-else, while, do-while, for, а также команда выбора switch. Однако в Java не поддерживается часто критикуемый оператор goto. If-else Команда if-else является, наверное, наиболее распространенным способом передачи управления в программе. Условие должно дать результат типа boolean. В секции команд располагается либо простая команда, завершенная точкой с запятой, либо составная конструкция из команд, заключенная в фигурные скобки. Конструкции while, do-while и for управляют циклами и иногда называются циклическими командами. Команда повторяется до тех пор, пока управляющее логическое выражение не станет ложным. Логическое выражение вычисляется перед началом цикла(кроме do - while), а затем каждый раз перед выполнением очередного повторения оператора. У ключевого слова return имеется два предназначения: оно указывает, какое значение возвращается методом (если только он не типа void), а также используется для немедленного выхода из метода. Break и continue В теле любого из циклов вы можете управлять потоком программы, используя специальные ключевые слова break и continue. Команда break завершает цикл, при этом оставшиеся операторы цикла не выполняются. Команда continue останавливает выполнение текущей итерации цикла и переходит к началу цикла, чтобы начать выполнение нового шага. Switch Команду switch часто называют командой выбора. С помощью конструкции switch осуществляется выбор из нескольких альтернатив, в зависимости от значения целочисленного выражения. Команда switch сравнивает результат целочисленного выражения с каждым последующим целым-значением. Если обнаруживается совпадение, исполняется соответствующая команда. Если же совпадения не находится, исполняется команда после ключевого слова default. Команда switch обеспечивает компактный синтаксис реализации множественного выбора (то есть выбора из нескольких путей выполнения программы), но для нее необходимо управляющее выражение, результатом которого является целочисленное значение, такое как int или char. Если, например, критерием выбора является строка или вещественное число, то команда switch не подойдет. Придется использовать серию команд if-else. Популярное:
|
Последнее изменение этой страницы: 2017-03-03; Просмотров: 1075; Нарушение авторского права страницы