JAVA(143)
-
[์ดํํฐ๋ธ ์๋ฐ] 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 -
[์ดํํฐ๋ธ ์๋ฐ] Item09 ์๋ฒฝ๊ณต๋ต.
item09. try-finally๋ณด๋ค try-with-resources ๋ฅผ ์ฌ์ฉํ๋ผ. " p48. ์๋ฐ ํผ์ฆ๋ฌ ์์ธ ์ฒ๋ฆฌ ์ฝ๋์ ์ค์" package chapter01.item09.puzzler; import java.io.*; /** * item09. try-finally ๋ณด๋ค๋ try-with-resources๋ฅผ ์ฌ์ฉํ๋ผ. * ์๋ฐ Puzzler ์ฑ ์ ์ธ๊ธํ ์์ธ ์ฒ๋ฆฌ ์ฝ๋์ ์ค์ */ public class Copy { private static final int BUFFER_SIZE = 8 * 1024; static void copy(String src, String dst) throws IOException { InputStream in = new FileInputStream(src); Out..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item9. try-finally ๋ณด๋ค๋ try-with-resources ๋ฅผ ์ฌ์ฉํ๋ผ.
item09. try-finally ๋ณด๋ค๋ try-with-resources๋ฅผ ์ฌ์ฉํ๋ผ. https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ ๋ด์ฉ์ด ์ถ๊ฐ๋? ๋๋์ผ๋ก Item09. ์์๋ try-with-resources ์ฌ์ฉ์ ๊ถ์ฅํ๊ณ ์๋ค. (๊ถ์ฅ๋ณด๋ค๋ ์ฌ์ฉํ๋ผ๊ณ ํ๊ณ ์๋ค.) ์๋ฐ์์๋ close ๋ฉ์๋๋ฅผ ํธ์ถํด์ ์ง์ ๋ซ์์ค์ผํ๋ ์์์ด InputStream, Out..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item08 ์๋ฒฝ๊ณต๋ต. AutoClosable
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p43. AutoClosable " AutoClosable์ด๋? : try-with-resources๋ฅผ ์ง์ํ๋ ์ธํฐํ์ด์ค์ด๋ค. /* * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.lang; /** * An object that may hold resources (such as file or socket handles) * u..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item08 ์๋ฒฝ๊ณต๋ต. Finalizer ๊ณต๊ฒฉ
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p42. Finalizer ๊ณต๊ฒฉ" https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ finalizer๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ์ด์ ์ค ํ๋๋ก "finalizer๋ฅผ ์ฌ์ฉํ ํด๋์ค๋ finalizer ๊ณต๊ฒฉ์ ๋ ธ์ถ๋์ด ์ฌ๊ฐํ ๋ณด์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ค" ๋ผ๊ณ ํ๋๋ฐ ์ด๋ finalizer ๊ณต๊ฒฉ์ ์์ฑ์๋ ์ง๋ ฌํ ๊ณผ..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item08 ์๋ฒฝ๊ณต๋ต
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. " p45. ์ ์ ์ด ์๋ ์ค์ฒฉ ํด๋์ค๋ ์๋์ผ๋ก ๋ฐ๊นฅ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๊ฐ๋๋ค. & ๋๋ค ์ญ์ ๋ฐ๊นฅ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๊ฐ๊ธฐ ์ฝ๋ค. " https://hyejin.tistory.com/1011 [์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ hyejin.tistory.com ์ฌ๊ธฐ์ State ์ธ์คํด์ค๋ Room ์ธ์คํด์ค๋ฅผ ์ ๋๋ก ์ฐธ์กฐํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ ์ ์ค์ฒฉ ํด๋์ค๋ก ์์ฑํ๋ค. Room ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ..
2023.01.25 -
[์ดํํฐ๋ธ ์๋ฐ] Item8. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ.
item08. finalizer์ cleaner ์ฌ์ฉ์ ํผํ๋ผ. ์ดํํฐ๋ธ ์๋ฐ part 1์์๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ ๋ํด์ ์๊ธฐํ๊ณ ์๋๋ฐ ์ง๊ธ์ ์ ๋ฒ item ๋ถํฐ๋ ๊ฐ์ฒด ์๋ฉธ์ ๋ํด์ ์ด์ผ๊ธฐ ํ๊ณ ์๋ค. ์ฐ์ ์๋ฐ์์๋ ๋ ๊ฐ์ง ๊ฐ์ฒด ์๋ฉธ์๋ฅผ ์ ๊ณตํ๋ค. finalizer์ cleaner์ธ๋ฐ ๊ฒฐ๋ก ์ ์๊ธฐํ์๋ฉด ๋๋ค ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค. ์๋ ๊ถ์ฅ์ด ์๋๋ผ ์ฑ ์์๋ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ๋ผ๊ณ ํ๋ค. (ํนํ finalizer) ํนํ finalizer๋ ์์ธกํ ์ ์๊ณ , ์ํฉ์ ๋ฐ๋ผ ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถํ์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋์, ๋ฎ์ ์ฑ๋ฅ, ์ด์์ฑ ๋ฌธ์ ์ ์์ธ์ด ๋๊ธฐ๋ ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ง ๋ง๋ผ๊ณ ํ๋ค. ํนํ java 9๋ถํฐ๋ deprecated ๋์ด์ ๋์์ผ๋ก cleaner๋ฅผ ์๊ฐ..
2023.01.22 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. Executor
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p39. ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฐ๋ ๋, ScheduledThreadPoolExecutor" Executor๋ฅผ ์๊ธฐ์ ์ Thread, Runnable์ด ๋ญ์ง๋ถํฐ ์์์ผ Executor๋ฅผ ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋จผ์ Thread์ Runnable์ด ๋ฌด์์ธ์ง๋ถํฐ ์ฐพ์๋ดค๋ค. ์ฐ์ ์ฐ๋ ๋๋ ํ๋ก๊ทธ๋จ ์คํ์ ๊ฐ์ฅ ์์ ๋จ์๋ก, ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค์ด ์คํํ๋ฉด 1๊ฐ์ ๋ฉ์ธ ์ค๋ ๋์ ์ํด ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ค. ๊ทธ๋ฐ๋ฐ 1๊ฐ์ ์ค๋ ๋ ๊ฐ์ง๊ณ ๋ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ ๋์์ ์ฌ๋ฌ ์์ ์ ์ํํ๊ธฐ ์ํด์๋ ๋ณ๋์ ์ค๋ ๋๋ฅผ ๋ง๋ค์ด์ ์คํํด์ผ ํ๋ค. ์๋ฐ์์๋ ๋ฉํฐ ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๊ธฐ ์ํด์ Runnable, Thread, Callab..
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต. WeakHashMap
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p38. WeakHashMap, ์ฝํ ์ฐธ์กฐ (Weak reference)" WeakHashMap์ด๋? : ๋์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ GCํ ๋ ์๋์ผ๋ก ์ญ์ ํด์ฃผ๋ Map์ด๋ค. ์ด๋ ๋งต์ value๊ฐ ์๋๋ผ key๋ฅผ ๊ธฐ์ค์ผ๋ก key๋ฅผ ๋์ด์ ๊ฐํ๊ฒ ์ฐธ์กฐ๋๋ ๊ณณ์ด ์๋ค๋ฉด ํด๋น ์ํธ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋งต์ key์ ์์กดํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์กฐ์ฌํด์ผ ํ๋ ๊ฒ์ Integer, String ๊ณผ ๊ฐ์ ๊ฐ๋ค์ ๋์ด์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ๋๋ผ๋ ์ ๊ฑฐ๋์ง ์๋๋ค..!! ์ด๋๊ฐ์ ๊ฐ์ด ์ ์ฅ? ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. package chapter01.item07.cache; import java.util.HashMap; import java.util...
2023.01.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item07 ์๋ฒฝ๊ณต๋ต.NullPointerException
item07. ๋ค ์ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ผ. " p37 NullPointerException." ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์ ์ผ ๋ง์ด ์ ํ๊ฒ ๋๋ ์๋ฌ ์ค ํ๋๊ฐ NPE, NullPointerException ์ด๋ค. ๊ทผ๋ฐ ์๊ฐ์ ํด๋ณด๋ฉด NPE๋ ์๋ฌ ์ค๋ช ๋ง ๋ด๋ ์ถฉ๋ถํ ์ด๋์ ์๋ฌ๊ฐ ๋ฌ๋์ง ํ์ธ๋ ์ฝ๊ณ , ์ ๋ฌ๋์ง๋ ๊ธ๋ฐฉ ์ ์ ์์ด์ ๊ทธ๋๋ง(?) ์์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ์๋ฌ์ด๋ค. NPE๋ฅผ ๋ง๋์ง ์๊ธฐ ์ํด์ java 8์์๋ Optional์ด๋ผ๋ ๊ฒ์ ์ ๊ณตํ๊ณ ์๋๋ฐ ์ด๊ฑธ ํ์ฉํ๋ฉด NPE๋ ์ต๋ํ ํผํ ์ ์๋ค. NullPointerException์ด ๋ฐ์ํ๋ ์ด์ : ์ฐ์ NPE ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ธฐ ์ ์ ๊ฐ๋จํ๊ฒ๋ผ๋ NPE ๋ฐ์ ์ด์ ๋ฅผ ์์ฑํด๋ณธ๋ค. ๋จผ์ NPE ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ฉ์๋์์ null๋ฅผ ๋ฆฌํดํ๊ณ ..
2023.01.21