JAVA CORE

Проработать:

  1. Java 15 и IntelliJ IDEA
  2. Java Core. Вопросы к собеседованию, ч. 1
  3. Особенности применения модификаторов в Java
  4. Загрузка классов в Java. Теория
  5. Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений
  6. JAVA 8

  7. MetaSpace in Java 8
  8. Java 8 Учебник: теория и примеры
  9. Новое в Java 8
  10. Java 8 Ссылки на методы
  11. Java 8 многопоточность
  12. Java 8: Овладейте новым уровнем абстракции
  13. Хватит писать циклы! Топ-10 лучших методов для работы с коллекциями из Java 8
  14. Java 8 Ссылки на методы
  15. Примитивные типы в Java: Не такие уж они и примитивные

Основные разделы:

JAVA Versions

JAVA 8

JAVA 9

JAVA 10

JAVA 13

JAVA 14

JAVA 15

JAVA 21

awt.image

Быстрое получение размеров изображения из файла

BufferedImage bimg = ImageIO.read(new File(filename));
int width          = bimg.getWidth();
int height         = bimg.getHeight();
        

UI десктоп реализация

JDK

Содержит

JEP(JDK Enhancement Proposals)

JEP - технологии которые были добавлены в JAVA. Имеют номер. openjdk-jeps

JAR

JAR(Java ARchive) - ZIP-архив, в котором содержится часть программы на языке Java.

Из чего состоит jar - из классов и файла MANIFEST.MF(хранит путь к файлу с методом main)

Примитивы:

Целочисленные:

  1. byte(1 байта - -128..127)
  2. short(2 байта - -32,768..32,767)
  3. int(4 байта - -2,147,483,648..2,147,483,647)
  4. long(8 байта - -9,223,372,036,854,775,808..9,223,372,036,854,775,807)

С плавающей точкой:

  1. float(4 байта - -3.4E+38..3.4E+38)
  2. double(8 байта - -1.7E+308..1.7E+308)

Символьный:

  1. char - символ(2 байта - UTF-16). Можно создавать через символ - 'a' или через номер символа в UTF-16 - 61(исчисление от 0 до 65,535).

Логическое:

  1. boolean(1 байта - true, false) - логический.

Литералы

Для явного указания типа чисел используются суффиксные литералы. В приоритете символы верхнего регистра. Для var переменных, без литералов все числа будут int.

Пример

Литералы - не явное объявление примитивных типов данных.

  1. int - 25
  2. long - 25L
  3. double - 25.5
  4. float - 25.5F
  5. char - 'A'

Переполнение

Числовые переменные при переполнении не создадут исключение, а просто начнутся заново.

Переопределение

При переопределении метода можно сужать тип возвращаемого значения.

Уровни доступа

При переопределении класса разрешается расширить видимость метода. Сужать не разрешается(Полиморфизм, Барбары Лисков).

Class - нельзя объявить private или protected если это не внутренние классы.

Многомерный массив

int[][] a = {{1, 2, 3}, {4, 5, 6}};
//[[1,2,3],[4,5,6]]
        

Autoboxing/Unboxing - Автоупаковка/автораспаковка

Autoboxing/Unboxing - автоматическое преобразования примитивных типов в объектные и наоборот.

Autoboxing

Integer integer = 9;
        

Unboxing

int in = 0;
in = new Integer(9);
        

Integer

Integer immutable

Integer a = 200;
Integer b = a;
a++;
System.out.println(b); //200
        

Integer pool

От -128 до 127 - если создается объект без ключевого слова new будет использоваться pool. Integer(1) == Integer(1)