Общие понятие языка java

10 главных конструкций языка Java

Java — важный язык разработки во многих больших корпорациях. Мы уже рассказывали про то, как и где применяется Java, теперь настало время для практики.

Так как авторы языка Java при создании вдохновлялись языками C и C++, то в Java тоже появилось много похожих конструкций и команд. Если вы знаете C или C++, то освоить Java вам будет гораздо проще.

👉 В Java после каждой команды ставится точка с запятой.

Комментарии

Комментарии в Java точно такие же, как в C-подобных языках — есть однострочные, которые работают только для одной строки, и многострочные.

// Это однострочный комментарий
// Для каждой строки нужно добавлять его отдельно
/* А это — многострочный
его можно сделать любой длины,
если в начале и в конце поставить нужные символы */

Переменные и типы данных

Как и в C, в Java есть несколько типов данных с разным объёмом выделяемой памяти. Предполагается, что программист сам решит, какой тип использовать лучше всего в каждой ситуации и сам будет следить за тем, чтобы в переменную поместилось всё что нужно.

// целое, 1 байт byte b; // целое, 2 байта short s; // целое, 4 байта int x = 420; // целое, 8 байт long l; // дробное, 4 байта float fl = 4.3; // дробное, 8 байт double d,q; // логический тип, true или false boolean bol;

Присваивание и сравнение

// это присваивание
x = 10;
// а это — сравнение x и 10
// результат сравнения отправляется в переменную b
boolean bol;
b = (x == 10);

Читайте также:  text-transform

Ещё есть метод сравнения .equal — он работает более гибко и предсказуемо, чем ==, потому что двойное равно может сравнивать только числа и строки.

Структура программы

Разработчикам Java понравилось, что в C вся программа состоит из функций, среди которых есть одна обязательная — main, поэтому сделали точно так же. В классах эта функция называется методом.

Но есть одно важное отличие: каждая java-программа — это как бы один большой класс со своими разделами, которые должны быть у каждого класса. Благодаря этому большие программы легко собираются из маленьких java-кирпичиков и работают друг с другом как с классами, используя все их возможности.

// программа — тоже класс public class Program < // публичная часть класса, доступная всем // в ней сразу делают основную функцию программы main public static void main(String[] args) < // объявляем переменные String name = "Код"; // выводим строку на экран System.out.printf("Привет, это журнал %s \n", name); // конец основной функции >// конец описания класса >

Ввод и вывод

Для ввода и вывода используют системный класс System и два его объекта — in и out. Но на практике чаще всего вместо in используют объект Scanner, чтобы можно было более гибко управлять вводом данных.

// подключаем класс Scanner import java.util.Scanner; // класс с программой public class Program < // основная функция public static void main(String[] args) < // создаём новый объект ввода, через который будем дальше работать Scanner in = new Scanner(System.in); // выводим строку System.out.print("Введите имя: "); // создаём переменную name и помещаем в неё то, что пользователь введёт с клавиатуры String name = in.nextLine(); // выводим ещё одну строку System.out.print("Возраст: "); // так же запоминаем возраст в другую переменную int age = in.nextInt(); // просим ввести рост System.out.print("Введите рост: "); // запоминаем введённое значение float height = in.nextFloat(); // выводим строку с результатом System.out.printf("Имя: %s Возраст: %d Рост: %.2f \n", name, age, height); // закрываем наш объект ввода, потому что пока он больше не нужен in.close(); >>

Условные операторы if и switch

Работают так же, как в C и в любых современных языках высокого уровня. Главное здесь — следить за фигурными скобками и не перепутать, что к чему относится. Проще всего это регулировать отступами:

// числа для сравнения int num1 = 6; int num2 = 8; // если первое больше второго if(num1>num2) < // выводим результат System.out.println("Первое число больше второго"); >// если первое условие не выполнилось — можем проверить второе else if(num1 // если и это условие не выполнилось else< // выводим финальное сообщение System.out.println("Числа равны"); >

У оператора множественного выбора есть особенность: ему не нужны фигурные скобки для действий в каждом случае. Компьютер по синтаксису понимает, что к чему относится, и выбирает нужный вариант.

// число для сравнения int num = 8; // сравниваем значение этого числа с нашими вариантами switch(num)< // если число = 1 case 1: // выводим сообщение System.out.println("число равно 1"); // выходим из дальнейших проверок break; // если число = 8 case 8: System.out.println("число равно 8"); // увеличиваем число на 1 num++; break; // если число = 9 case 9: System.out.println("число равно 9"); break; // если ни один из вариантов не подошёл default: System.out.println("число не равно 1, 8, 9"); >

