Начать работу с Java гораздо проще, чем я думал. На данный момент у меня уже есть понимание базовой синтаксической структуры Java. Но я знаю, что углубленное изучение любого языка требует накопления времени и практики.
Апплет — это код, написанный на Java, который можно запускать на стороне браузера. Очевидная разница между ним и приложением заключается в методе его выполнения. Например, программа на языке C запускается из программы main(), а апплет более сложен. Не знаю точно, насколько он сложен, но постепенно разберусь. Важным свойством Applet является то, что я могу передавать значения в HTML в качестве параметров Applet (получать значение параметра через getParameter()). Таким образом, для получения различных эффектов нам не нужно перекомпилировать Java-программу. , а просто просто измените значения параметров HTML. Поскольку HTML-код также может генерироваться динамически, я могу управлять динамическими эффектами веб-страницы по своему усмотрению.
В жизненном цикле апплета есть три основных метода: init, start и stop.
init(): отвечает за инициализацию апплета. Этот метод выполняется только один раз в течение всего жизненного цикла апплета. Он аналогичен событию OnCreate() в Delphi
: после того, как система вызывает init(). он автоматически вызывает start(), и каждый раз, когда текущее окно повторно активируется, этот метод будет вызываться, что аналогично событию OnShow() в Delphi.
stop(): этот метод вызывается после того, как пользователь покидает страницу, на которой находится апплет. Он позволяет останавливать работу некоторых ресурсов, когда пользователь не обращает внимания на апплет, чтобы не влиять на эффективность работы системы. И нам не нужно искусственно удалять этот метод. Этот метод аналогичен методу OnClose(). мероприятие в Дельфах.
Ниже приводится имя файла апплетной версии HelloWorld
: HelloWorld.java
import java.applet.Applet;
импортировать
открытый класс HelloWorld расширяет апплет
java.awt.Graphics;
{
Строковый заголовок;
публичная недействительная инициализация () {
title="Привет, мир";
}
Публичная краска пустоты (Графика г)
{
g.drawString(title, 50, 20);
}
}
Мы видим, что в программе нет основной функции, так как же она запускается? Поскольку апплет работает в среде браузера, нам нужно вызвать ее в HTML-файле. Необходимо использовать соответствующие теги <. Applet>, сначала создаем HTML-файл test.htm, исходный код следующий:
<html>
<тело>
Вот мой первый апплет:
<br>
<код апплета=HelloWorld.class ширина=650 высота=500>
</апплет>
</АППЛЕТ>
</тело>
</html>
Поместите этот файл в тот же каталог, что и HelloWorld.java, затем скомпилируйте HelloWorld.java, щелкните test.htm, чтобы открыть его напрямую, и вы увидите, что программа Applet запущена. Или используйте команду AppletViewer AppletViewer test. htm Вы также можете запустить апплет напрямую, без браузера.
Следующая программа может лучше помочь нам понять, как Java-апплет вызывает методы, которые мы представили выше, на протяжении всего своего жизненного цикла.
Имя файла: StartStop.java
import java.awt.*;
импортировать
открытый класс StartStop расширяет апплет
{
сообщение StringBuffer;
публичная недействительная инициализация()
{
message=new StringBuffer("Инициализация завершена...");
}
публичный недействительный старт()
{
message.append("Началось...");
}
общественная недействительная остановка()
{
message.append("Остановлено...");
}
Public void Paint (Графика g)
{
g.drawString(message.toString(), 150, 50);
}
}
Метод работы тот же, что и выше (Информацию об этой программе см. в <Кратком руководстве по Java> машиностроительной промышленности).
В отличие от языка C, с помощью Java гораздо проще реализовать графический интерфейс. Поскольку это чисто объектно-ориентированный язык, Java AWT предоставляет нам возможность вызывать различные элементы интерфейса, точно так же, как компоненты в Delphi. Ниже приведена сравнительная таблица объектов графического интерфейса в Java и соответствующих компонентов в Delphi.
Ява Дельфи
Кнопка TКнопка
Холст TCanvas
Флажок TCheckbox
Группа флажков
Выбор TComboBox
Этикетка
Текстовое поле
TextArea TMemo
Однако JDK не является визуальным инструментом разработки RAD (быстрой разработки приложений). Использование объектов не может осуществляться только путем перетаскивания и перемещения, как в Delphi, но требует написания вызывающего кода. Это создает проблемы. Как я могу это сделать? сделать элементы, размещенные в интерфейсе, в соответствии с моими требованиями? Когда элементов не так много, я могу позволить Java автоматически разметить (Layout). Но когда элементов много или когда элементы необходимо разместить в соответствии с требованиями. В приложении вам необходимо использовать панель (Panel). Панель также имеет соответствующие компоненты (TPanel) в Delphi, но в основном она используется для сегментирования интерфейса и создания грубого макета. Точное позиционирование требует ручной настройки разработчиком. Java, его можно использовать только для его позиционирования, и это недостаток. Возможно, я еще не научился этому.
После начала работы пришло время углубиться в концепцию объектов.
Предположим, что в Java создается пользовательский тип данных под названием Date следующим образом.
публичный класс Дата {
международный день;
внутренний месяц;
международный год;
}
Итак, есть ли разница для следующих трех операторов, объявляющих переменные, когда Java выделяет для них память?
(1) интервал я;
(2) Дата моего рождения;
(3) Date mybirth=new Date();
Очевидно, что существует, и распределение происходит следующим образом:
(1) Java автоматически выделяет память целочисленной переменной для целого числа i, обычно двух байтов
(2) Java объявляет класс Date Переменной экземпляра mybirth выделено пространство для хранения, но в этом пространстве хранится только ссылка или адрес. В текущем адресе ничего нет, поэтому мы не можем использовать эту переменную экземпляра или ссылаться на ее члены.
(3) Java создает переменную экземпляра mybirth класса Date, выделяет достаточно места для хранения его переменных-членов и, наконец, возвращает ссылку на это пространство хранения, то есть возвращает первый адрес этого пространства хранения, а затем передает mybirth , то есть этот первый адрес используется для доступа к каждому члену этой переменной экземпляра, например mybirth.day, mybirth.month, mybirth.year.
Когда мы объявляем переменную базового типа данных (например, boolean, byte, short, char, int, long, Flat, Double), система автоматически выделяет память для этой переменной. Но если объявлены строковые или определяемые пользователем переменные, система не будет сразу выделять для них память. Почему это
происходит потому, что как строковые, так и определяемые пользователем переменные относятся к категории классов A, объявленных как класс. Это уже не кусок данных, а ссылка на данные. То есть mybirth можно рассматривать как указатель на экземпляр класса, и в нем хранится адрес. Это легко понять.
Если пойти глубже, поскольку значение переменной экземпляра класса является указателем, и этот указатель указывает на экземпляр класса, то мы, очевидно, можем определить переменные экземпляра нескольких классов с разными именами и указать их все на один экземпляр. Например:
University u=new University();//Определена переменная экземпляра u класса University, и ей выделено пространство памяти объекта
University u2=u;//Также определена переменная экземпляра u2. , и ему присвоено значение u. Учитывая u2
, очевидно,
что u2 и u на самом деле являются одним и тем же, за исключением разных имен, поскольку они указывают на один и тот же адрес.
Эти структуры данных — это то, что должен знать программист.