
- •Введение
- •1 Инструментальные средства языка Java
- •1.1 Базовый синтаксис языка Java
- •1.1.1 Стандартный вывод результатов работы программ
- •1.1.2 Использование даты и времени
- •1.1.3 Особенности использования метода main(...)
- •1.1.4 Преобразования простых типов данных
- •1.1.5 Использование массивов
- •1.1.6 Работа со строками
- •1.1.7 Управляющие операторы
- •1.2 Организация ввода-вывода в объектной модели Java
- •1.2.1 Файлы и каталоги
- •1.2.2 Сериализация объектов
- •1.3 Сети и многопоточное программирование
- •1.3.1 Использование интерфейса Runnable
- •1.3.2 Синхронизация многопоточного приложения
- •1.4 Сокеты языка Java
- •1.5 SQL-запросы к базам данных
- •1.5.1 Числовые типы данных
- •1.5.2 Строковые типы данных
- •1.5.3 Типы даты и времени
- •1.5.4 Специальные типы данных
- •1.5.5 Функции
- •2 Объектные распределенные системы
- •2.1 Инструментальные средства языка Java для технологии RMI
- •2.1.1 Утилита rmic
- •2.1.2 Преобразование интерфейсов RMI в описание IDL CORBA
- •3 Web-технологии распределенных систем
- •3.1 Классы технологии Java-сервлетов
- •3.1.1 Общая обработка запроса
- •3.1.2 Обработка контекста запроса
- •3.2 HTML и технология JSP-страниц
- •3.2.1 Установка кодировки символов объекта response
- •3.2.2 Передача атрибутов JSP-страницам
- •3.3 Технология шаблона MVC
- •3.3.1 Проектирование элементов шаблона MVC
- •3.3.2 Реализация проекта webpad
- •Список использованных источников
10
MINUTE, MONDAY, MONTH, NOVEMBER, OCTOBER, PM, SATURDAY, SECOND, SECOND, SEPTEMBER, SUNDAY, THURSDAY, TUESDAY, UNDECIMBER, WENDESDAY, WEEK_OF_MONTH, WEEK_OF_YAR, YAR, ZONE_OFFSET.
Пример использования констант класса Calendar:
/**
*Констаны класса Calendar.
*Создание календаря с текущей датой,
*языковой зоной и часовом поясе.
*/
Calendar cal = Calendar.getInstance(); msg.println("Текущее состояние календаря:");
msg.printf("\t Год |
: %d \n", |
cal.get(Calendar.YEAR)); |
msg.printf("\t Месяц |
: %d \n", |
cal.get(Calendar.MONTH)); |
msg.printf("\t День |
: %d \n", |
cal.get(Calendar.DAY_OF_MONTH)); |
msg.printf("\t Час |
: %d \n", |
cal.get(Calendar.HOUR_OF_DAY)); |
msg.printf("\t Минута : %d \n", |
cal.get(Calendar.MINUTE)); |
|
msg.printf("\t Секунда: %d \n", |
cal.get(Calendar.SECOND)); |
|
msg.printf("\t Мл.сек : %d \n", |
cal.get(Calendar.MILLISECOND)); |
Задание.
В проекте с именем proj1 написать программу, обеспечивающую форматированный вывод даты и времени на консоль терминала.
1.1.3 Особенности использования метода main(...)
Для изучения последующих вопросов данного практического занятия необхомо предварительно прочитать [1, подраздел 2.2, стр. 51-58].
Каждая исполняемя программа на языке Java должна иметь метод main(...), который имеет следующее общее описание:
public static void main(String[] args) { // Команды языка Java
}
В отличие от языка С, метод main(...) языка Java не возвращает обязательного целочисленного значения, необходимого ОС для нормального завершения процесса. Естественно, что этим вопросом занимается виртуальная машина Java - JVM. Если же необходимо, чтобы метод main(...) или любой другой метод любого класса возвращал нужное значение кода возврата программы, то следует воспользоваться методом exit(...) класса System, в виде:
System.exit( целочисленный код возврата );
11
Хотя метод main(...) имеет особый статус, - как главный метод запуска программ, на него распространяются все правила определения и использования методов классов языка Java:
•все объектные переменные, объявленные внутри метода являются локальными в пределах его границ;
•если в классе объявлены объектные переменные или другие методы отличные от main(...), то для их использования необходимо явное создание объекта класса.
Например:
package rvs.pr1;
public class Main2 { /**
*Глобальные переменные.
*@param args
*/ |
|
|
private |
String version = "1.0"; |
|
public static String title |
= "Пример программы"; |
|
public String |
getVersion() |
|
{ |
|
|
return version;
}
public static void main(String[] args) { /** * Создание локального объекта.
*/
Main2 m2 = new Main2();
System.out.println(title + ": " + m2.getVersion());
}
}
1.1.4 Преобразования простых типов данных
Основные обозначения ключевых слов, операторов и простых типов данных приведены в [1, пункт 2.2.1]. В целом, они не требуют пояснений для студентов знакомых с основами ООП.
Поскольку Java оперирует с объектами, то в [1, пункт 2.2.2, стр. 53] приведена следующая таблица преобразованияя типов:
Таблица 2.4 - Простые типы данных и классы-обертки языка Java [1]
boolean |
byte |
char |
short |
int |
long |
float |
double |
|
|
|
|
|
|
|
|
Boolean |
Byte |
Character |
Short |
Integer |
Long |
Float |
Double |
|
|
|
|
|
|
|
|
Общепринятые обозначения Java предполагают, что:
12
•имена классов начинаются с прописной буквы;
•имена методов начинаются со строчной буквы.
Эти условия не являются обязательными, но их все придерживаются.
Впроцессе программирования, постоянно приходится проводить преобразование простейших типов данных. Многие методы делают это неявно, например, методы класса PrintStream, рассмотренные выше. Для других достаточно явного преобразования типа, указанного в круглых скобках. Но возникают случаи, когда имеются сомнения в правильности проведенных преобразований или среда разработки указывает на несоответствие типов и блокирует выполнение приложения. Тогда следует:
1. Преобразовать простейший тип в соответствующий ему объект, согласно обзначению типов в таблице 2.4. Для этого имеются методы valueOf(...).
2. Использовать методы созданного объекта для преобразования его в нужный простой тип. Для этого используются различные методы, как показано ниже в примере.
package rvs.pr2;
/**
*Примеры преобразования типов.
*@author vgr
*
*/
public class Types {
public static void main(String[] args) {
/** * Преобразование целого числа в объект и другие типы.
*/ |
|
|
int |
|
i = 5; |
Integer |
ii = Integer.valueOf(i); |
|
float |
f |
= ii.floatValue(); |
double |
d |
= ii.doubleValue(); |
long |
l |
= ii.longValue(); |
/** * Преобразование целого числа в строку. */
String ss = String.valueOf(i); /**
* Преобразование строки во float и другие типы. */
Float ff = Float.valueOf(ss); f = ff.floatValue();
d = ff.doubleValue(); l = ff.longValue();
}
}
Задание.
В проекте с именем proj2 написать программу, обеспечивающую преобразование одних простых типов в другие.
13
1.1.5Использование массивов
ВJava массивы являются объектами, которые могут создаваться и передаваться в другие методы. Перед использованием массивов для них сначала нужно выделить требуемый объем памяти. В целом процесс создания и использования массивов Java можно разделить на три основных этапа:
1. Объявление массива.
2. Выделение памяти для элементов массива.
3. Инициализация элементов массива.
Практическое объявление и использование массивов достаточно многобразно, поэтому обясним это набором примеров, реализованных в проекте proj2 в виде класса Array2:
package rvs.pr3; /**
*Примеры определения массивов.
*@author vgr
*
*/
public class Array2 {
public static void main(String[] args) { int max = 20;
/** * Объявление массивов: */
double[] d1; int[] i1; long[][] l1; String[] s1; /**
* Выделение памяти для элементов массива: */
d1 = new double[40];
i1 = new int[max];
l1 = new long[10][max];
s1 = new String[10]; /**
* Инициализация элементов массива: */
for(int i=0; i<2*max; i++) d1[i] = 2.5 * i;
for(int i=0; i<10; i++)
{
i1[i] |
= |
30 *i; |
|
for(int j=0; j<max; j++) |
|
||
} |
l1[i][j] = i + j; |
|
|
|
|
|
|
s1[0] = "Текст0"; |
|
||
s1[1] = "Текст1"; |
|
||
double[] d2 |
= {2.5, 4.7, 5.6}; |
// Три элемента |
|
long[][] l2 |
= {{7, 3, 2}, |
|