Преобразования в Java
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-11-01 21:04:22 +03:00
parent 981ebd2c59
commit 4bb3df2cd9
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
14 changed files with 93 additions and 1 deletions

View File

@ -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]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -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]]
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->

View File

@ -2,6 +2,7 @@
aliases:
- ссылочных типов
- ссылочные типы
- ссылочный тип
tags:
- maturity/🌱
date: 2024-10-19

View File

@ -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) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 KiB

View File

@ -0,0 +1 @@
825c987a75119c607296093dc849a8a5

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View File

@ -0,0 +1 @@
9cc729fe4212fb6a31182fb8ce5bb12f

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

View File

@ -0,0 +1 @@
825c987a75119c607296093dc849a8a5

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1 @@
9cc729fe4212fb6a31182fb8ce5bb12f