Лексика языка Java состоит из следующих элементов: ключевые слова, разделители, идентификаторы, литералы, комментарии, операторы  и пробелы.

Ключевые слова

В настоящее время зарезервировано 50 ключевых слов. Эти слова, в сочетании с синтаксисом операторов и разделителями, образуют основу языка Java. Их нельзя использовать ни в качестве идентификаторов, ни для имен переменных, классов или методов.

 abstract continue for new switch
 assert default goto * package synchronized
boolean do if private this
 break  double implements  protected throw
 byte  else import public throws
case enum instanceof return  transient
catch  extends int short try
 char final interface static void
class finally long strictfp volatile
 const *  float native super while

* Ключевые слова goto и const зарезервированы, но не используются. Кроме того зарезервированы слова true, false и null. Их также нельзя использовать в качестве идентификаторов и т.д.

Разделители

В языке Java есть символы, которые используются как разделители. Чаще всего используется символ точка с запятой. Однако он не единственный.

() круглые скобки Используются для передачи списков параметров в определениях и вызовах методов. Их применяют также для определения приоритета в выражениях, выражений в управляющих операторах и преобразовании типов
 {} фигурные скобки Используются для указания значений автоматически инициализируемых массивов. Их применяют также для определения блоков кода, классов, методов и локальных областей видимости
[] квадратные скобки Используются для объявления типов массивов, а также при обращении к элементам массивов
; Точка с запятой Завершает операторы
, Запятая Разделяет последовательные идентификаторы в объявлениях переменных. Этот символ также используется для создания цепочек операторов внутри оператора for
. Точка Используется для отделения имен пактов от имен вложенных пакетов и классов, а также для отделения переменной или метода от ссылочной переменной

Идентификаторы

Идентификаторы используются для именования классов, методов и переменных. Идентификатором может служить любая последовательность строчных и прописных букв, цифр или символов подчеркивания (_) или доллара ($). Для общего использования символ доллара не предназначается. Идентификаторы не должны начинаться с цифры. Язык Java чувствителен к регистру символов, поэтому идентификаторы FIRST и First — являются различными. Стоит также отметить, что поскольку в Java в полной мере применяется Unicode, то в качестве «буквы» может использоваться также символ из армянского, корейского, грузинского, индийского и практически любого алфавита.

Литералы

В Java постоянное значение задается его литеральным представлением. Например:

100 896.34 ‘Y’ «Привет, мир!»

Первый литерал задает целочисленное значение, второй литерал задает значение с плавающей точкой, третий литерал — символьную константу, четвертый — строковое значение. Литерал можно использовать везде, где допустимо использование значений данного типа.

Комментарии

В Java есть 3 типа комментариев

1. Однострочные комментарии. Начинаются с символов // и длятся до конца строки.

// Это - однострочный комментарий

2. Многострочные комментарии. Начинаются символами /* и заканчиваются символами */. Например:

/* Это - многострочный
комментарий*/

3. Комментарии документации:

/** Это - комментарий 
документации Java*/

Комментарии данного типа используются для создания файла HTML документации программы.

Отступы

Java — язык свободной формы. При написании программы не нужно следовать никаким специальным правилам в отношении отступов. Единственное обязательное требование — наличие, по меньшей мере, одного пробела между лексемами, которые не разграничены оператором или разделителем. В Java отступами являются символы пробела, табуляции или символа новой строки.

Продолжение: Шаг 7. Две программы
Начало: Шаг 5. Объектно-ориентированное программирование «на пальцах»

Java — объектно-ориентированнный язык программирования. Что это означает? Что вообще такое объектно-ориентированное програмиирование (ООП)? Зачем оно нужно?

С этими вопросами мы постараемся разобраться подробно.

Все языки объектно-ориентированного программирования предоставляют механизмы, которые  облегчают реализацию объектно-ориентированной модели. Этими механизмами являются инкапсуляция, наследование, полиморфизм. Рассмотрим эти концепции.

Инкапсуляция

Основой инкапсуляции в Java является класс. Класс определяет данные и программный код некоторого набора объектов. Объект является экземпляром класса. Таким образом, класс — это логическая конструкция, а объект – физическая реальность. По сути, класс является шаблоном объекта, в классе описывается структура объекта, а когда объект создается, то он создается согласно данным описанным в классе, подобно тому как создается деталь на заводе согласно ее чертежу. При составлении класса код и данные необходимо специфицировать. Все эти элементы называют членами класса. Члены-переменные или переменные экземпляра или поля являются данными. Члены методы или просто методы – код, оперирующий этими данными.

