kotlinlang.org/docs/equality.html
์ฝํ๋ฆฐ์ equality ํ์ ์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
- ๊ตฌ์กฐ์ equality ( == : equals()๋ก ํ์ธํ๋ค.)
- ์ฐธ์กฐ equality (===: ๊ฐ์ ๊ฐ์ฒด์ ์ฐธ์กฐ ํฌ์ธํธ๋ฅผ ๋น๊ตํ๋ค.)
๊ตฌ์กฐ์ equality
๊ตฌ์กฐ์ equality๋ == ์ฐ์ฐ์ผ๋ก ํ์ธํ๊ณ , ๋ฐ๋ ์ฐ์ฐ์ != ์ผ๋ก ํ์ธํ๋ค.
๊ด๋ก์, a == b ํํ์ ๋ค์๊ณผ ๊ฐ์ด ์ ํ๋๋ค.
a?.equals(b) ?: (b == null)
a๊ฐ null์ด ์๋๋ฉด equals(Any?)๋ฅผ ํธ์ถํ๋ค. a๊ฐ null์ด๋ฉด b์ ์ฐธ์กฐ๊ฐ null๊ณผ ๊ฐ์์ง ํ์ธํ๋ค.
๋ช
์์ ์ผ๋ก null ๊ฐ๊ณผ ๋์ผํ์ง ๋น๊ตํ ๋๋ ์ต์ ํํ ๊ฒ์ ์๋ค. a == null์ ์๋์ ์ผ๋ก a === null๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ปค์คํ
equals ์ฒดํฌ ๊ตฌํ์ ํ๊ณ ์ ํ๋ค๋ฉด equals(other: Any?): Boolean์ ์ค๋ฒ๋ผ์ด๋ํ๋ฉด ๋๋ค. ๊ฐ์ ์ด๋ฆ์ ๋ค๋ฅธ signature๋ฅผ ์ฐ๋ ํจ์๋ค์, ์๋ฅผ ๋ค์ด์ equals(other: Foo)๋ ==์ != ์ฐ์ฐ์๋ฅผ ์ฐ๋ equality ํ์ธ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
๊ตฌ์กฐ์ equality๋ Comparable<...>์ ์ ์๋ ๋น๊ต์ ๊ด๋ จ์ด ์๊ณ , ์ค์ง ์ปค์คํ
equals(Any?) ๊ตฌํ๋ง์ด ์ฐ์ฐ์ ๋์์ ์ํฅ์ ์ค ์ ์๋ค.
์ฐธ์กฐ equality
์ฐธ์กฐ equality๋ === ์ฐ์ฐ์๋ก ํ์ธํ๊ณ , ๋ฐ๋ ์ฐ์ฐ์ !== ์ฐ์ฐ์๋ฅผ ์ด๋ค. a === b๊ฐ ์ฐธ์ผ ๊ฒฝ์ฐ, a, b ๋ ๋ค ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ์ด๋ค. Int์ ๊ฐ์ธ ๊ธฐ๋ณธ ์ ํ(primitive type)์ผ๋ก ๋ฐํ์์ ํ์๋๋ ๊ฐ์ ๊ฒฝ์ฐ === ํ์ธ์ == ์ฐ์ฐ๊ณผ ๋์ผํ๋ค.
Floating-point numbers(๋ถ๋ ์์์ ) equlity
Float ๋ Double(nullable ํ๊ฑฐ๋ ์๋๊ฑฐ๋)๋ก ๋ช
ํํ๊ฒ ์ ์ ์ผ๋ก ์๋ ค์ง ์ฐ์ฐ์ผ๋ก ๋น๊ตํ๋ ๊ฒฝ์ฐ IEEE 754 Standard for Floating-Point Arithmetic๋ฅผ ๋ฐ๋ผ ํ์ธํ๋ค.
๊ทธ๋ ์ง ์๋ค๋ฉด(Any, Comparable<...>๊ฐ์ ๊ฒฝ์ฐ) ๊ตฌ์กฐ์ equality๊ฐ ์ฌ์ฉ๋๋๋ฐ, ํ์ค๊ณผ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ NaN์ ์์ฒด์ ๊ฐ๊ณ , -0.0์ 0.0๊ณผ ๊ฐ์ง ์๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] RecyclerView setHasFixedSize (0) | 2021.03.08 |
---|---|
[Android] AppCompat Library ์ฌ์ฉ ์ด์ (0) | 2021.03.08 |
[Design Pattern] Delegation Pattern (0) | 2021.03.05 |
[Kotlin] Delegation (0) | 2021.03.05 |
[Programming] Backpressure (0) | 2021.03.02 |