diff --git a/dev/java/Расширяющее преобразование в Java.md b/dev/java/Расширяющее преобразование в Java.md new file mode 100644 index 00000000..7c21e9bb --- /dev/null +++ b/dev/java/Расширяющее преобразование в Java.md @@ -0,0 +1,33 @@ +--- +aliases: + - widening conversions +tags: + - maturity/🌱 +date: 2024-11-01 +--- +Расширяющие преобразования (widening conversions) позволяют в Java автоматически преобразовывать значение одного типа к другому, более широкому типу без явного приведения. + +``` +byte → short → int → long → float → double + ↑ + char +``` + +**Потеря точности**: +- int -> float +- long -> float (на больших значениях long) +- long -> double (на больших значениях long) + +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]] +**Родитель**:: +**Источник**:: +**Создана**:: [[2024-11-01]] +**Автор**:: +### Дополнительные материалы +- [[Сжимающее преобразование в Java]] + +### Дочерние заметки + + diff --git a/dev/java/Сжимающее преобразование в Java.md b/dev/java/Сжимающее преобразование в Java.md new file mode 100644 index 00000000..56f1a28f --- /dev/null +++ b/dev/java/Сжимающее преобразование в Java.md @@ -0,0 +1,31 @@ +--- +aliases: +tags: + - maturity/🌱 +date: 2024-11-01 +--- +Сужающие преобразования (narrowing conversions) позволяют в Java преобразовывать значение более широкого типа к более узкому типу, но такие преобразования **не выполняются автоматически** и требуют явного приведения. Сужающие преобразования могут привести к **потере данных** или **потере точности** и требуют внимания при их использовании. + +``` +double → float → long → int → short → byte + ↓ + char +``` + +- Преобразование int в short может привести к потере данных, если значение int выходит за пределы диапазона short (-32768, 32767). +- Преобразование double в float может привести к потере точности, так как float имеет меньше значащих разрядов, чем double. +- Преобразование float или double в int, short, byte приводит к усечению десятичной части, что также может вызвать потерю точности. + +*** +## Мета информация +**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]] +**Родитель**:: +**Источник**:: +**Создана**:: [[2024-11-01]] +**Автор**:: +### Дополнительные материалы +- [[Расширяющее преобразование в Java|Расширяющее преобразование в Java]] + +### Дочерние заметки + + diff --git a/dev/java/Ссылочный тип.md b/dev/java/Ссылочный тип.md index 551a0a1f..51ae1067 100644 --- a/dev/java/Ссылочный тип.md +++ b/dev/java/Ссылочный тип.md @@ -2,6 +2,7 @@ aliases: - ссылочных типов - ссылочные типы + - ссылочный тип tags: - maturity/🌱 date: 2024-10-19 diff --git a/dev/java/Странности в Java.md b/dev/java/Странности в Java.md index f58f5220..2516813e 100644 --- a/dev/java/Странности в Java.md +++ b/dev/java/Странности в Java.md @@ -6,6 +6,20 @@ tags: date: 2024-10-30 --- ## Арифметические +### Особые числа + +- +0.0, -0.0 + - Равны по equals, но различаются по toString +- Double.POSITIVE_INFINITY + - Больше всякого другого числа, положительное + - 1/Infinity = 0.0 + - Infinity+1=Infinity, Infinity+Infinity=Infinity +- Double.NEGATIVE_INFINITY + - Меньше всякого другого числа, отрицательное + - 1/-Infinity = -0.0 +- `Double.NAN` + - Не больше, не меньше и не равно никакому числу, в том числе себе + - Любая операция с NaN даст NaN ### Отсутствие переполнения ```java System.out.println(-Integer.MIN_VALUE) // -2147483648 @@ -28,11 +42,20 @@ System.out.println(Character.isDigit('⑤')); // false System.out.println(Character.getNumericValue('⑤') == 5); // true ``` ## Прочее +### Хранение массивов в памяти +``` +int[][] table = new int[2][500]; // 4056 байт, 1.4% +int[][] table = new int[500][2]; // 14016 байт, 350.4% +``` + +- [[../../../../knowledge/dev/java/Устройство объекта в памяти Java|Устройство объекта в памяти Java]] + - Мы создаём **только 2 объекта массива** (главный массив и два подмассива). На каждый массив выделяется небольшая дополнительная память для служебной информации, связанной с объектом. + - Мы создаём **500 подмассивов** (главный массив и 500 маленьких подмассивов). На каждый массив также выделяется дополнительная память для служебной информации о каждом объекте. ### polygenelubricants ```java System.out.println("polygenelubricants".hashCode()); // Integer.MIN_VALUE ``` -### +### Bugaga ```java class Hello { public static void main(String[] args) { diff --git a/meta/files/images/Pasted image 20241101204701.png b/meta/files/images/Pasted image 20241101204701.png new file mode 100644 index 00000000..83bcd0d9 Binary files /dev/null and b/meta/files/images/Pasted image 20241101204701.png differ diff --git a/meta/files/images/Pasted image 20241101204919.png b/meta/files/images/Pasted image 20241101204919.png new file mode 100644 index 00000000..ba691237 Binary files /dev/null and b/meta/files/images/Pasted image 20241101204919.png differ diff --git a/meta/files/images/comp/Pasted image 20241101204701.png b/meta/files/images/comp/Pasted image 20241101204701.png new file mode 100644 index 00000000..4b9bfd49 Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241101204701.png differ diff --git a/meta/files/images/comp/Pasted image 20241101204701.png.md5 b/meta/files/images/comp/Pasted image 20241101204701.png.md5 new file mode 100644 index 00000000..768f3304 --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241101204701.png.md5 @@ -0,0 +1 @@ +825c987a75119c607296093dc849a8a5 diff --git a/meta/files/images/comp/Pasted image 20241101204919.png b/meta/files/images/comp/Pasted image 20241101204919.png new file mode 100644 index 00000000..e1252f5f Binary files /dev/null and b/meta/files/images/comp/Pasted image 20241101204919.png differ diff --git a/meta/files/images/comp/Pasted image 20241101204919.png.md5 b/meta/files/images/comp/Pasted image 20241101204919.png.md5 new file mode 100644 index 00000000..4be0ae95 --- /dev/null +++ b/meta/files/images/comp/Pasted image 20241101204919.png.md5 @@ -0,0 +1 @@ +9cc729fe4212fb6a31182fb8ce5bb12f diff --git a/meta/files/images/webp/Pasted image 20241101204701.webp b/meta/files/images/webp/Pasted image 20241101204701.webp new file mode 100644 index 00000000..06613be8 Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241101204701.webp differ diff --git a/meta/files/images/webp/Pasted image 20241101204701.webp.md5 b/meta/files/images/webp/Pasted image 20241101204701.webp.md5 new file mode 100644 index 00000000..768f3304 --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241101204701.webp.md5 @@ -0,0 +1 @@ +825c987a75119c607296093dc849a8a5 diff --git a/meta/files/images/webp/Pasted image 20241101204919.webp b/meta/files/images/webp/Pasted image 20241101204919.webp new file mode 100644 index 00000000..8c58c04a Binary files /dev/null and b/meta/files/images/webp/Pasted image 20241101204919.webp differ diff --git a/meta/files/images/webp/Pasted image 20241101204919.webp.md5 b/meta/files/images/webp/Pasted image 20241101204919.webp.md5 new file mode 100644 index 00000000..4be0ae95 --- /dev/null +++ b/meta/files/images/webp/Pasted image 20241101204919.webp.md5 @@ -0,0 +1 @@ +9cc729fe4212fb6a31182fb8ce5bb12f