Цель класса – инкапсуляция сложности. Для этого у методов и переменных внутри класса могут быть модификаторы доступа (public, private).

Инкапсуляция означает, что данные объекта недоступны его клиентам непосредственно. Вместо этого они инкапсулируются — скрываются от прямого доступа извне. Инкапсуляция предохраняет данные объекта от нежелательного доступа, позволяя объекту самому управлять доступом к своим данным.

Статья не окончена и будет дописана.

Продолжение: Шаг 6. Лексические элементы языка Java
Начало: Шаг 4. Пример работы с классами и объектами

Пришло время открыть еще одну рубрику посвященную языку программирования Pascal. В ней мы рассмотрим основы программирования на основных диалектах языка Pascal, таких как Turbo Pascal, Pascal ABC, Object Pascal (Delphi). Эти языки связаны общими корнями, синтаксисом, отличным от синтаксиса Си-подобных языков и довольно богатой областью применения. Языки Turbo Pascal и Pascal ABC очень часто применяются при обучению программированию школьников. А язык Delphi — прямой потомок Turbo Pascal очень часто применяется для создания приложений для операционных систем семейства Windows.

Приведем простейший пример, на котором видно, как вообще осуществляется работа с классами и объектами в Java. Создалим программу BoxDemo. Она будет включать в себя два класса. В первом классе Box мы определим структуру коробки, определим поля этого класса и его методы. А во втором классе BoxDemo мы создадим несколько объектов класса Box и попытаемся увидеть, как с ними можно работать.


//Файл BoxDemo.java
package boxdemo;

//Создаем новый класс Box, который будет описывать коробку
class Box {
    //Поля класса
    //тип double - это тип, который позволяет хранить дробные числа
    double width; //ширина (переменная width будет хранить значение ширины)
    double height; //высота
    double depth; //глубина
    
    // Методы класса
    // Конструктор - это метод для создания объекта класса
    // Конструктор не имеет возвращаемого типа данных (даже void не пишется),
    // а имя конструктора совпадает с именем класса.
    // Конструкторов может быть несколько. Мы пока сделаем два. Один будет получать
    // 1 параметр. Второй будет получать 3 параметра. Первый будет делать куб,
    // а второй - коробку произвольных пропорций. При вызове, если мы вызовем
    // конструктор и передадим ему 1 параметр, то автоматически выберется первый конструктор, 
    // а если параметров будет 3 - то вызовется второй конструктор
    
    //Первый коструктор
    Box(double size) {
        width = size;
        height = size;
        depth = size;
    }
    //Второй конструктор
    Box(double w, double h, double d) {
        width = w;
        height = h;
        depth = d;
    }
    //В конструкторах мы присваиваем значениям полей класса значений параметров,
    //которые передаем им при вызове
    
    //Ну и определим еще 1 метод, который подсчитывает объем коробки.
    //Он будет возвращать такой же дробный тип double, поскольку 
    //перемножает 3 дробных числа. Параметры мы ему не передаем (), он сам будет брать
    //значения полей.
    double volume() {
        double v;
        v= width * height * depth;
        return v;
    }
}

//А вот наш главный класс, с него запускается программа
public class BoxDemo {
    //C этого метода    
    public static void main(String[] args) {
        //Создадим переменную для объема
        double vol=0;
        //Создадим первую коробку, используя первый тип конструктора с 1 параметром        
        Box FirstBox = new Box(4); 
        //Объект с именем FirstBox класса Box создается выделением памяти (new) и
        //вызовом конструктора Box(4), где 4 - это параметр size.
        //Вызов метода сопровождается указанием объекта, 
        //и отделяется от его имени оператором точка "."
        vol = FirstBox.volume(); // тут мы вызвали для объекта FirstBox 
        //метод, который ему достался от порождающего его класса Box;
        //Выведем объем на экран
        System.out.println(vol);//объем равен 64
        //а теперь, изменим один из паказателей height нашего куба
        FirstBox.height=5;
        vol = FirstBox.volume(); // снова считаем объем, только уже 4*5*4=80
        System.out.println(vol); //вывод объема 80
        //Создадим новую коробку вторым конструктором
        Box SecondBox = new Box(2, 4, 6); //2 4 6 то подставится вместо w h d
        vol = SecondBox.volume(); //объем второй коробки
        System.out.println(vol); //вывод объема 48
        //Можно не пользоваться переменной vol, написать так
        System.out.println(SecondBox.volume()); //вывод объема        
    }
}