Циклы

В Java есть три основных вида циклов:

  • for — с известным числом повторений и счётчиком;
  • do — с проверкой условия до цикла;
  • while — условие проверяется после первого выполнения цикла.

Ещё есть два полезных оператора:

  • break — прерывает цикл в любой момент;
  • continue — сразу переходит к следующему витку цикла без выполнения остальных команд.
// цикл со счётчиком // задаётся начальное значение, условие и шаг цикла for (int i = 1; i < 9; i++)< // тело цикла System.out.printf("Квадрат числа %d равен %d \n", i, i * i); >// то же самое с циклом do int j = 1; // начинаем цикл do < // выводим результат System.out.printf("Квадрат числа %d равен %d \n", i, i * i); // увеличиваем переменную цикла j++; >// проверяем условие цикла while (j < 9); // и то же самое с циклом while int k = 1; // начинаем цикл и сразу проверяем условие while (k < 10)< // выводим результат System.out.printf("Квадрат числа %d равен %d \n", k, k * k); // увеличиваем переменную цикла k++; >

Функции (они же методы)

Так как каждая программа — это описание какого-то класса, то функции в Java — это и есть методы этого класса. Функций (или методов) может быть сколько угодно, главное — соблюдать правила описания классов. Покажем на примере:

// программа — класс public class Program < // публичная часть, доступная всем // основная функция-метод main public static void main (String args[])< // вызваем методы (функции) в любое время hello(); welcome(); >// метод hellо(), который не передаёт и не принимает никаких аргументов void hello() < System.out.println("Привет!"); >// метод welcome() void welcome() < System.out.println("Это журнал Код."); >>

Классы

В Java всё построено на классах, от самой программы до реализаций различных функций. Конечно, можно не использовать классы и работать в чисто процедурном стиле, но в Java так не принято. Это ООП-язык с родной поддержкой классов на всех уровнях.

Сами классы объявляются и используются так же, как и в любом другом ООП-языке:

// объявляем новый класс с информацией о заказанном товаре class Order < // переменные класса String name; // название int cost; // стоимость // метод класса void displayInfo()< // выводим информацию о заказе System.out.printf("Заказ: %s \tСтоимость: %d\n", name, cost); >>

Объекты

Объекты в Java работают по тому же принципу, что и все объекты в ООП: можно создавать сколько угодно объектов на основе классов и делать их любой сложности.

Обычно используют классы, прописанные в том же файле, что и программа. Если нужно использовать класс из другой программы, её подключают отдельно. Вот самый простой способ сделать объект на основе предыдущего класса с заказом:

// программа — тоже класс public class Program < // основная функция-метод main public static void main (String args[])< // создаём новый объект на основе класса ниже Order new_order; // заполняем данные new_order.name = "Айфон"; new_order.cost = 9999; // вызываем метод класса new_order.displayInfo(); >> // объявляем новый класс с информацией о заказанном товаре class Order < // переменные класса String name; // название int cost; // стоимость // метод класса void displayInfo()< // выводим информацию о заказе System.out.printf("Заказ: %s \tСтоимость: %d\n", name, cost); >>

Источник

Java/Основные понятия

В отличие от многих других языков, Java позволяет записывать идентификаторы на русском языке (названия переменных, функций, классов). Это удобно для русскоязычных программистов-любителей и для небольших локальных программ. Но если проект не для внутреннего употребления, то лучше, из соображений совместимости и переносимости, писать идентификаторы латинскими буквами.

Класс [ править ]

Класс есть ключевое понятие в объектно-ориентированном программировании, под которое и заточена Java. Класс описывает содержание и поведение некой совокупности данных и действий над этими данными. Объявление класса производится с помощью ключевого слова class . Пример: class < имя_класса > < // содержимое класса >.

К примеру, если мы моделируем прямоугольную комнату классом Комната , то данными могут быть длина, ширина и высота, двери, электрические розетки, мебель. Заметим, что на уровне класса мы ещё не знаем, о которой комнате идет речь, но точно знаем, что это не ящик (который тоже имеет длину, высоту и ширину), а именно комната. Действиями могут быть вычисление объема, помещение и изъятие мебели, открытие дверей. Чтобы вычислить объем комнаты или наклеить обои, нам не нужны ее размеры, о своих размерах каждая конкретная комната знает сама.

