Primitive Type ๐ Reference Type
๐ก Primitive Type
- primitive type์ ๊ฐ ์์ฒด๋ฅผ ๋ฐ๊พผ๋ค.
- ๊ทธ๋์ ๋ฐ๊พผ ๊ฐnum2๋ num1๊ฐ์ธ 1์ด ๋๋ค.
- literal์ ์ ์ผํ ์์์ด๊ธฐ ๋๋ฌธ์ ํญ์ ๊ฐ ์์ฒด๊ฐ ๋ณต์ฌ๋จ
- read only: ๋ฐ๋ผ์ ์๋ณธ์ด ์๋ ๋ณต์ฌ๋ณธ์ ๋ณ๊ฒฝํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์๋ณธ์๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ฏธ์น์ง ๋ชปํ๋ค.
- must be declared before using
- length does not differ depending on OS type
- non-object
- saved on stack memory
primitive types
- boolean
- char
- byte
- short
- int
- long
- float
- double
1
2
3
4
int num1 = 1;
int num2 = 2;
num2 = num1;
num2 = 3;
num1์ ๊ฐ์ 1์ด๊ณ num2์ ๊ฐ์ 2์ด๋ค.
num2์ num1์ ๊ฐ์ ์ ์ฅํ๋ฏ๋ก num1๋ 1, num2๋ 1์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ num1๋ง 3์ผ๋ก ๋ฐ๊พธ๋ฉด, num1์ ๊ฐ์ 3, num2์ ๊ฐ์ ์ฌ์ ํ 1์ด๋ค.
ํ๋์ ๋ณ์์ ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ๋ฃ์ ๋ค์, ํ ๋ณ์์ ๊ฐ์ ๋ฐ๊ฟ๋ ๋ค๋ฅธ ๋ณ์์ ๊ฐ์ ๋ฐ๋์ง ์๋๋ค.
primitive type์ ๊ฐ์ ๋ณต์ฌํด์ ๋ฃ์ด์ค๋ค. ๊ทธ๋์ ๋ ๋ณ์์ ๊ฐ์ ์ ํ ๋ค๋ฅธ ๊ฐ์ด๊ณ , ์๋ก ์ํฅ์ ์ฃผ๊ณ ๋ฐ์ง ์๋๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ์ข
์ด๋ฅผ ๋ณต์ฌํด ๋ ๊ฐ๋ฅผ ๋ง๋ค์๋๋ฐ, ํ ์ข
์ด์ ์ด๋ค๊ณ ํด์ ๋ค๋ฅธ ์ข
์ด์๋ ๋ง ์ฐ์ฌ์ง์ง๋ ์๋ ๊ฒ์ฒ๋ผ.
๐ก Reference Type
- Reference Type์ ์ธ์คํด์ค์ ์ฃผ์๋ฅผ ์ ์ฅ
- Reference Type์ ๊ฐ ์์ฒด๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ์ฅ์๋ฅผ ์๋ ค์ค๋ค.
- new๋ก ๋ง๋ค์ด์ง ์น๊ตฌ๋ค์ ๋ชจ๋ ๊ฐ์ฒด
- ๊ฐ์ฒด๋ ๋ค ์๋ก ๋ง๋ค์ด ๋ธ ๋ฌผ๊ฑด, ์๋ก ์ฃผ์๋ฅผ ๊ณต์ ํ๋ค.
- primitive types inheritate
java.lang.Object
- created in Heap
read & write: ๋ณ์์ ์๋ณธ ๊ฐ์ ์ฝ๊ณ ์๋ณธ์ ๊ฐ์ ๋ณ๊ฒฝ๋ ํ ์ ์๋ค.
reference types
- class
- array
- String: reference type, immutable, use
.equals()
- instance
- enum
๋ฐฐ์ด์ด ์๋ ์ฅ์/์ฃผ์๋ฅผ ์๋ ค์ฃผ๋ Reference type
1
2
3
4
char[] chAry1= {'A', 'B', 'C'}; //[A, B, C]
char [] chAry2= {'L', 'M', 'N'};
chAry2 = chAry1;
chAry1[0]= 'Z';
chAry1์ ๊ฐ์ ๋ฐ๊พธ๋ฉด chAry2์ ๊ฐ๋ ๋ฐ๋์ด๋ฒ๋ฆผ!
๋ฐฐ์ด์์๋ ๋ฐฐ์ด์ด ์๋ ์ด๋ค ์ฅ์/์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ์ด๋ค.
๊ทธ๋์ chAry2 = chAry1;
ํ๋ค๋ ๊ฒ์, ๋ ๋ฐฐ์ด์ด ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฅ์/์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ ๊ฒ.
๋ ๋ฐฐ์ด์ด ๊ฐ์ ์ง ์ฃผ์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๊ทธ๋์ ๊ทธ ์ง์ ๋ฐ๊พธ๊ฒ ๋๋ฉด, ๊ฐ์ ์ง ์ฃผ์๋ฅผ ๊ฐ์ง ๋ ๋ฐฐ์ด ๋ชจ๋ ๋ฐ๋๊ฒ ๋๋ค.
before
after chAry1[0]= 'Z'
new String() ๐ โโ
new String()
- new object
- new memory
- GC to manage memory
""
- reference already created String
- not a new object
- ๐๐ป efficient memory resource
- ๐๐ป faster