Результат выполнения программы будет следующим:
вывод программы BoxDemo
Каждое из чисел — результат выполнения инструкций System.out.println(); В зависимости от текущего значения переменной vol (а в последнем случае мы сразу подставили возвращаемое значение метода SecondBox.volume()), команда вывода печатает разные значения.

Продолжение: Шаг 5. Объектно-ориентированное программирование «на пальцах»
Начало: Шаг 3. Подробное рассмотрение программы FirstProgram

Хотя программа созданнная нами в предыдущей статье (проект FirstProgram) небольшая, с ней связано несколько важных особенностей, характерных для всех программ на языке Java. Полный текст программы представлен на листинге ниже.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package firstprogram;

/**
 *
 * @author Андрей
 */
public class FirstProgram {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }
}

Рассмотрим каждую часть программы подробно.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

Данная часть кода — комментарий. Подобно большинству других языков программирования, Java позволяет включать примечания в исходный текст программы. Они нужны для того, чтобы программисту было легче ориентироваться в текстах большого проекта, выделять логически законченные фрагменты программы, а также, для того, чтобы программу написанную одним человеком, мог понять другой программист.
Комментарии в Java бывают трёх видов. В данном случае применён комментарий заключённый между между /* и */. Как только компилятор встречает связку символов /*, он игнорирует все символы пока не встретит */. Приемущество такого коментария: он может располагаться в произвольном количестве строк. Второй тип комментария в языке программирования Java — это комментарий, начинающийся с символов // и продолжается до конца строки. Третий тип комментария — это комментарии документирования, про которые нам знать пока необязательно. Однако, они по форме похожи на комментарии первого типа, за исключением того, что в них используются связки символов /** и */. Кстати данный комментарий присутствует в нашей программе:

/**
 *
 * @author Андрей
 */

Далее по тексту программы мы видим строку:

package firstprogram;

В этой строке показывается, что данный исходный файл программы включён в пакет с названием firstprogram. Пока мы не будем задаваться вопросами о пакетах. Придет время и мы узнаем для чего они нужны, а пока нам достаточно знать, что в начале каждого исходного файла как правило указывается его принадлежность к пакету.
Итак, мы дошли до самого интересного. Следующая строка кода имеет такой вид.

public class FirstProgram {

В этой строке ключевое слово class используется для объявления о том, что выполняется определение нового класса. Модификатор доступа public показывает, что определяемый класс будет доступен для любого кода: как классов этого же проекта, так и любых других. В частности, поскольку этот класс главный, то при запуске программы среда исполнения Java получит доступ к этому классу. FirstProgram — это идентификатор, являющийся именем класса. Поскольку наша программа имеет всего один класс, то его имя, как легко заметить, совпадает с именем проекта и главное файла FirstProgram.java. Далее по тексту программы мы видим открывающую фигурную скобку «{«. Она является началом тела класса. Всё, что находится до закрывающей скобки «}» является телом класса. Мы рассмотрим классы, объекты и объектно-ориентированный подход позже, но сейчас нам достаточно знать, что классы обычно содержат поля и методы. Поля задают типы данных, которые содержит класс, а методы (функции-члены в других языках программирования) — представляют собой фрагменты управляющих конструкций, которые позволяют выполнять какие-либо действия.
Следующие строки выглядят так.

        public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }

Они представляют собой метод main. Модификатор доступа public показывает, что определяемый метод будет доступен для любого кода. Модификатор static показывает, что метод является статическим, то есть доступным для исполнения даже в классе, объекты которого не созданны. Позже мы уясним, что работа с классом осуществляется путем создания конкретных реализаций этого класса — объектов или экземпляров класса. Однако, в нашей простейшей программе, мы не создаем объекты класса FirstProgram. Мы используем лишь его единственный статический метод, в котором выполняются все действия программы.
Все переменные и/или поля классов обязательно имеют типы данных. Целочисленные типы, логические и т.д. Так же и методы, являясь по сути функциями имеют тип возвращаемого значения. Если метод не возвращает никакого значения, применяется ключевое слово «void«.
В скобках после имени метода () мы видим список параметров, которые может принять метод от вызывающего его объекта. В нашем случае, метод main будет вызываться средой исполнения Java. В качестве параметров он может принимать аргументы командной строки, разделённые пробелом, для чего указан массив типа String (Строковый тип данных) и именем args. В данной программе, да и в большинстве других, мы не будем использовать аргументы командной строки, однако форма есть форма. Далее между открывающей и закрывающей фигурными скобками располагается тело метода.

        System.out.println("Привет, мир!");       

