๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ(656)
-
[์ดํํฐ๋ธ ์๋ฐ] Item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. (๊ฐ๋ณ ๊ฐ์ฒด clone ์ ์ํ๋ ๋ฐฉ๋ฒ)
item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. https://hyejin.tistory.com/1039 [์ดํํฐ๋ธ ์๋ฐ] Item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. (Clone๊ท์ฝ) item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. Clone() ์ด๋? : Object ํด๋์ค์ clone() ๋ฉ์๋๋ ์์ ์ ๋ณต์ ํ์ฌ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ์ผ์ ํ๋ค. ๋จ์ํ ์ธ์คํด์ค ๋ณ์์ ๊ฐ๋ง ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์ฐธ hyejin.tistory.com -> ์์ ๊ฒ์๊ธ์ ์์์ฒ๋ผ ๋ถ๋ณ ํด๋์ค๋ Cloneable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ , clone()์ ์ฌ์ ์ํด์ฃผ๋ฉด ๋๋๋ฐ clone()์ ๋จ์ํ ๊ฐ์ฒด์ ์ ์ฅ๋ ๊ฐ์ ๊ทธ๋๋ก ๋ณต์ฌํ ๋ฟ, ๊ฐ์ฒด๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๊น์ง ๋ณต์ฌํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ๊ฐ์ฒด์ ๊ฒฝ..
2023.02.01 -
[์ดํํฐ๋ธ ์๋ฐ] Item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. (Clone๊ท์ฝ)
item13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํํ๋ผ. Clone() ์ด๋? : Object ํด๋์ค์ clone() ๋ฉ์๋๋ ์์ ์ ๋ณต์ ํ์ฌ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ์ผ์ ํ๋ค. ๋จ์ํ ์ธ์คํด์ค ๋ณ์์ ๊ฐ๋ง ๋ณต์ฌํ๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐํ์ ์ ์ธ์คํด์ค ๋ณ์๊ฐ ์๋ ํด๋์ค๋ ์์ ํ ์ธ์คํด์ค ๋ณต์ฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๋๋ค. Clone()์ ์ฌ์ฉํ๋ ค๋ฉด ๋ณต์ ํ ํด๋์ค๊ฐ Cloneable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค. Cloneable ์ธํฐํ์ด์ค๋ ๋ค์ด๊ฐ๋ณด๋ฉด ์๋ฌด๋ฐ ๋ด์ฉ์ด ์๋ ๋น ์ธํฐํ์ด์ค์ธ๋ฐ ๊ทธ๋ฅ ์ด ์ธํฐํ์ด์ค๋ ํด๋น ํด๋์ค๊ฐ ๋ณต์ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋ค๊ณ ํ ์ ์๋ค. public class PhoneNumber implements Cloneable{ private final short areaCode, prefix, l..
2023.02.01 -
[ํ๋ก๊ทธ๋๋จธ์ค] Lv1. ์ฑ๋ถ์ผ๋ก ๊ตฌ๋ถํ ์์ด์คํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋
๋ฌธ์ ์ค๋ช ๋ค์์ ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ์ ์๋ฐ๊ธฐ ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ ๋ด์ FIRST_HALF ํ ์ด๋ธ๊ณผ ์์ด์คํฌ๋ฆผ ์ฑ๋ถ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์ ICECREAM_INFO ํ ์ด๋ธ์ ๋๋ค. FIRST_HALF ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, SHIPMENT_ID, FLAVOR, TOTAL_ORDER ๋ ๊ฐ๊ฐ ์์ด์คํฌ๋ฆผ ๊ณต์ฅ์์ ์์ด์คํฌ๋ฆผ ๊ฐ๊ฒ๊น์ง์ ์ถํ ๋ฒํธ, ์์ด์คํฌ๋ฆผ ๋ง, ์๋ฐ๊ธฐ ์์ด์คํฌ๋ฆผ ์ด์ฃผ๋ฌธ๋์ ๋ํ๋ ๋๋ค. FIRST_HALF ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํค๋ FLAVOR์ ๋๋ค. NAME TYPE NULLABLE SHIPMENT_ID INT(N) FALSE FLAVOR VARCHAR(N) FALSE TOTAL_ORDER INT(N) FALSE ICECREAM_INFO ํ ์ด๋ธ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ผ๋ฉฐ, FLAVOR, INGREDITENT_T..
2023.01.31 -
[์ดํํฐ๋ธ ์๋ฐ] Item12. toString์ ํญ์ ์ฌ์ ์ํ๋ผ.
item12. toString์ ํญ์ ์ฌ์ ์ํ๋ผ. Object์ ๊ธฐ๋ณธ toString ๋ฉ์๋๋ ๋ณดํต 'ํด๋์ค์ด๋ฆ@16์ง์๋ก ํ์ํ ํด์์ฝ๋' ๋ก ๋ฐํํ๋ค. ์ด ๊ธฐ๋ณธ ๋ฉ์๋๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ฉด์ ๊ทธ๋ฅ ์ค์ํ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๋๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ฌ์ ์๋ฅผ ํ์ฌ ์ ์ตํ ์ ๋ณด๋ฅผ ๋๊ฒจ์ฃผ๋ ๊ฒ์ด ์ข๋ค. toString ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ฅด๋ฉด '๊ฐ๊ฒฐํ๋ฉด์ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํํ์ ์ ์ตํ ์ ๋ณด'๋ฅผ ๋ฐํํด์ผ ํ๋ค'๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ '๋ชจ๋ ํ์ ํด๋์ค์์ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ผ๊ณ ํ๋ค' toString์ ์ ๊ตฌํํ ํด๋์ค๋ ์ฌ์ฉํ๊ธฐ์๋ ํจ์ฌ ํธํ๊ณ ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ ์์คํ ์ ๋๋ฒ๊น ํ๊ธฐ ์ฌ์์ง๋ค. toString ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ println์ด๋ printf, ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์(+), assert ๊ตฌ๋ฌธ์ ๋๊ธธ ๋ , ํน์ ๋..
2023.01.31 -
[์ดํํฐ๋ธ ์๋ฐ] Item11 ์๋ฒฝ๊ณต๋ต. ์ค๋ ๋ ์์
item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashCode๋ ์ฌ์ ์ํ๋ผ. " p71. ํด๋์ค๋ฅผ ์ค๋ ๋ ์์ ํ๊ฒ ๋ง๋ค๋๋ก ์ ๊ฒฝ ์จ์ผ ํ๋ค." [์ดํํฐ๋ธ ์๋ฐ] Item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. (hashCode ๊ตฌํ ๋ฐฉ๋ฒ) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. (hashCode ๊ตฌํ ๋ฐฉ๋ฒ) item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. hashCode ์์ฑํ๋ ๋ฐฉ๋ฒ @Override public int hashCode() { int result = Short.hashCode(areaCode); result = 31 * result + Short.hashCode(p..
2023.01.31 -
[์ดํํฐ๋ธ ์๋ฐ] Item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. (hashCode ๊ตฌํ ๋ฐฉ๋ฒ)
item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. hashCode ์์ฑํ๋ ๋ฐฉ๋ฒ @Override public int hashCode() { int result = Short.hashCode(areaCode); result = 31 * result + Short.hashCode(prefix); result = 31 * result + Short.hashCode(lineNum); return result; } 1๏ธโฃ int ๋ณ์ result๋ฅผ ์ ์ธํ ํ ๊ฐ c๋ก ์ด๊ธฐํํ๋ค. ์ด๋ c๋ ํด๋น ๊ฐ์ฒด์ ์ฒซ๋ฒ์งธ ํต์ฌ ํ๋๋ฅผ ๋จ๊ณ 2๏ธโฃ.a๋ฐฉ์์ผ๋ก ๊ณ์ฐํ ํด์์ฝ๋์ด๋ค. (ํต์ฌํ๋๋ equals ๋น๊ต์ ์ฌ์ฉ๋๋ ํ๋) 2๏ธโฃ ํด๋น ๊ฐ์ฒด์ ๋๋จธ์ง ํต์ฌ ํ๋ f ๊ฐ๊ฐ์ ๋ํด ๋ค์ ์์ ์ ์ํํ๋ค...
2023.01.30 -
[์ดํํฐ๋ธ ์๋ฐ] Item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. (hashCode ๊ท์ฝ)
item11. equals๋ฅผ ์ฌ์ ์ํ๋ ค๊ฑฐ๋ hashcode๋ ์ฌ์ ์ํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (equals ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์์ฌํญ) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (equals ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์์ฌํญ) item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ hyejin.tistory.com equals๋ฅผ ์ฌ์ ์ํ ๋ hashcode๋ ๋ฐ๋์ ์ฌ์ ์ ํด์ผ ํ๋ค๊ณ ์ฃผ์์ฌํญ์ผ๋ก ์์ฑํด๋๋ค..
2023.01.30 -
[์ดํํฐ๋ธ ์๋ฐ] Item10 ์๋ฒฝ๊ณต๋ต. StackOverflowError
item10. equals๋ ๊ธฐ๋ณธ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. " p58. StackoverflowError" [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (์ถ์ด์ฑ, ์ผ๊ด์ฑ, null-์๋) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (์ถ์ด์ฑ, ์ผ๊ด์ฑ, null-์๋) item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ๋๋ ๋ฐ๋์ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ค. [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด hyejin.tistory.com ์์ ๊ฒ์๊ธ์์ ์ถ์ด์ฑ ์๋ฐ์ ๋ํ ์์ ๋ก ColorPoint ํด๋์ค์ equals๋ฅผ ์๋ชป..
2023.01.30 -
[์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (equals ๊ตฌํ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์์ฌํญ)
item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ) item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ๋๋ ๋ฐ๋์ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ค. equals ๊ท์ฝ 1๏ธโฃ ๋ฐ์ฌ์ฑ reflexivity : null ์ด ์๋ ๋ชจ๋ ์ฐธ์กฐ ๊ฐ x์ ๋ํด x.equals(x) == true hyejin.tistory.com [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (์ถ์ด์ฑ, ์ผ๊ด์ฑ, null-์๋) (ti..
2023.01.26 -
[์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (์ถ์ด์ฑ, ์ผ๊ด์ฑ, null-์๋)
item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ๋๋ ๋ฐ๋์ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ค. [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ) (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ) item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ๋๋ ๋ฐ๋์ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ค. equals ๊ท์ฝ 1๏ธโฃ ๋ฐ์ฌ์ฑ reflexivity : null ์ด ์๋ ๋ชจ๋ ์ฐธ์กฐ ๊ฐ x์ ๋ํด x.equals(x) == true hyejin.tistory.com equals ์ผ๋ฐ ๊ท์ฝ 1๏ธโฃ ๋ฐ์ฌ์ฑ A.equa..
2023.01.26 -
[์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. (๋์นญ์ฑ, ๋ฐ์ฌ์ฑ, ์ถ์ด์ฑ)
item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ ๋๋ ๋ฐ๋์ ์ผ๋ฐ ๊ท์ฝ์ ๋ฐ๋ผ์ผ ํ๋ค. equals ๊ท์ฝ 1๏ธโฃ ๋ฐ์ฌ์ฑ reflexivity : null ์ด ์๋ ๋ชจ๋ ์ฐธ์กฐ ๊ฐ x์ ๋ํด x.equals(x) == true ์ด๋ค. ๋จ์ํ ๋งํ๋ฉด ๊ฐ์ฒด๋ ์๊ธฐ ์์ ๊ณผ ๊ฐ์์ผ ํ๋ค๋ ๋ป์ด๋ค. ์ด ์๊ฑด์ ๋๋ถ๋ถ?์ด ์๋๋ผ ์์งํ ๊ฑฐ์ ๋ค ๋ง์กฑํ๋ ์กฐ๊ฑด์ผํ ๋ฐ ๋ง์ฝ ์ด ์๊ฑด์ ์ด๊ธด ํด๋์ค๊ฐ ์๋ค๋ฉด ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ปฌ๋ ์ ์ ๋ฃ์ ๋ค์ contains ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐฉ๊ธ ๋ฃ์ ์ธ์คํด์ค๊ฐ ์๋ค๊ณ ๋ตํ ๊ฒ์ด๋ค. 2๏ธโฃ ๋์นญ์ฑ symmetry : null ์ด ์๋ ๋ชจ๋ ์ฐธ์กฐ ๊ฐ x, y ์ ๋ํด x.equals(y) ๊ฐ true์ด๋ฉด y.equals(x)๋ true์ด๋ค. x.e..
2023.01.26 -
[์ดํํฐ๋ธ ์๋ฐ] Item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ.
item10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์ํ๋ผ. equals ๋ฉ์๋๋ ์ฌ์ ์ํ๊ธฐ ์ฌ์๋ ๋ณด์ด์ง๋ง ํจ์ ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ฌ์ ์ ํ์ง ์๋ ๊ฒ์ด ์ต์ ์ด๊ธฐ๋ ํ๋ค. ์ฌ์ ์ํ์ง ์์ผ๋ฉด ๊ทธ ํด๋์ค์ ์ธ์คํด์ค๋ ์ค์ง ์๊ธฐ ์์ ๊ณผ๋ง ๊ฐ๊ฒ ๋๋ค. equals๋ฅผ ์ฌ์ ์ํ์ง ์์๋ ๋๋ ์ํฉ 1๏ธโฃ ๊ฐ ์ธ์คํด์ค๊ฐ ๋ณธ์ง์ ์ผ๋ก ๊ณ ์ ํ๋ค. : ๊ฐ์ ํํํ๋๊ฒ ์๋๋ผ ๋์ํ๋ ๊ฐ์ฒด๋ฅผ ํํํ๋ ํด๋์ค๊ฐ ์ฌ๊ธฐ์ ํด๋น๋๋ค. Thread๊ฐ ์ฌ๊ธฐ์ ํด๋น๋๋๋ฐ, Object์ equals ๋ฉ์๋๋ ์ด๋ฌํ ํด๋์ค์ ๋ฑ ๋ง๊ฒ ๊ตฌํ๋์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฑ๊ธํค ๊ฐ์ฒด ๋๋ enum ํ์ ์ด๋ฉด equals๋ฅผ ๊ตณ์ด ์ฌ์ ์ ํ์ง ์์๋ ๋๋ค.(ํ์๋ ์์) 2๏ธโฃ ์ธ์คํด์ค์ '๋ ผ๋ฆฌ์ ๋์น์ฑ(logical equality)' ์ ๊ฒ์ฌํ ์ผ์ด ์๋ค. ๋ํ..
2023.01.26