TIL, WIL/TIL๐Ÿ“˜

09. 18 TIL : ์ž๋ฐ”๋ฅผ ๋‹ค๋ฃจ๋‹ค ๋ฐฐ์šด ๋ช‡ ๊ฐ€์ง€ ํฌ์ธํŠธ

wannaDevelopIt 2023. 9. 18. 13:21
728x90

1. String.Equals ๋ฉ”์„œ๋“œ

public boolean equals(Object anObject) {
	if(this == anObject) {
    	return true;
	}
    return (anObject instanceof String aString)
    && (!COMPACT_STRINGS || this.coder == aString.coder)
    && StringLatin1.equals(value, aString.value);
}

๊ฐ์ฒด์™€ ๋น„๊ตํ•˜๋Š” ์ฐธ์กฐ ๋น„๊ต๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ ํ›„, ๊ฐ์ฒด๊ฐ€ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๊ฐ™์€์ง€, 
COMPACT_STRINGS์ธ์ง€
(JVM ์˜ต์…˜์œผ๋กœ, JVM์ด ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. 
๊ธฐ๋ณธ์ ์œผ๋กœ JAVA 9์ดํ›„๋ถ€ํ„ฐ๋Š” COMPACT_STRINGS๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์–ด JVM์ด ๋ฌธ์ž์—ด์„ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๋„๋ก ์ตœ์ ํ™”๋œ๋‹ค)
-> ๊ธฐ์กด์˜ UTF-16 ์ €์žฅ๋ฐฉ์‹(๋ฌธ์ž๋ฅผ 2๋ฐ”์ดํŠธ๋กœ ํ‘œํ˜„)์—์„œ ์•„์Šคํ‚ค ๋ฌธ์ž์—ด(1๋ฐ”์ดํŠธ)๋กœ ๋ณ€ํ™˜
@IntrinsicCandidate
public static boolean equals(byte[] value, byte[] other) {
    if (value.length == other.length) {
        for (int i = 0; i < value.length; i++) {
            if (value[i] != other[i]) {
                return false;
            }
        }
        return true;
    }
    return false;
}

๊ทธ๋ฆฌ๊ณ  ๊ธฐ์กด ๋ฌธ์ž์—ด์˜ ๋ฐ”์ดํŠธ๋ฐฐ์—ด๊ณผ ๋น„๊ต ๋ฌธ์ž์—ด์˜ ๋ฐ”์ดํŠธ๋ฐฐ์—ด์„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ ๋น„๊ตํ•œ๋‹ค.

@IntrinsicCandidate ์–ด๋…ธํ…Œ์ด์…˜์€ ์ž๋ฐ”์—์„œ ํŠน์ • ๋ฉ”์„œ๋“œ๊ฐ€ JVM ๋‚ด๋ถ€์ ์œผ๋กœ ์ตœ์ ํ™”๋  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ์ž„์„
๋‚˜ํƒ€๋‚ด๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค. JIT ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด ๋ฉ”์„œ๋“œ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค.
~ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ํžŒํŠธ

ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ณ€์ˆ˜๋ฅผ ๋†“์ง€ ์•Š๊ณ  ๊ณ ์ • ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„ ๊ฐ’์„ ๋†“๊ณ  ๋ณ€์ˆ˜๋ฅผ ๊ฐ์ฒด๋กœ ๋†“์œผ๋ฉด "์ฐธ์กฐ ๋น„๊ต"๋ฅผ ํ•˜์ง€ ์•Š๊ณ  ์ด ํ›„์˜ ์„ธ ๊ฐ€์ง€ ๋น„๊ต๋ฅผ ๋ชจ๋‘ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ๋ฉด์—์„œ ๋น„ํšจ์œจ์ด ๋ฐœ์ƒํ•œ๋‹ค

 

2. Void ๋ฉ”์„œ๋“œ๋ฅผ ์ฆ‰์‹œ ์ข…๋ฃŒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•(๋ฉ”์„œ๋“œ ์Šคํƒ์„ ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•)

-> ํ•ด๋‹น ๋ฉ”์„œ๋“œ ์•ˆ์— ์กฐ๊ฑด๋ฌธ ๋“ฑ์„ ์ž‘์„ฑํ•œ ํ›„ ์กฐ๊ฑด์— ๋”ฐ๋ผ return;์„ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ์Šคํƒ์„ ์ฆ‰์‹œ ๋น ์ ธ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค

public void voidMethod (boolean flag) {

	if(flag){
	   return;
	}
}
728x90