Наша программа состоит из одной единственной строки. Эта строка выводит на экран строку текста «Привет, мир!«, за которой следует новая строка. В действительности вывод выполняется встроенным методом println(). Как будет показано, этот метод можно применять для отображения и других типов информации. Строка начинается с идентификатора потока System.out. Хотя он слишком сложный, чтобы его можно было подробно пояснить на данном этапе, достаточно пока сказать, что System — это предопределенный класс, который предрставляет доступ к системе, а его переменная-член out — выходной поток, связанный с консолью.

Как легко догадаться, в реальных программах на Java консольный ввод-вывод используется редко, но при изучении основных принципов языка, мы будем первое время писать программы консольного типа. В следующих статьях мы оснановимся подробно на основных элементах языка, таких как типы данных, операторы и т.д.

Продолжение: Шаг 4. Пример работы с классами и объектами
Начало: Шаг 2. Первый пример простейшей программы

Рассмотрим простейшую программу на языке Java. Исходные коды программ на языке Java оформляются в виде текстовых файлов с расширением *.java. Каждый текстовый файл может содержать один или более классов. Мы подробно рассмотрим правила оформления каждого файла *.java позже. В общем случае: создание, редактирование и другие действия с файлами *.java производятся, используя любой текстовый редактор, позволяющий сохранять неформатированный текст, например Блокнот или Notepad++. В нашем случае, мы используем среду NetBeans, поэтому файлы в ней будут создаваться автоматически.
Начнем с создания проекта в среде NetBeans. Запустим среду NetBeans и выберем пункт меню «Файл->Создать проект…»
2.создать проект
В открывшемся окне выберем тип проекта «Приложение Java»» и нажмём кнопку «Далее»
2.выбор типа проекта
В следующем окне укажем в качестве имени проекта «FirstProgram», установим флажок на пунктах «Использовать отдельную папку для хранения библиотек» и «Создать главный класс». Остальные параметры — оставляем как есть. Нажимаем кнопку «Готово».
2.параметры проекта
Итак проект создан. В левой части программы отображается структура проекта. Мы можем видеть, что файл FirstProgram.java входит в пакет firstprogram. Для чего нужны пакеты мы узнаем позже, а пока перейдем к правой части окна, где уже создан главный класс FirstProgram и в нем определен метод main, с выполнения которого всегда начинается выполнение программы на Java.
2.текст программы созданный автоматически
Изменим код программы добавив строку «System.out.println(«Привет, мир!»);» (без кавычек!) в тело метода main. Полный код программы приведён ниже.

 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package firstprogram;

/**
 *
 * @author Андрей
 */
public class FirstProgram {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("Привет, мир!");        
    }
}

Теперь, программа в главном окне приняла следующий вид:
2.измененный вариант
Запустим написанную программу. При этом, проект автоматически сохраняется и происходит компиляция программы в байт-код, который, в последствии, исполняется на любой платформе с установленной средой исполнеия Java (JRE). В нашем случае, в папке проекта создастся файл FirstProgram.class. Результат работы программы мы увидим сразу в нижней части основного окна среды NetBeans.
2.запуск
2.результат
Как можно видеть, программа выводит в консоль фразу «Привет, мир!».
Подробное рассмотрение данной программы произведем в следующей статье.

Продолжение: Шаг 3. Подробное рассмотрение программы FirstProgram
Начало: Шаг 1. Установка среды разработки NetBeans + JDK

Начнем изучение языка программирования Java с установки интегрированной среды разработки NetBeans и комплекта разработчика приложений на языке Java (JDK).

Проект NetBeans IDE поддерживается и спонсируется компанией Oracle, однако разработка NetBeans ведется независимым сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org.

  1. Для получения дистрибутива Oracle NetBeans необходимо перейти по ссылке. Выбираем и скачиваем «JDK 7 + NetBeans«. Рекомендуется использовать 32-разрядную версию продукта.
  2. После этого запускаем скачанный файл (в моём случае файл имеет имя jdk-7u21-nb-7_3-windows-i586.exe, однако версии продукта меняются достаточно быстро и в вашем случае название может меняться).
  3. Следуем инструкциям программы установки:

01

02

03

04

05

06

07

После этого мы имеем установленную среду разработки NetBeans и Java Development Kit (JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

В следующей статье мы создадим свой первый проект на Java в среде NetBeans.

Продолжение: Шаг 2. Первый пример простейшей программы