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);
Ещё есть метод сравнения .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<num2){
// выводим другой результат
System.out.println("Первое число меньше второго");
}
// если и это условие не выполнилось
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);
}
}