BufferedImage bimg = ImageIO.read(new File(filename));
int width = bimg.getWidth();
int height = bimg.getHeight();
JEP - технологии которые были добавлены в JAVA. Имеют номер. openjdk-jeps
JAR(Java ARchive) - ZIP-архив, в котором содержится часть программы на языке Java.
Из чего состоит jar - из классов и файла MANIFEST.MF(хранит путь к файлу с методом main)
Для явного указания типа чисел используются суффиксные литералы. В приоритете символы верхнего регистра. Для var переменных, без литералов все числа будут int.
Литералы - не явное объявление примитивных типов данных.
Числовые переменные при переполнении не создадут исключение, а просто начнутся заново.
При переопределении метода можно сужать тип возвращаемого значения.
При переопределении класса разрешается расширить видимость метода. Сужать не разрешается(Полиморфизм, Барбары Лисков).
Class - нельзя объявить private или protected если это не внутренние классы.
int[][] a = {{1, 2, 3}, {4, 5, 6}};
//[[1,2,3],[4,5,6]]
Автоматическое преобразования примитивных типов в объектные и наоборот.
Примитивы: int, long, double = быстрые, компактные, живут на стеке.
Обертки: Integer, Long, Double = полноценные объекты в heap.
Но нужно помнить что эти процессы занимают процессор: Создание/удаление объектов, скрываются JIT-оптимизации.
Integer integer = 9;
int in = 0;
in = new Integer(9);
| Обёртка | Диапазон кэша по умолчанию | Особенности |
|---|---|---|
| Integer | -128..127 | Можно расширить через -XX:AutoBoxCacheMax |
| Long | -128..127 | Фиксированный диапазон |
| Short | -128..127 | Фактически кэшируется почти весь диапазон short |
| Byte | -128..127 | Полный диапазон, все значения закэшированы |
| Character | 0..127 | ASCII/Unicode basic latin |
| Boolean | TRUE, FALSE | Всего 2 объекта на всю JVM |
Безопасная зона из кеша при котором стоимость autoboxing близка к нулю — это просто копирование указателя на предсозданный объект. Без использования 'new'.
Integer a = 200;
Integer b = a;
a++;
System.out.println(b); //200
От -128 до 127 - если создается объект без ключевого слова new будет использоваться pool. Integer(1) == Integer(1)