๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”

    clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

    ์ด์ „ ๊ธ€์„ ํ†ตํ•ด ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ clone์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ clone์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. ๊ฐ€๋ณ€ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์ž. 1. ๋ฐฐ์—ด ๋ณต์‚ฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๐Ÿ‘จโ€๐Ÿš€ public class Stack implements Cloneable{ private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[..

    clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

    ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” clone์„ ์žฌ์ •์˜ ํ•  ๋•Œ ์–ด๋–ค ์ ์„ ์ฃผ์˜ํ•ด์„œ ์žฌ์ •์˜ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ์ฃผ์˜์ ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์œผ๋ฏ€๋กœ clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค. clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ํฌ๊ฒŒ 2๊ฐ€์ง€ ์ƒํ™ฉ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๋‹ค. ๋จผ์ € ๋ถˆ๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๊ณ , ๋‹ค์Œ ๊ธ€์„ ํ†ตํ•ด ๊ฐ€๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. 1. clone ๊ทœ์•ฝ ๐Ÿ‘ฉโ€๐ŸŒพ clone์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํด๋ž˜์Šค์— ์žฌ์ •์˜๋ฅผ ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด(๊ทœ์•ฝ)์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์˜ 3๊ฐ€์ง€ ๊ทœ์•ฝ์„ ๊ธฐ์–ตํ•˜๊ณ  ์–ด๋–ป๊ฒŒ..

    toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ12)]

    1. toString์„ ์žฌ์ •์˜ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ  ๐Ÿงƒ 1. Object์˜ toString ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋ณธ ํ˜•์‹ Object์˜ ๊ธฐ๋ณธ toString ๋ฉ”์„œ๋“œ๋Š” 'ํด๋ž˜์Šค์ด๋ฆ„@16์ง„์ˆ˜๋กœ ํ‘œ์‹œํ•œ ํ•ด์‰ฌ์ฝ”๋“œ'๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค. test.Test@15db9742์ด ํ•˜๋‚˜์˜ ์˜ˆ์‹œ์ด๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค์—์„œ toString์œผ๋กœ ๋ฐ˜ํ™˜๋ฐ›์„ ์ ์ ˆํ•œ ๊ฐ’์˜ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋˜ํ•œ, Object.class์— ์ •์˜๋œ toString์„ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. The result should be a concise but informative representation that is easy for a person to read. ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ์˜ ์œ ์ตํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ด๋ผ It is recommended ..

    equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ ค๊ฑฐ๋“  hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ11)]

    ์•ž์—์„œ ์‚ดํŽด๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ์ข‹์€ ํ•ด์‹œ ํ•จ์ˆ˜๋ผ๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์— ๋‹ค๋ฅธ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด์ƒ์ ์ธ ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ฃผ์–ด์ง„ (์„œ๋กœ ๋‹ค๋ฅธ) ์ธ์Šคํ„ด์Šค๋“ค์„ 32๋น„ํŠธ ์ •์ˆ˜ ๋ฒ”์œ„์— ๊ท ์ผํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•ด์•ผ ํ•œ๋‹ค. ์ด์ƒ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์‹คํ˜„ํ•˜๊ธฐ๋Š” ์–ด๋ ต์ง€๋งŒ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ๋Š” ๊ทธ๋‹ค์ง€ ์–ด๋ ต์ง€ ์•Š๋‹ค. ํ•ด๋‹น ๊ธ€์„ ํ†ตํ•ด ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•๊ณผ ์ฃผ์˜ ์‚ฌํ•ญ์„ ์•Œ์•„๋ณด์ž. 1. ์ „ํ˜•์ ์ธ hashCode ๊ตฌํ˜„ ๐Ÿฅ‘ ํ•ต์‹ฌ ํ•„๋“œ ์ค‘์— ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ์„œ hashCode๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ธฐ๋ณธ ํƒ€์ž…(primitive type) ํ•„๋“œ๋ผ๋ฉด ํ•ด๋‹น ํƒ€์ž…์˜ hashCode๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. (Type.hashCode(f)) ์ฐธ์กฐ ํƒ€์ž…(reference tyep) ํ•„๋“œ๋ผ๋ฉด ํ•ด๋‹น ํƒ€์ž…์˜ hashCode๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๊ตฌํ•œ๋‹ค. (Point๋ผ๋Š” ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ..

    equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ ค๊ฑฐ๋“  hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ11)]

    equals๋ฅผ ์žฌ์ •์˜ํ•œ ํด๋ž˜์Šค ๋ชจ๋‘์—์„œ hashCode๋„ ์žฌ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด hashCode ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์–ด๊ธฐ๊ฒŒ ๋˜์–ด ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ HashMap์ด๋‚˜ HashSet ๊ฐ™์€ ์ปฌ๋ ‰์…˜์˜ ์›์†Œ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ์€ Object ๋ช…์„ธ์—์„œ ๋ฐœ์ทŒํ•œ hashCode์— ๋Œ€ํ•œ ๊ทœ์•ฝ์ด๋‹ค. equals ๋น„๊ต์— ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด hashCode๋Š” ๋งค๋ฒˆ ๊ฐ™์€ ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•œ๋‹ค. ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ๋‹ค๋ฉด ๊ฐ’์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๊ฐ์ฒด์— ๋Œ€ํ•œ equals๊ฐ€ ๊ฐ™๋‹ค๋ฉด, hashCode์˜ ๊ฐ’๋„ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ๋‘ ๊ฐ์ฒด์— ๋Œ€ํ•œ equals๊ฐ€ ๋‹ค๋ฅด๋”๋ผ๋„, hashCode์˜ ๊ฐ’์€ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ํ•ด์‹œ ํ…Œ์ด๋ธ” ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•ด ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹..

    equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ(3) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ10)]

    ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ง€๊ธˆ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•ด์„œ ์–‘์งˆ์˜ equals ๋ฉ”์„œ๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•๊ณผ ์ฃผ์˜ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. equals ๊ตฌํ˜„ ๋ฐฉ๋ฒ• == ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ์ด ์ž๊ธฐ ์ž์‹ ์˜ ์ฐธ์กฐ์ธ์ง€ ํ™•์ธํ•œ๋‹ค. instanceof ์—ฐ์‚ฐ์ž๋กœ ์ž…๋ ฅ์ด ์˜ฌ๋ฐ”๋ฅธ ํƒ€์ž…์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์ž…๋ ฅ์„ ์˜ฌ๋ฐ”๋ฅธ ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•œ๋‹ค. ์ž…๋ ฅ ๊ฐ์ฒด์™€ ์ž๊ธฐ ์ž์‹ ์˜ ๋Œ€์‘๋˜๋Š” 'ํ•ต์‹ฌ' ํ•„๋“œ๋“ค์ด ๋ชจ๋‘ ์ผ์น˜ํ•˜๋Š”์ง€ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•œ๋‹ค. float์™€ double์„ ์ œ์™ธํ•œ ๊ธฐ๋ณธ ํƒ€์ž… ํ•„๋“œ๋Š” == ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•˜๊ณ , ์ฐธ์กฐ ํƒ€์ž… ํ•„๋“œ๋Š” ๊ฐ๊ฐ์˜ equals ๋ฉ”์„œ๋“œ๋กœ, float๊ณผ double ํ•„๋“œ๋Š” ๊ฐ๊ฐ ์ •์  ๋ฉ”์„œ๋“œ์ธ Float.compare(float, float)์™€ Double.compare(double, double)๋กœ ๋น„๊ตํ•œ๋‹ค. (float์™€ doubl..

    equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ10)]

    ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” equals ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ 5๊ฐ€์ง€๋ฅผ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. ๋ฐ˜์‚ฌ์„ฑ(reflexivity) A.equals(A) == true ๋ฐ˜์‚ฌ์„ฑ์€ ๋‹จ์ˆœํžˆ ๋งํ•˜๋ฉด ๊ฐ์ฒด๋Š” ์ž๊ธฐ ์ž์‹ ๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด ์š”๊ฑด์€ ์ผ๋ถ€๋Ÿฌ ์–ด๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ ๋ณด์ธ๋‹ค. 2. ๋Œ€์นญ์„ฑ(symmetry) A.equals(B) = B.equals(A) ๋Œ€์นญ์„ฑ์€ ๋‘ ๊ฐ์ฒด๋Š” ์„œ๋กœ์— ๋Œ€ํ•œ ๋™์น˜ ์—ฌ๋ถ€์— ๋˜‘๊ฐ™์ด ๋‹ตํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ž์—ด์„ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. public final class CaseInsensitiveString { private final String s; public CaseInsens..

    equals๋Š” ์ผ๋ฐ˜ ๊ทœ์•ฝ์„ ์ง€์ผœ ์žฌ์ •์˜ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ10)]

    ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด equals๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ๋ง์ž. equlas ๋ฉ”์„œ๋“œ๋Š” ์žฌ์ •์˜ํ•˜๊ธฐ ์‰ฌ์›Œ ๋ณด์ด์ง€๋งŒ ๊ณณ๊ณณ์— ํ•จ์ •์ด ๋„์‚ฌ๋ฆฌ๊ณ  ์žˆ์–ด์„œ ์ž์นซํ•˜๋ฉด ๋”์ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” 'equals๋ฅผ ์žฌ์ •์˜ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” 4๊ฐ€์ง€ ์ƒํ™ฉ'๊ณผ '๋งŒ์•ฝ equals ์žฌ์ •์˜๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋ฉด, ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” 5๊ฐ€์ง€ ๊ทœ์•ฝ'์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. 1. ์žฌ์ •์˜ ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” 4๊ฐ€์ง€ ์ƒํ™ฉ ๐Ÿšฉ 1. ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๊ฒฝ์šฐ ๐ŸŒด ์‹ฑ๊ธ€ํ†ค, ENUM ๋“ฑ ๊ฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ ๊ณ ์œ ํ•œ ๊ฒฝ์šฐ equals๋ฅผ ์žฌ์ •์˜ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 2. ์ธ์Šคํ„ด์Šค์˜ '๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ(logical equality)'์„ ๊ฒ€์‚ฌํ•  ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ ๐ŸŒด ์„ค๊ณ„์ž๊ฐ€ ๋…ผ๋ฆฌ์  ๋™์น˜์„ฑ ๋ฐฉ์‹์„ ์›ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์• ์ดˆ์— ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๊ฒฝ..

    try-finally ๋ณด๋‹ค๋Š” try-with-resources๋ฅผ ์‚ฌ์šฉํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ9)]

    ์ „ํ†ต์ ์œผ๋กœ ์ž์›์ด ์ œ๋Œ€๋กœ ๋‹ซํž˜์„ ๋ณด์žฅํ•˜๋Š” ์ˆ˜๋‹จ์œผ๋กœ try-finally๊ฐ€ ์“ฐ์˜€๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜์˜ 2๊ฐ€์ง€ ๋ฌธ์ œ์ ์œผ๋กœ ์ธํ•ด try-with-resources์˜ ์‚ฌ์šฉ์ด ๊ถŒ์žฅ๋œ๋‹ค. ๋ณต์ˆ˜์˜ ์ž์›์„ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์ง„๋‹ค. ์Šคํƒ ์ถ”์  ๋‚ด์—ญ์— ์ด์ „์˜ ์˜ˆ์™ธ์— ๊ด€ํ•œ ์ •๋ณด๋Š” ๋‚จ์ง€ ์•Š๊ฒŒ ๋˜์–ด, ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ์˜ ๋””๋ฒ„๊น…์„ ๋ชน์‹œ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค. try-with-resources์˜ ์žฅ์ ๋“ค์„ ํ†ตํ•ด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์•Œ์•„๋ณด์ž. ์žฅ์  1. ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. try-finally์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(p..

    finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ8)]

    ์ž๋ฐ”๋Š” finalizer์™€ cleaner๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ์ฒด ์†Œ๋ฉธ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ด ์ž์ œ๋œ๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ ๋ฌธ์ œ์ ๋“ค๊ณผ ์ ์ ˆํ•œ ์“ฐ์ž„์ƒˆ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ๐Ÿ“ข๋ฌธ์ œ์  1. finalizer์™€ cleaner๋Š” ์ฆ‰์‹œ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค. finalizer๋‚˜ cleaner๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ ์†ํžˆ ์ˆ˜ํ–‰ํ• ์ง€๋Š” ์ „์ ์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋‹ฌ๋ ธ์œผ๋ฉฐ, ์ด๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๊ตฌํ˜„๋งˆ๋‹ค ์ฒœ์ฐจ๋งŒ๋ณ„์ด๋‹ค. finalizer๋‚˜ cleaner ์ˆ˜ํ–‰ ์‹œ์ ์— ์˜์กดํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘ ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ๐Ÿ“ข๋ฌธ์ œ์  2. finalizer์™€ cleaner๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๊ฐ์ฒด์— ๋”ธ๋ฆฐ ์ข…๋ฃŒ ์ž‘์—…์„ ์ „ํ˜€ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ..

    ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ7)]

    ์ž๋ฐ”์—์„œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ค€๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋น„์ง€, ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” 3๊ฐ€์ง€ ์ƒํ™ฉ์„ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. 1. Stack์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ & ํ•ด๊ฒฐ์ฑ… public class Stack{ private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack(){ elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e){ ensureCapacity(); el..

    ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ - [2์žฅ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํŒŒ๊ดด(์•„์ดํ…œ6)]

    ํ•ด๋‹น ์žฅ์—์„œ๋Š” ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜๋Š” 3๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž. 1. ๋ฌธ์ž์—ด public static void main(String[] args){ String hello1 = "hello"; String hello2 = new String("hello"); String hello3 = "hello"; System.out.println(hello1 == hello2); // false // ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค System.out.println(hello1.equals(hello2)); // true // ๊ฐ™์€ ๋ฌธ์ž์—ด System.out.println(hello1 == hello3); // true // ๊ฐ™์€ ์ธ์Šคํ„ด์Šค System.out.println(hello1.equals(hell..