Post

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;

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-05 แ„‹แ…ฉแ„’แ…ฎ 8 39 43

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

Screenshot 2024-07-30 at 10 33 31

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

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-05 แ„‹แ…ฉแ„’แ…ฎ 8 37 53

after chAry1[0]= 'Z'

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-12-05 แ„‹แ…ฉแ„’แ…ฎ 8 38 43

new String() ๐Ÿ†š โ€œโ€

  • new String()
  • new object
  • new memory
  • GC to manage memory


  • ""
  • reference already created String
  • not a new object
  • ๐Ÿ‘๐Ÿป efficient memory resource
  • ๐Ÿ‘๐Ÿป faster
This post is licensed under CC BY 4.0 by the author.