Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
package ai201.ivanov;
/**
* Это специальный комментарий для документирования (Doc comment).
* С помощью специальной утилиты (javadoc), такие комментарии можно превратить в HTML-странички,
* которые вместе создают документацию к вашей программе.
* Для удобства, здесь можно использовать специальные ссылки {@link Main} и <i>HTML-тэги</i>
*/
public class Main {
/**
* Этот метод является "точкой входа" приложения. В проекте может быть только один метод с такой сигнатурой
* @param args аргументы при запуске приложения
*/
public static void main(String[] args) {
// Это однострочный комментарий (single line comment)
/*
* Это комментарий в виде блока (block comment)
*/
// TODO: это специальный TODO-комментарий. Тут можно описать, что нужно доделать на каком-то участке кода
// FIXME: это тоже TODO-комментарий, обычно тут мелкие баги и что нужно исправить на данном участке кода
// TODO:2019-09-03:NickGodov: дописать вывод данных в файл
int my_variable = 5; /* Комментарии после statement должны быть выровнены слева */
int my_other_variable = 999; /* с помощью табуляции */
// Если нужно закомментировать код, то каждая строчка комментируется однострочным комментарием
// int my_old_variable = 100;
// int my_other_old_variable = 200;
// Перед комментарием принято оставлять пустую строку
int number = 924;
}
}int spd = 25; // ПЛОХО: Можно, но не рекомендуется, т.к. название не информативно
int carminspd = 25; // ПЛОХО: Не экономьте на названиях переменных!
int carMinSpeed = 25; // ХОРОШО: Название переменной говорит само за себя
int s = 0; // МОЖНО: однобуквенные допускаются, только если это какие-то короткоживущие бросовые переменные
int speed = 150; // ХОРОШО: Нормально, понятно, что переменная отвечает за скорость
int Speed = 150; // ПЛОХО: Крайне не рекомендуется, переменные не должны начинаться с капса
int SPEED = 150; // ПЛОХО: Крайне не рекомендуется, полностью капсом пишутся константы
const int MIN_SPEED = 25; // НЕЛЬЗЯ: в Java const не используется (хотя это зарезервированное слово)
final int MIN_SPEED = 25; // ХОРОШО: в Java для констант используется final
int моя_переменная = 356; // ПЛОХО: Только латиница
int DŽDžDzȯȺώϷЂ = 145; // ПЛОХО: Только латиница
int moya_peremennaya = 29; // ПЛОХО: Транслит - это полный моветон, только английский!
int $myvar = 100; // ПЛОХО: Теоретически можно, но НЕ РЕКОМЕНДУЕТСЯ
int _myvar = 100; // ПЛОХО: Теоретически можно, но НЕ РЕКОМЕНДУЕТСЯ
int 2pac = 0; // НЕЛЬЗЯ: с цифры начинать нельзя
int %d = 5; // НЕЛЬЗЯ: с других знаков начинать нельзя
int 'f' = 5; // НЕЛЬЗЯ: с кавычек начинать нельзя
// Если название переменной состоит из двух слов
int max_speed = 150; // ПЛОХО: Использовать _ для отделения слов не в константах не рекомендуется
int MaxSpeed = 150; // ПЛОХО: Крайне не рекомендуется, переменные не должны начинаться с заглавной буквы
int maxSpeed = 150; // ХОРОШО: Вот так нормально, используется lowerCamelCase
final int MAX_SPEED = 150; // ХОРОШО: Константы пишутся капсом, каждое слово отделяется _int a = 5;
int b = 4;
int min;
// Так нужно оформлять обычный if
if (a >= b) {
min = b;
}
// Так нужно оформлять if-else
if (a >= b) {
min = b;
} else {
min = a;
}
// Так нужно оформлять if-else if-else
if (a > b) {
min = b;
} else if (a < b) {
min = a;
} else {
min = a;
}
// В Java используется тернарный оператор
min = (a >= b) ? b : a;
// Это равнозначно следующему выражению
if (a >=b) {
min = b;
} else {
min = a;
}
// Так оформляется switch
switch (a) {
case 1:
// что-то делаем
break;
case 2:
// делаем что-то другое
break;
default:
// это выполняется в том случае, если ни одно из кейсов не выполнился
}int progression = 0;
// Так оформляется for
for (int i=0; i < 5; i++) {
progression +=i;
}
// ПЛОХО: так оформлять циклы не рекомендуется
for (int i=0; i < 5; i++) progression +=i;
// МОЖНО: если тело цикла состоит из одного statement'а, то можно опустить
// фигурные скобки
for (int i=0; i < 5; i++)
progression +=i;
// Пустой for
for (int j=0; j < 10; j++);
// Так оформляется while
int iterator = 0;
while (iterator < 10) {
// делаем что-то в цикле
iterator++;
}
// Так оформляется do-while
int loops = 10;
do {
// что-то делаем
loops--;
} while (loops > 0);
// Также, в Java есть аналог foreach
int[] array = { 1, 2, 3, 4, 5 };
int sum = 0;
for(int i : array) {
sum += i;
}
// Этот же цикл можно представить обычным for`ом
for(int i = 0; i < 5; i++) {
sum += array[i];
}// Объявление массивов
/*
* ХОРОШО: согласно всем соглашениям по коду и различным рекомендациям, квадратные скобки
* ставят ПОСЛЕ ТИПА ДАННЫХ
*/
int[] goodArray;
/*
* ПЛОХО: компилятор не выдаст ошибку, но такой синтаксис делает код менее читабельным
*/
int badArray[];
/*
* НЕЛЬЗЯ: при объявлении массива нельзя указать его размерность.
* Java не выделит память, пока массив не будет инициализирован
*/
int[5] anotherBadArray;
// Объявления многомерных массивов
int [][] twoDimensionalArray;
int [][][] threeDimensionalArray;
// Инициализация массивов
goodArray = new int[10]; // Инициализируем массив с 10 элементами
goodArray[0] = 15; // Присваиваем значение первому элементу массива
goodArray[1] = 25; // Присваиваем значение второму элементу массива
twoDimensionalArray = new int [5][4]; // Двумерный массив 5х
twoDimensionalArray[0] = new int[4];
twoDimensionalArray[1] = new int[8]; // ПЛОХО: Компилятор проглотит, но по факту выделится место всего под 4 инта
twoDimensionalArray[0][0] = 1; // Присваиваем значение
twoDimensionalArray[1][5] = 5; // НЕЛЬЗЯ: Компилятор выдаст ошибку
System.out.print(twoDimensionalArray[1][6]); // НЕЛЬЗЯ: Компилятор выдаст ошибку
// Объявление с инициализацией
int[] quickArray = {1, 2, 3 ,4}; // Объявляем и сразу заполняем данные. Компилятор выделит место под 4 инта
quickArray[5] = 6; // НЕЛЬЗЯ: Компилятор выдаст ошибку, т.к. индекс выходит за пределы массива
int[][] quick2DArray = {
{1 ,2 ,3},
{1, 3, 4}
};/*
* Синтаксис функции:
* [1-модификаторы доступа] [2-тип возвращаемого значения] [3-имя]([4-аргументы]) [5-список исключений] {
* 6- тело функции
* }
*
* 1 - модификаторы доступа: на данный момент они нас не интересует, можно ничего не писать или писать private
* 2 - тип возвращаемого значения - тип данных либо void, если функция ничего не возвращает
* 3 - ограничения как и на имена переменных, но есть дополнительные правила наименования, о них ниже
* 4 - список аргументов через запятую. Например (int a, double b). Если нет аргументов - пустые скобки
* 5 - исключение пока не рассматриваем, если их нет, то просто ничего не пишут
* 6 - тело функции, в нем происходит выполнение функции. Если есть возвращаемый тип данных - должен быть return
*/
private int findMinimum(int a, int b) {
int min;
min = (a < b) ? a : b;
return min;
}
/*
* Название метода начинается с маленькой буквы, если несколько слов - используется lowerCamelCase.
* Первое слово должно быть глаголом (т.к. метод, как правило, "что-то делает"), остальные слова могут быть
* прилагательными, существительными и тд. Символ _ крайне желательно не использовать (кроме юнит-тестов)
*/
// ХОРОШО: с маленькой буквы, первое слово - глагол
private void drawCircle() {}
// ПЛОХО: Символы $ и _ не используем
private void $er () {}
// ПЛОХО: используйте camelCase для названия методов
private void draw_circle () {}
// ПЛОХО: название метода должно начинаться с маленькой буквы
private void Draw() {}
// ПЛОХО: первое слово должно быть глаголом
private void circle() {}public boolean sleepIn(boolean weekday, boolean vacation) {
return !weekday || vacation;
}---------
| |
| |
| |
---------
First player: 0 0
---------
| X |
| |
| |
---------
Second player: 1 1
---------
| X |
| 0 |
| |
---------
First player: 0 1
---------
| X X |
| 0 |
| |
---------
Second player: 2 2
---------
| X X |
| 0 |
| 0 |
---------
First player: 0 2
First player won!
Process finished with exit code 0 public static void drawField(int[][] array) {
System.out.println("---------");
for (int i = 0; i < 3; i++) {
System.out.print("| ");
for (int j = 0; j < 3; j++) {
String symbol = " ";
if (array[i][j] != 0)
symbol = array[i][j] == 1 ? "X" : "0";
System.out.print(symbol + " ");
}
System.out.println("|");
}
System.out.println("---------");
}public class Box {
double width;
double height;
double depth;
}public class Main {
public static void main(String[] args) {
Box myBox = new Box();
}
}myBox.width = 100;public class Main {
public static void main(String[] args) {
// Создаем объект типа Box
Box myBox = new Box();
// Присваиваем значения переменным экземпляра myBox
myBox.width = 10;
myBox.height = 20;
myBox.depth = 15;
// Рассчитываем объем коробки
double volume = myBox.width * myBox.height * myBox.depth;
System.out.println("Объем равен: " + volume);
}
}public class Box {
double width;
double height;
double depth;
}public class Main {
public static void main(String[] args) {
Box myBox1 = new Box();
Box myBox2 = new Box();
// Присваиваем значения для mybox1
myBox1.width = 10;
myBox1.height = 20;
myBox1.depth = 15;
// Присваиваем значения для mybox2
myBox2.width = 3;
myBox2.height = 6;
myBox2.depth = 9;
double volume;
// объем первой коробки
volume = myBox1.width * myBox1.height * myBox1.depth;
// будет выведено 3000
System.out.println("Объем равен: " + volume);
// объем второй коробки
volume = myBox2.width * myBox2.height * myBox2.depth;
// будет выведено 162
System.out.println("Объем равен: " + volume);
}
}Объем равен: 3000.0
Объем равен: 162.0[возвращаемый тип] имя ([список параметров]) {
[тело метода]
}class Box {
double width;
double height;
double depth;
void getVolume() {
System.out.print("Объем коробки равен ");
System.out.println(width * height * depth);
}
}mybox1.volume();
mybox2.volume();public String errMessage;
private AccountBalance balance;
private boolean isError(byte status) {}
public class Account {}public class Account {
private double balance;
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}Cart cart = new Cart();
cart.addItem(new Item("Клавиатура", 2000));public class Cart {
private Item[] stack; // массив для реализации стека
private int topIndex; // указатель на вершину стека
// При создании корзины мы должны
// указать максимальное количество элементов
// в корзине
public Cart(int capacity) {
stack = new Item[capacity];
topIndex = -1;
}
// Добавление нового товара в корзину
public boolean addItem(Item item) {
return push(item);
}
// Приватный метод, который реализует добавление в стек
private boolean push (Item item) {
// Добавляем товар в стек
return true; // или false если не стек переполнен
}
// Удаление последнего добавленного товара в корзину
public Item deleteLastAddedItem() {
return pop();
}
// Приватный метод, который реализует извлечение из стека
private Item pop() {
return new Item(); // Извлеченный из стека товар
}
}Cart cart = new Cart();
cart.addItem(new Item("Клавиатура", 2000));
// Данная инструкция вызовет ошибку компиляции
cart.topIndex = 4;class Vehicle {}
class Car extends Vehicle {}CarWheelclass Car {
private Wheel[] wheels;
public Car() {
this.wheels = new Wheel[4];
}
}
class Wheel {}TimeSpan (из входящего TimeSpan считываются часы и минуты для создания нового TimeSpan);Человек <фамилия> <имя>, возраст: <возраст>Студент группы <группа>, <фамилия> <имя>, возраст: <возраст>. Номер студенческого билета: <номер>Преподаватель кафедры <кафедра>, <фамилия> <имя>, возраст: <возраст>. Зарплата: <зарплата>
push(), которая добавляет элемент в стек;


