2021. 6. 22. 06:00ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/Java
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค!
์ค๋์ ์๋ฐ์ Wrapper Class์ ๋ํด ์์๋ณด๊ณ ์ถ์ ๊ฒ์ด์์!
์๋ฐ์ Optional์์ ํ์ํ ๊ฐ๋ ์ด๋ ๊ผญ ์์ง ํ์ จ์ผ๋ฉด ์ข๊ฒ ์ด์!
๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค!
๐ ๋ํผํด๋์ค๋(Wrapper Class)?
ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ด์์.
์๋ฅผ ๋ค์๋ฉด? Method์ ์ธ์๋ก ๊ฐ์ฒด ํ์ ๋ง์ด ์๊ตฌ๋๋ฉด, ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์๋ ๊ฒ์ด์์.
์ด ๋์๋ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๋จผ์ ๊ฐ์ฒด๋ก ๋ณํํ ๋ค ์์ ์ ์ํํด์ผ๊ฒ ์ง์?
์ด๋ ๊ฒ 8๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ๊ฐ์ฒด๋ก ํฌ์ฅํด ์ฃผ๋ ํด๋์ค๋ฅผ ๋ํผ ํด๋์ค๋ผ๊ณ ํ๋ต๋๋ค.
๋ํผ ํด๋์ค๋ ๊ฐ๊ฐ์ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์, ํด๋น ๊ฐ์ ๊ฐ์ง๋ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ค๋ต๋๋ค!
์ด๋ฌํ ๋ํผ ํด๋์ค๋ ๋ชจ๋ java.long Package์ ํฌํจ๋์ด ์ ๊ณต๋๋ ๊ฒ์ด์์.
์๋ฐ์ ๊ธฐ๋ณธ ํ์ ์ ๋์ํ์ฌ ์ ๊ณตํ๊ณ ์๋ ๋ํผ ํด๋๋ ์๋์ ๊ฐ์์!
๊ธฐ๋ณธ ํ์ | ๋ํผ ํด๋์ค |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Wrapper Class ์ค์์ Integer Class์ Character Class๋ง์ด ์์ ์ ๊ธฐ๋ณธ ํ์ ๊ณผ ์ด๋ฆ์ด ๋ค๋ฆ์ ์ฃผ์ํด์ผ ํ๋ ๊ฒ์ด์์!
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ Wrapper Class์ ์ธ์คํด์ค๋ก ๋ณํํ๋ ๊ณผ์ ์ Boxing์ด๋ผ๊ณ ํ๋ฉฐ, ๋ฐ๋๋ก Wrapper Class์ ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋ค์ ๊ธฐ๋ณธ ํ์ ์ Data๋ก ๊บผ๋ด๋ ๊ณผ์ ์ UnBoxing์ด๋ผ๊ณ ํ๋ ๊ฒ์ด์์.
๐ AutoBoxing๊ณผ AutoUnBoxing
JDK 1.5 ์ด์๋ถํฐ ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ด ํ์ํ ๋, ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌ ํด์ค๋ต๋๋ค. ์ด๋ ๊ฒ ์๋ํ๋ ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ ์คํ ๋ฐ์ฑ, ์คํ ์ธ๋ฐ์ฑ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด์์.
๋ค์ ์์ ๋ฅผ ํตํด ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ, ์คํ ๋ฐ์ฑ, ์คํ ์ธ๋ฐ์ฑ์ ์ข ๋ ์์ ๋ณด๊ธฐ๋ก ํด์!
Integer num = new Integer(17); // Boxing
int n = num.intValue(); // UnBoxing
System.out.println(n);
Character ch = 'X'; // Character ch = new Character('X'); -> AutoBoxing
char c = ch; // char c = ch.charValue(); -> AutoUnBoxing
System.out.println(c);
// #########################################################
// ์คํ ๊ฒฐ๊ณผ
17
X
์์ ์์ ์์ ๋ณด๋ฏ ๋ํผ ํด๋์ค์ธ Integer Class์ Character Class์๋ ๊ฐ๊ฐ ์ธ๋ฐ์ฑ์ ์ํ intValue()์ CharValue()๊ฐ ํฌํจ ๋์ด ์๋ต๋๋ค.
๋ํ, ์คํ ๋ฐ์ฑ์ ์ด์ฉํ๋ฉด new ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์๋์ผ๋ก Charcter ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์๋ ๊ฒ์ด์์.
๋ฐ๋๋ก charValue()๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋, ์คํ ์ธ๋ฐ์ฑ์ ์ด์ฉํ์ฌ ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ๋ก ์ฐธ์กฐํ ์ ์๋ต๋๋ค!
Public class Wrapper02 {
public static void main(String[] args) {
Integer num1 = new Integer(7); // Boxing
Integer num2 = new Integer(3); // Boxing
int int1 = num1.intValue(); // UnBoxing
int int2 = num2.intValue(); // UnBoxing
Integer result1 = num1 + num2; // 10
Integer result2 = int1 - int2; // 4
int result3 = num1 * int2; // 21
}
}
// #################################################################
// ์คํ ๊ฒฐ๊ณผ
10
4
21
์์ ์์ ์์ Integer result1 = num1 + num2;์ Integer result2 = int1 - int2; ๊ทธ๋ฆฌ๊ณ , int result3 = num1 * int2;์ ์ฐ์ฐ์ ๋ด๋ถ์ ์ผ๋ก ๋ํผ ํด๋์ค์ธ ํผ ์ฐ์ฐ์๋ฅผ ์คํ ์ธ๋ฐ์ฑํ์ฌ ๊ธฐ๋ณธ ํ์ ๋ผ๋ฆฌ ์ฐ์ฐ์ ์ํํ๊ณ ์๋ ๊ฒ์ด์์.
public class Wrapper03 {
public static void main(String[] args) {
Integer num1 = new Integer(10);
Integer num2 = new Integer(20);
Integer num3 = new Integer(10);
System.out.println( num1 < num2 ); // true
System.out.println( num1 == num3 ); // false
System.out.println( num1.equals( num3 ) ); true
}
}
// ########################################################
// ์คํ ๊ฒฐ๊ณผ
true
false
true
๋ํผ ํด๋์ค์ ๋น๊ต ์ฐ์ฐ๋ ์คํ ์ธ๋ฐ์ฑ์ ํตํด ๊ฐ๋ฅํ์ง๋ง, ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋๋ฑ ์ฌ๋ถ ํ๋จ์ System.out.println(num1 == num3);์ฒ๋ผ ๋น๊ต ์ฐ์ฐ์์ธ ๋๋ฑ ์ฐ์ฐ์ ' == '๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๊ณ , ๊ทธ ๋ค์ ์ค์ฒ๋ผ equals() Method๋ฅผ ์ฌ์ฉํด์ผ๋ง ํ๋ ๊ฒ์ด์์.
๋ํผ ํด๋์ค๋ ๊ฐ์ฒด์ด๋ฏ๋ก ๋๋ฑ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ๋ ์ธ์คํด์ค ๊ฐ์ด ์๋ ์ฃผ์๊ฐ์ ๋น๊ตํ๊ฒ ๋๋ต๋๋ค!
๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ๋ ์ธ์คํด์ค๋ฅผ ๋๋ฑ ์ฐ์ฐ์๋ก ๋น๊ตํ๊ฒ ๋๋ฉด ๋น์ฐํ false๊ฐ ๋์ค๊ฒ ๋๊ฒ ์ง์?
๋๋ฌธ์ ์ธ์คํด์ค์ ์ ์ฅ๋ ๊ฐ์ ๋๋ฑ ์ฌ๋ถ๋ฅผ ์ ํํ ํ๋จํ๋ ค๋ฉด equalse()๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ด์์!
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์
จ๋์? ๊ตฌ๋
๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค!
'๊ฐ๋ ์ ๋ฆฌ ์์ ์ค > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Class Method(static Method)์ ์ธ์คํด์ค Method (0) | 2021.09.13 |
---|---|
[JAVA] Optional<T> (0) | 2021.06.23 |
[JAVA] ํจ์ํ ์ธํฐํ์ด์ค (0) | 2021.06.21 |
[Java] Lamda Function (0) | 2021.06.21 |
[Java] Enum (์ด๊ฑฐํ) (0) | 2021.06.20 |