Наследование [ править ]

Классы могут наследовать методы и данные один другого, кроме конструкторов и инициализаторов. Наследование реализуется с помощью ключевого слова extends ( class extends ). Если существуют ящик и комната, объем которых вычисляется перемножением трех параметров, то можно определить материнский класс для двух вышеперечисленных классов, чтобы в нем определить вычисление объема, а наследники будут только пользоваться унаследованным свойством, а не переписывать его несколько раз. В то же время при желании любой из наследников может перегрузить унаследованное свойство. Так, например, если в комнате находится какой-то предмет и объем комнаты не должен включать объема этого предмета, то функция вычисления объема уже не будет одинаковой для ящика и комнаты.

Объект [ править ]

Object — это экземпляр класса. В нашем примере это может быть какая-то конкретная комната с конкретными размерами, причем количество комнат не ограничено. Предположим, у нас есть два экземпляра комнат: спальня и кабинет. Теперь мы можем, совершенно не зная, с какой комнатой имеем дело, узнать ее объем, т.к. вычисление объема — это свойство, которое работает для любой комнаты.

Интерфейс [ править ]

Interface описывает предполагаемое поведение класса, не упоминая конкретных действий. Создаётся интерфейс с помощью ключевого слова interface ( interface ). Для того чтобы унаследовать (реализовать) классом интерфейс, используется ключевое слово implements ( class implements ).А между собой интерфейсы унаследуются всё тем же словом extends . Для нашего примера можно создать интерфейс Объемный, в котором будет сказано, что класс, поддерживающий данный интерфейс, должен уметь возвращать объем. В таком случае мы можем сказать, что и Комната, и Ящик поддерживают интерфейс Объемный

Ссылка [ править ]

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

От абстракции к программированию [ править ]

Теперь давайте попробуем записать пример с комнатами на языке Java. Сначала создадим интерфейс.

interface Capacity  public double getCapacity(); //Заметим, что у метода пока нет тела > 

Класс Room и Box поддерживают интерфейс Capacity и могут выглядеть так:

class Room implements Capacity  public double width; public double height; public double length; public Box inner; //ссылка @Override public double getCapacity()  return width * height * length; > > class Box implements Capacity  public double width; public double height; public double length; @Override public double getCapacity()  return width * height * length; > > 

Не будем пока обращать внимания на слово public , об этом мы поговорим позже в разделе Область видимости. А обратим внимание на то, что оба класса как две капли воды похожи друг на друга. Давайте вынесем одинаковую функциональность в общий класс-предок с названием Base :

class Base implements Capacity  public double width; public double height; public double length; @Override public double getCapacity()  return width * height * length; > > class Box extends Base  > class Room extends Base  > 

Допустим, что в любой комнате обязательно находится один объект определенного объёма и объем комнаты не включает объема данного объекта. Тогда класс Room будет выглядеть так:

class Room extends Base  public Box inner; @Override public double getCapacity()  return super.getCapacity() - inner.getCapacity(); > > 

Обратите внимание, что мы перезаписали метод getCapacity (строки 4-7) и теперь объем комнаты не включает объема внутреннего объекта.

Ну вот и пришло время проверить все то, что мы написали. Для проверки создадим еще один класс.

class Test  public static void main(String[] args)  Box box1 = new Box(); box1.width = 1.0; box1.height = 2.0; box1.length = 3.0; Room workRoom = new Room(); workRoom.width = 10.0; workRoom.height = 20.0; workRoom.length = 30.0; workRoom.inner = box1; System.out.println("Объем ящика : " + box1.getCapacity()); System.out.println("Объем комнаты : " + workRoom.getCapacity()); > > 

C:\>java Test
Объем ящика : 6.0
Объем комнаты : 5994.0
C:\>_

Источник

Язык программирования Java SE 8. Подробное описание.

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

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

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

Язык программирования Java — язык относительно высокого уровня, что проявляется, в частности, в том, что детали представления машинного кода в языке недоступны.

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

Язык не включает ни одной небезопасной конструкции, такой как доступ к массиву без проверки диапазонов индексирования, поскольку такие небезопасные конструкции могут приводить к неопределенному поведению программы.

Программа на языке Java обычно компилируется в набор команд байт-кода и бинарный формат, определенный в спецификации виртуальной машины Java The Java Virtual Machine Specification, Java SE 8 Edition.

Источник

Оцените статью