public class Human {
private String name; // private это "-"
Boolean gender = true; // default это "~"
protected long chromosome; // protected это "#"
public int age; // public это "+"
// Статические атрибуты подчеркиваются
public static long dna;
// Константы можно отобазить как readOnly
final int SECRET = 924;
/* Как правило, конструкторы
* изображаются как обычные методы */
public Human() {}
public Human (String name) {this.name = name;}
/* Методы отображаются как
* [-~#+]имя(тип_аргументов): возвращаемый тип
* Например: public String foo (int a, double b)
* будет +foo(int, double): String */
public void breath() {}
private void sleep(int hours) {}
protected boolean sneeze() { return true; }
int run (int speed, String direction) { return 0; }
public static int calculateAge() { return 0; }
}




















distanceFromOrigin() должны учитывать координату z и возвращать расстояние по формуле .TimeSpanTimeSpanTimeSpanpublic void subtract(TimeSpan span)public void scale(int factor)// Каждый объект класса BankAccount представляет данные одного
// счета пользователя, включая имя и баланс счета
public class BankAccount {
String name;
double balance;
public void deposit(double amount) {
balance = balance + amount;
}
public double getBalance() {
return this.balance;
}
public boolean withdraw(double amount) {
balance = balance - amount;
return true;
}
}public boolean transfer(BankAccount receiver, double amount)interface MyInterface{
void interfaceMethod();
}
abstract class MyAbstractClass implements MyInterface {
abstract void abstractMethod();
}
class MyClass extends MyAbstractClass {
@Override
void abstractMethod() {}
@Override
public void interfaceMethod() {}
}

abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
abstract String makeSound();
}interface Movable {
void setX(double x);
void setY(double y);
double getX();
double getY();
void moveTo(double x, double y);
}interface GPS {
double[] getCoordinates();
}
interface Cellular {
void makeCall();
void receiveCall();
}class Car {
private int price;
private int year; // ГОД ВЫПУСКА
private int horsePower;
// ДОБАВЬТЕ КОНСТРУКТОР С 3 АРГУМЕНТАМИ
// ДОБАВЬТЕ ГЕТТЕРЫ И СЕТТЕРЫ
}public class NameSorter implements Comparator {
@Override
public int compare(Object o1, Object o2) {
if (o1 instanceof Student && o2 instanceof Student) {
Student s1 = (Student) o1;
Student s2 = (Student) o2;
return s1.getName().compareTo(s2.getName());
}
return 0;
}
}
class FileManager {
public void saveToFile(String text, String path) {
// тело метода
}
}
class Document {
// класс Document содержит ссылку на объект
// класса FileManager
private FileManager manager;
private StringBuilder contents;
private String path;
public Document(FileManager manager, String path) {
this.manager = manager;
this.contents = new StringBuilder();
this.path = path;
}
public void saveDocument() {
manager.saveToFile(contents.toString(), path);
}
}// Суперкласс
class Person {
String firstName;
String lastName;
}
// Подкласс
class Student extends Person {
String group;
long id;
}
public class Main {
public static void main(String[] args) {
Student student = new Student();
student.firstName = "Иван";
student.lastName = "Иванов";
student.id = 10000L;
}
}// Суперкласс
class Person {
String firstName;
String lastName;
}
class UniversityMember{}
// МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ ЗАПРЕЩЕНО!
// ЭТОТ КОД ВЫЗОВЕТ ОШИБКУ КОМПИЛЯТОРА
class Student extends Person, UniversityMember {
String group;
long id;
}class Vehicle {
public void moveTo(Point destination) {
// тело метода
}
}
class Truck extends Vehicle {
public void carryWeight(double weight) {
// тело метода
}
}
class DumpTruck extends Truck {
public void dumpWeight() {
// тело метода
}
}class Shape2D {
private double width;
private double height;
}
class Rectangle extends Shape2D {
// ОШИБКА НА ЭТАПЕ КОМПИЛЯЦИИ
public double getArea() {
return width * height;
}
}class Shape2D {
protected double width;
protected double height;
}
class Rectangle extends Shape2D {
// Данный код корректен
public double getArea() {
return width * height;
}
}class Shape2D {
private double width;
private double height;
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
class Rectangle extends Shape2D {
// Данный код корректен
public double getArea() {
return getWidth() * getHeight();
}
}class Animal {
public Animal() {
System.out.println("Конструктор класса Animal");
}
}
class Mammal extends Animal {
public Mammal() {
System.out.println("Конструктор класса Mammal");
}
}
class Cat extends Mammal {
public Cat() {
System.out.println("Конструктор класса Cat");
}
}
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
}
}Конструктор класса Animal
Конструктор класса Mammal
Конструктор класса Catpublic class Main {
public static void main(String[] args) {
Box3D box = new Box3D(100);
}
}
class Box {
public double width;
public double height;
public Box(double width, double height) {
this.width = width;
this.height = height;
}
}
class Box3D extends Box {
public double depth;
// НЕТ ЯВНОГО ВЫЗОВА КОНСТРУКТОРА СУПЕРКЛАССА !
public Box3D(double depth) {
this.depth = depth;
}
}public class Main {
public static void main(String[] args) {
Box3D box = new Box3D(100, 200, 300);
}
}
class Box {
public double width;
public double height;
public Box(double width, double height) {
this.width = width;
this.height = height;
}
}
class Box3D extends Box {
public double depth;
public Box3D(double width, double height, double depth) {
super(width, height); // <-- ВЫЗОВ КОНСТРУКТОРА СУПЕРКЛАССА
this.depth = depth;
}
}class Box {
private double width;
private double height;
public Box(double width, double height) {
this.width = width;
this.height = height;
}
// Площадь прямоугольника
public double getArea() {
return width * height;
}
}
class Box3D extends Box {
private double depth;
public Box3D(double width, double height, double depth) {
super(width, height); // <-- ВЫЗОВ КОНСТРУКТОРА СУПЕРКЛАССА
this.depth = depth;
}
// Мы используем метод суперкласса, чтобы
// посчитать площадь трехмерной коробки
public double get3DArea() {
double area2D = super.getArea(); // <---- Вызов метода суперкласса
return area2D * depth;
}
}public class Main {
public static void main(String[] args) {
Box3D box = new Box3D(100, 200, 300);
System.out.println(box.getInfo());
}
}
class Box {
private double width;
private double height;
public Box(double width, double height) {
this.width = width;
this.height = height;
}
public String getInfo() {
return "Объект Box {" +
"ширина = " + width +
", высота = " + height +
'}';
}
}
class Box3D extends Box {
private double depth;
public Box3D(double width, double height, double depth) {
super(width, height);
this.depth = depth;
}
}Объект Box {ширина = 100.0, высота = 200.0}Box3D box = new Box3D(100, 200, 300);
System.out.println(box.getInfo());class Box3D extends Box {
private double depth;
public Box3D(double width, double height, double depth) {
super(width, height);
this.depth = depth;
}
public String get3DInfo() {
return "Объект Box3D {" +
"ширина = " + super.getWidth() +
", высота = " + super.getHeight() +
", глубина = " + depth +
'}';
}
}class Box {
private double width;
private double height;
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public Box(double width, double height) {
this.width = width;
this.height = height;
}
public String getInfo() {
return "Объект Box {" +
"ширина = " + width +
", высота = " + height +
'}';
}
}public class Main {
public static void main(String[] args) {
Box3D box = new Box3D(100, 200, 300);
System.out.println(box.get3DInfo());
}
}Объект Box3D {ширина = 100.0, высота = 200.0, глубина = 300.0}public class Main {
public static void main(String[] args) {
Box box = new Box(600,600);
System.out.println(box.getInfo());
Box3D box3D = new Box3D(100, 200, 300);
System.out.println(box3D.getInfo());
}
}
class Box {
// Поля, конструктор и геттеры\сеттеры
public Box(double width, double height) {
this.width = width;
this.height = height;
}
public String getInfo() {
return "Объект Box {" +
"ширина = " + width +
", высота = " + height +
'}';
}
}
class Box3D extends Box {
// Поля, конструктор и геттеры\сеттеры
@Override
public String getInfo() {
return "Объект Box3D {" +
"ширина = " + super.getWidth() +
", высота = " + super.getHeight() +
", глубина = " + depth +
'}';
}
}Объект Box {ширина = 600.0, высота = 600.0}
Объект Box3D {ширина = 100.0, высота = 200.0, глубина = 300.0}Box box = new Box(600, 600);
System.out.println(box.getInfo());
Box3D box3D = new Box3D(100, 200, 300);
System.out.println(box3D.getInfo());final class A {}
class B extends A {
// ВЫЗОВЕТ ОШИБКУ КОМПИЛЯЦИИ !
}
class C {
final public void foo() {}
}
class D extends C {
@Override
public void foo() {} // <-- Ошибка компиляции !
}public class Main {
public static void main(String[] args) {
Box box = new Box();
System.out.println(box.toString());
}
}
class Box{}com.company.Box@1540e19dpublic class Main {
public static void main(String[] args) {
Box box = new Box(100, 200);
System.out.println(box.toString());
}
}
class Box {
private double width;
private double height;
public Box(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public String toString() {
return "Box{" +
"width=" + width +
", height=" + height +
'}';
}
}Box{width=100.0, height=200.0}public class Main {
public static void main(String[] args) {
Box box = new Box(100, 200);
System.out.println(box.toString());
System.out.println(box);
}
}Box{width=100.0, height=200.0}
Box{width=100.0, height=200.0}




