Инструменты пользователя

Инструменты сайта


develop:java:over

Общие сведения

Intellij Idea

Установка ubuntu

snap install intellij-idea-community --classic --stable
apt install default-jre (java --version)
apt install default-jdk (javac --version)

Сведения

Downloads

Про версии

Разнообразие терминов/комплектов вызывает сложности т.к. несколько проекций, по сути сводится вот к чему:

  • JDK - Java [SE] Development Kit, комплект инструментальных средств для разработки (SDK старое название)
  • JRE - Java Runtime Environment, только виртуальная машина, без компиляторов, для пользователей
  • Java SE - Standart Edition
  • Java EE - Enterprise Edition
  • Java ME - Mirco Edition
  • Java 6 она же Java SE 6 она же Java SE 1.6.0, тоже справедливо и для 7,8,9, по факту одно и тоже

Использование

При компиляции создается объект «*.class» содержащий байт код. При выполнении нужно указывать имя класса, а не имя файла
Имя файла должно совпадать с именем открытого класса

Все элементы программ на Java находятся в составе классов

:!: Минимальный пример
/*Класс Main должен хранится в файле Main.java (наверно как и любой другой класс)*/
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}
javac Main.java
  ls -> Main.java, Main.class
java Main - выполнение

Числа с плавающей точкой нельзя использовать в расчетах где ошибки округления недопустимы, есть спец класс «BigDecimal»

:!: Строки принимают шестнадцатеричные юникод последовательности типа «\u0000 - \uFFFF». Причем даже в комментарии может распознать и применить, например такой коммент приведет к ошибке «c:\users» т.к. есть «\u» О_О

Типы

:!: Тип boolean не конвертируется в числовое значение !

При объявлении переменных нужно указывать их тип, с недавних версий, локальным можно не указывать, если его можно вывести из первоначального значения, для этого указать ключевое слово «var»
Ключевое слово «final» используется для определения констант. Приветствуется именование заглавными буквами

Константа на весь класс задается словами static final, за пределами методов, модификатор public откроет ее для других классов

:!: Перечислимые типы, enum

enum Size {SMALL, MEDIUM, LARGE, EXTRA};
Size s = Size.MEDIUM // можно присвоить null

:!: Если результат вычисления приводит к переполнению, то мат функция вернет заведомо ложный результат, есть спец функции для обработки такого д-я (переполнение типов переменных имеется ввиду)

Приведение происходит с указанием типа в скобках перед переменной, некоторые преобразования могут происходить с потерями (пунктирные линии):

:!: Символьные строки являются неизменяемыми, всегда константы получается
Символьные строки сравниваются только методом mystring.equals(), оператор «==» только проверит хранятся ли они в одном участке памяти, так же есть метод compareTo()
null и length 0 разные вещи

Ввод/Вывод

:!:Консольный ввод. Нужен объект «Scanner»

import java.util.*;
 
Scanner in = new Scanner(System.in);
String allLine = in.nextLine();
String oneWord = in.next();
int oneDigit = in.nextInt(); /nextDouble(); 
 
// Еще есть тайный ввод
Console cons = System.console();
String username = cons.readLine ("User name: ");
char[] passwd = cons.readPasswi:Jrd ("Password: ") ;

:!: Начальный каталог определяется виртуальной машиной, если запускать из IDE то путь хз какой будет

:!: При запуске программы можно задать ей файлы для стандартных потоков ввода/вывода, например «java MyProg < inFile.txt > outFile.txt»

Управляющие конструкции

:!: Дробные числа нужно быть очень внимательным с ними и пользоваться всякими спец методами для работы с ними, например:

// Этот цикл никогда не завершится
for (double x = 0; x != 10; x += 0.1)
  // x перескочит с 9.99..998 на 10.999..9998. т.к. у 0.1 не существует точного двоичного представления

Массивы

Инициализируются отдельно, оператором new, int и boolean заполняются нулями и false с-но, объекты, в т.ч. String, заполняются значением null

:!: for each (условно). Перебираем элементы коллекции или класса если определен интерфейс «Iterable»
«for (int item: ArrayItems) {…}»

В операции «[]» автоматически проверяются границы массива

:!:
 
develop/java/over.txt · Последнее изменение: 2023/05/05 04:22 — admin