๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Kotlin] Equality ==, ===

kotlinlang.org/docs/equality.html

 

Equality - Help | Kotlin

 

kotlinlang.org

์ฝ”ํ‹€๋ฆฐ์˜ 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๋ฅผ ๋”ฐ๋ผ ํ™•์ธํ•œ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด(AnyComparable<...>๊ฐ™์€ ๊ฒฝ์šฐ) ๊ตฌ์กฐ์  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