๐ก ๊ณต๋ถํ๊ฒ ๋ ๋ฐฐ๊ฒฝ
์ฝ๋ฉํ ์คํธ๋ฅผ ์ค๋นํ๋ ค๊ณ ํ๋ก๊ทธ๋๋จธ์ค์์ ๋ฌธ์ ๋ฅผ ํ๊ณ ์์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ฒ์๋ ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ๋ง์ฃผ์น๊ฒ ๋์๊ณ , ๋๋ฆ๋๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋ ค๊ณ ์๊ฐ์ ํด๋ดค์ง๋ง ์ ํ ์๋ฑํ ๋ฐฉํฅ์ผ๋ก ๋ฌธ์ ๋ฅผ ์๊ฐํ๊ฒ ๋์๋ค. ์ ๋ ฌ ๋ฌธ์ ๋ฅผ ์ ํ๊ธฐ ์ํด์๋ ๊ด๋ จ ๊ฐ๋ ๋ค์ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๊ณ , ๋ฌธ์ ์์ ์ ์ฉ๋์๋ compareTo() ๋ฉ์๋๋ถํฐ ๊ณต๋ถํ๊ฒ ๋์๋ค!
๐ค compareTo(), ์ด๋ค ์น๊ตฌ์ธ๊ฐ?!
compareTo()๋ ๋ ๊ฐ์ ๊ฐ์ ๋น๊ตํด์ int ๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด ์ฃผ๋ ๋ฉ์๋์ด๋ค!
์ซ์๋ ๋ฌธ์๋ ๋น๊ตํ ์ ์๋ ๋ง๋ฅ ๋น๊ต ๋ฉ์๋๋ผ๊ณ ๋ณผ ์ ์๋ค.
๐ข ์ซ์๋ฅผ ๋น๊ตํ ๋
๋จ์ํ๊ฒ ํฌ๋ค / ๊ฐ๋ค / ์๋ค์ ๋ฐ๋ผ ์๋์ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ค.
- ๊ฒฐ๊ณผ๊ฐ ์์ → ์์ ๊ฐ์ด ๋ ํผ
- ๊ฒฐ๊ณผ๊ฐ 0 → ๋ ๊ฐ์ด ๊ฐ์
- ๊ฒฐ๊ณผ๊ฐ ์์ → ์์ ๊ฐ์ด ๋ ์์
System.out.println(5 - 3); // ๐ 2 (5 > 3)
System.out.println(3 - 3); // ๐ 0 (3 == 3)
System.out.println(2 - 4); // ๐ -2 (2 < 4)
๐ค ๋ฌธ์๋ฅผ ๋น๊ตํ ๋
๋ฌธ์(ํน์ ๋ฌธ์์ด)๋ ์ฌ์ ์์ผ๋ก ๋น๊ต๋๋ค.
์ด๊ฒ ์ข ๋ ์ฌ๋ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค ๐
System.out.println("apple".compareTo("banana")); // ๐ ์์ (a < b)
System.out.println("banana".compareTo("apple")); // ๐ ์์ (b > a)
System.out.println("apple".compareTo("apple")); // ๐ 0 (๊ฐ์)
- a๋ b๋ณด๋ค ์์ ์์ผ๋๊น → ์์
- b๋ a๋ณด๋ค ๋ค์ ์์ผ๋๊น → ์์
- ๊ฐ์ผ๋ฉด → 0
๐ข ์ซ์ํ ๋น๊ต: compareTo() ์ค์ต ์์
์ซ์ํ๋ compareTo()๋ฅผ ์ฌ์ฉํ ์ ์๋ค!
๐ก Integer, Double, Long, Float, Byte, Short ๋ฑ Wrapper ํด๋์ค๋ผ๋ฆฌ ๋น๊ตํ ๋ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค.
public class CompareToTest {
public static void main(String[] args) {
Integer x = 3;
Integer y = 4;
Double z = 1.0;
System.out.println(x.compareTo(y)); // ๐ -1 (3 < 4)
System.out.println(x.compareTo(3)); // ๐ 0 (3 == 3)
System.out.println(x.compareTo(2)); // ๐ 1 (3 > 2)
System.out.println(z.compareTo(2.7)); // ๐ -1 (1.0 < 2.7)
}
}
๐ง ๋ฐํ๊ฐ ๊ท์น
๋น๊ต ๊ฒฐ๊ณผ | ๋ฐํ ๊ฐ | ์๋ฏธ |
๊ธฐ์ค ๊ฐ == ๋น๊ต ๋์ | 0 | ๋ ๊ฐ์ด ๊ฐ๋ค |
๊ธฐ์ค ๊ฐ < ๋น๊ต ๋์ | ์์ | ๊ธฐ์ค ๊ฐ์ด ๋ ์๋ค |
๊ธฐ์ค ๊ฐ > ๋น๊ต ๋์ | ์์ | ๊ธฐ์ค ๊ฐ์ด ๋ ํฌ๋ค |
๐Java์์๋ ๊ธฐ๋ณธํ(int, double ๋ฑ)์ compareTo()๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , Wrapper ํด๋์ค(Integer, Double ๋ฑ)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ๋ ๊ธฐ์ตํด ๋๋ฉด ์ข๋ค!
๐ค ๋ฌธ์ํ ๋น๊ต: compareTo() ์์ ์ดํดํ๊ธฐ
๋ฌธ์์ด๋ ์ซ์์ฒ๋ผ compareTo() ๋ฉ์๋๋ก ๋น๊ตํ ์ ์๋ค!
ํ์ง๋ง ๋ฌธ์์ด์ ์ฌ์ ์๊ณผ ASCII์ฝ๋ ๊ฐ ๊ธฐ์ค์ผ๋ก ๋น๊ต๋๊ธฐ ๋๋ฌธ์, ์กฐ๊ธ ๋ ํฅ๋ฏธ๋กญ๊ณ , ์ฃผ์ํ ์ ๋ ์๋ค! ๐
public class CompareToTest {
public static void main(String[] args) {
String str = "abcd";
// 1๏ธโฃ ๋น๊ต ๋์์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ ๊ฒฝ์ฐ
System.out.println(str.compareTo("abcd")); // ๐ 0
System.out.println(str.compareTo("ab")); // ๐ 2
System.out.println(str.compareTo("a")); // ๐ 3
System.out.println(str.compareTo("c")); // ๐ -2
System.out.println("".compareTo(str)); // ๐ -4
// 2๏ธโฃ ๋น๊ต ๋์๊ณผ ์ ํ ๋ค๋ฅธ ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ
System.out.println(str.compareTo("zefd")); // ๐ -25
System.out.println(str.compareTo("zEFd")); // ๐ -25
System.out.println(str.compareTo("ABCD")); // ๐ 32
}
}
1๏ธโฃ ํฌํจ๋ ๋ฌธ์์ด์ผ ๊ฒฝ์ฐ: ๊ธธ์ด ์ฐจ์ด๋ฅผ ๋ฐํ!
System.out.println(str.compareTo("ab")); // ๐ 2
System.out.println(str.compareTo("a")); // ๐ 3
System.out.println("".compareTo(str)); // ๐ -4
- "abcd"(4๊ธ์)์ "ab"(2๊ธ์) → ์ฐจ์ด: 2
- "abcd"์ "a" → 3
- ""์ "abcd" → -4
๐๊ธฐ์กด ๋ฌธ์์ด์ ๋น๊ต ๋ฌธ์์ด์ด ์์ ํ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, ๋ฌธ์์ด ๊ธธ์ด ์ฐจ์ด๋ฅผ ๋ฐํํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์๋ค.
โ str.compareTo("ab")์ ๊ฒฐ๊ณผ ๊ฐ์ด 2๊ฐ ๋์ค๋ ์ด์ ๋?!
"c"๋ "abcd"์ ํฌํจ๋์ด ์์ผ๋ ๊ธธ์ด ์ฐจ์ด์ธ 3์ด ๋์์ผ ํ์ง ์์๊น...? ๐ค
ํ์ง๋ง compareTo()๋ ์์์๋ถํฐ ํ ๊ธ์์ฉ ์ฐจ๋ก๋๋ก ๋น๊ตํด์ ๋ค๋ฅธ ๋ฌธ์๊ฐ ๋ฑ์ฅํ๋ ์๊ฐ, ๊ทธ ์๋ฆฌ์ ASCII์ฝ๋ ์ฐจ์ด๋ฅผ ๋ฐํํ๋ค!
"abcd"
โฒ a = 97
"c"
โฒ c = 99
- 97 - 99 = -2
๊ทธ๋์ ๊ฒฐ๊ณผ๋ -2!
2๏ธโฃ์ ํ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋น๊ตํ๋ ๊ฒฝ์ฐ
System.out.println(str.compareTo("zefd")); // ๐ -25
System.out.println(str.compareTo("ABCD")); // ๐ 32
- "a"(97) vs "z"(122) → -25
- "a"(97) vs "A"(65) → 32
compareTo()๋ ๋์๋ฌธ์๋ ๊ตฌ๋ถํ๋ค!
โจ ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ๋น๊ตํ๋ ค๋ฉด?
str.compareToIgnoreCase("ABCD"); // ๐ 0
compareToIgnoreCase()๋ ์ด๋ฆ ๊ทธ๋๋ก ๋์๋ฌธ์ ๋ฌด์ํ๊ณ ๋น๊ตํด์ฃผ๋ ๋ฉ์๋์ด๋ค!
๋ฌธ์์ด ๋น๊ต์์ ์๋ฌธ์ vs ๋๋ฌธ์ ํท๊ฐ๋ฆด ๋ ์ ์ฉํ๊ฒ ์ฐ์ธ๋ค!
๐ง ๋ง๋ฌด๋ฆฌ ์ ๋ฆฌ
์ํฉ | ๊ฒฐ๊ณผ ๊ธฐ์ค | ๋ฐํ๊ฐ ์์ |
๋ฌธ์ ๋์ผ | ๊ฐ์ | 0 |
์์ด ์์ | ASCII ๊ธฐ์ค | ์์ |
์์ด ํผ | ASCII ๊ธฐ์ค | ์์ |
๋น๊ต๋ฌธ์ ํฌํจ๋จ | ๊ธธ์ด ์ฐจ์ด์ฒ๋ผ ๋ณด์ | ์์/์์ |
๐ References
https://mine-it-record.tistory.com/133
[JAVA] ์๋ฐ_compareTo ( ๊ฐ [๋ฌธ์์ด/์ซ์] ๋น๊ต )
compareTo() - int compareTo(NumberSubClass referenceName) - int compareTo(String anotherString) - compareTo() ํจ์๋ ๋๊ฐ์ ๊ฐ์ ๋น๊ตํ์ฌ int ๊ฐ์ผ๋ก ๋ฐํํด์ฃผ๋ ํจ์์ด๋ค. compareTo() ํจ์์๋ ์์์ ์ค๋ช ํ๋๋ฐ์ ๊ฐ์ด "
mine-it-record.tistory.com