๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ์ง์ ์ ์ฅํ๋ฉฐ ์ฃผ๋ก ์คํ(Stack) ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋๋ค. ์๋ฐ์๋ ์ด 8๊ฐ์ ๊ธฐ๋ณธ ์๋ฃํ์ด ์ ์๋์ด ์๋ค.
byte
1byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ -128 ~ 127์ด๋ค. short
2byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ -32,768 ~ 32,767์ด๋ค. int
4byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ -2^31 ~ (2^31 - 1)์ด๋ค. (์ฝ +-21์ต) long
8byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0L์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ -2^63 ~ (2^63 - 1)์ด๋ค. (์ฝ +-9๊ฒฝ 2,000์กฐ)
float
4byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0.0f์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ ์ฝ +-3.4 * 10^38์ด๋ค. (๋จ์ ๋ฐ๋ ๋ถ๋ ์์์ ) double
8byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ 0.0d์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ ์ฝ +-1.7 * 10^308์ด๋ค. (๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ )
โป ์ค์ํ์ ๊ทผ์ฌ๊ฐ์ผ๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ ๊ณผ์ ์์ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์ ์์ด ์ฃผ์ํด์ผ ํ๋ค.
char
2byte์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ '\u0000'์ด๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ \u0000 ~ \uffff์ด๋ค. (์ ๋์ฝ๋)
boolean
๊ธฐ๋ณธ๊ฐ์ false์ด๋ค. boolean์ ํฌ๊ธฐ๊ฐ ๋ช
ํํ๊ฒ ์ ์๋์ด ์์ง ์์ผ๋ฉฐ JVM ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์์๋ 1byte, ๋จ์ผ ๋ณ์์์๋ 4byte(int ํฌ๊ธฐ)๋ก ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
ํํ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์๋ true ๋๋ false์ด๋ค.
์ฐธ์กฐ ์๋ฃํ์ ์ค์ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(Reference)๋ฅผ ์ ์ฅํ๋ค. ๋ณ์๋ ์คํ(Stack) ์์ญ์ ์ฃผ์๊ฐ์ ์ ์ฅํ๊ณ ์ค์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ ํ(Heap) ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋์ ์ผ๋ก ์์ฑ๋๋ค. ๊ธฐ๋ณธ ์๋ฃํ 8๊ฐ์ง๋ฅผ ์ ์ธํ ๋ชจ๋ ํ์ ์ด ์ฐธ์กฐ ์๋ฃํ์ ํด๋นํ๋ค.
String name = "Java"; // ๋ฌธ์์ด ๊ฐ์ฒด ์ฐธ์กฐ
int[] numbers = {1, 2, 3}; // ๋ฐฐ์ด ๊ฐ์ฒด ์ฐธ์กฐ
myClass obj = new MyClass(); // ์ฌ์ฉ์ ์ ์ ํด๋์ค ๊ฐ์ฒด ์ฐธ์กฐ
์ฐธ์กฐ ์๋ฃํ์ null ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ์ง ์๋ ์ํ๋ฅผ ํํํ ์ ์๋ค. ๋ํ ๊ฐ์ฒด์ด๋ฏ๋ก ํด๋น ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ฐธ์กฐ ์๋ฃํ ๋ณ์๋ผ๋ฆฌ == ์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด ์ฃผ์๊ฐ์ ๋น๊ตํ๋ค. ์ค์ ์ ์ฅ๋ ๊ฐ์ ๋น๊ตํ๋ ค๋ฉด equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. (์ฐธ๊ณ )
String a = new String("BlueCool");
String b = new String("BlueCool");
System.out.println(a == b); // false (์ฃผ์ ๋น๊ต)
System.out.println(a.equals(b)); // true (๊ฐ ๋น๊ต)
Java์์๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collector)๊ฐ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ค.
์๋ฐ์ ๋ํผ ํด๋์ค๋ 8๊ฐ์ ๊ธฐ๋ณธ ์๋ฃํ์ ๊ฐ์ฒด๋ก ๋ค๋ฃจ๊ธฐ ์ํด ํฌ์ฅํ ์ฐธ์กฐ ์๋ฃํ์ด๋ค. ์ด ํด๋์ค๋ค์ ๋ชจ๋ java.lang ํจํค์ง์ ํฌํจ๋์ด ์๋ค.
ArrayList, HashMap ๋ฑ ์๋ฐ์ ์ ๋ค๋ฆญ ๊ธฐ๋ฐ ์ปฌ๋ ์
ํ๋ ์์ํฌ๋ ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ฒด๋ง ์ฒ๋ฆฌํ๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ์๋ฃํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ๋ํผ ํด๋์ค๋ก ๋ณํํด์ผ ํ๋ค. null ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ๋ฐ๋ฉด ๋ํผ ํด๋์ค๋ ์ฐธ์กฐ ์๋ฃํ์ด๋ฏ๋ก null ๊ฐ์ ํ ๋นํ ์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฑ์์ ๊ฐ์ด ์๋ ์ํ๋ฅผ ํํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. byte -> Byte short -> Short int -> Integer long -> Long float -> Float double -> Double char -> Character boolean -> Boolean
๋ฐ์ฑ์ ๊ธฐ๋ณธ ์๋ฃํ์ ๊ฐ์ ๋ํผ ํด๋์ค ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ฉฐ ์ธ๋ฐ์ฑ์ ๋ํผ ํด๋์ค ๊ฐ์ฒด์ ์ ์ฅ๋ ๊ฐ์ ๋ค์ ๊ธฐ๋ณธ ์๋ฃํ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค.
์๋ฐ์์๋ JDK 1.5๋ถํฐ ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ์คํ ๋ฐ์ฑ๊ณผ ์คํ ์ธ๋ฐ์ฑ์ ์ง์ํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ๊ฐ์ฒด ์์ฑ์ด๋ ๊ฐ ์ถ์ถ ๋ฉ์๋๋ฅผ ์ง์ ํธ์ถํ์ง ์์๋ ๊ธฐ๋ณธ ์๋ฃํ๊ณผ ๋ํผ ํด๋์ค ๊ฐ ๋ณํ์ด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
// ์คํ ๋ฐ์ฑ: ๊ธฐ๋ณธํ -> Wrapper
Integer numObj = 10; // Integer.valueOf(10) ์๋ ์ ์ฉ
// ์คํ ์ธ๋ฐ์ฑ: Wrapper -> ๊ธฐ๋ณธํ
int num = numObj; // numObj.intValue() ์๋ ์ ์ฉ
