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