[์ž๋ฐ” ์Šคํ„ฐ๋””] 2์ฃผ์ฐจ ์ •๋ฆฌ

January 18, 2023์— ์ž‘์„ฑ
study halle image

๋ชฉํ‘œ

์ž๋ฐ”์˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…, ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค.

ํ•™์Šตํ•  ๊ฒƒ

  • ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž… ์ข…๋ฅ˜์™€ ๊ฐ’์˜ ๋ฒ”์œ„ ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ ๊ฐ’
  • ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…๊ณผ ๋ ˆํผ๋Ÿฐ์Šค ํƒ€์ž…
  • ๋ฆฌํ„ฐ๋Ÿด
  • ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„์™€ ๋ผ์ดํ”„ํƒ€์ž„
  • ํƒ€์ž… ๋ณ€ํ™˜, ์บ์ŠคํŒ… ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž… ํ”„๋กœ๋ชจ์…˜
  • 1์ฐจ ๋ฐ 2์ฐจ ๋ฐฐ์—ด ์„ ์–ธํ•˜๊ธฐ
  • ํƒ€์ž… ์ถ”๋ก , var

Primitive Type

TypeContainsDefaultSizeRange
booleantrue or falsefalse1bit
charunicode\u000016bits\u0000 ~ \uffff
bytesigned integer08bits-128 ~ 127
shortsigned integer016bitsโ€“32768 ~ 32767
intsigned integer032bitsโ€“2147483648 ~ 2147483647
longsigned integer064bits9223372036854775808 ~ 9223372036854775807
floatIEEE 754 floating point0.032bits1.4Eโ€“45 ~ 3.4028235E+38
doubleIEEE 754 floating point0.064bits4.9Eโ€“324 ~ 1.7976931348623157E+308

+) Java์—๋Š” unsigned primitive type์ด ์—†๋‹ค.

Primitive vs Reference

  • Primitve๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ •์˜ํ•  ์ˆ˜ ์—†์Œ.
  • Primitive๋Š” ๊ฐ’ ์ž์ฒด๋ฅผ ํ‘œํ˜„ํ•˜์ง€๋งŒ, Reference ํƒ€์ž…์€ ๋ฉ”๋ชจ๋ฆฌ ์ฐธ์กฐ ๊ฐ’์ž„.
  • Primitive๋Š” ๊ฐ’์„ ํ•ญ์ƒ ์ „์ฒด ๋ณต์‚ฌํ•ด์„œ ์ „๋‹ฌํ•˜์ง€๋งŒ, Reference๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’๋งŒ์„ ์ „๋‹ฌํ•˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” ํž™์— ์ €์žฅ๋˜์–ด GC์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

Boxing, Unboxing

Java์—์„œ๋Š” Primitive type์˜ Wrapperํด๋ž˜์Šค(Boolean, Byte, Short, Character, Integer, Long, Float, Double)๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ฃผ๋กœ Collection์— ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค(Generic์€ ์ฐธ์กฐ ๊ฐ’๋งŒ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ). ex List<Integer>

  • Boxing : Primitive โ†’ Reference
  • Unboxing: Reference โ†’ Primitive

Java์—์„œ boxing,unboxing์€ ํƒ€์ž… ์บ์ŠคํŒ… ํ•„์š”์—†์ด ์ž๋™์œผ๋กœ ์ผ์–ด๋‚œ๋‹ค. ๋ถˆํ•„์š”ํ•œ boxing, unboxing์€ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ Collections๋กœ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด Primitive๋ฅผ ์“ฐ์ž.

Literal

์ƒ์ˆ˜๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž.

1    1.0    '1'    1L    "one"    true    false    null
  • integer literal โ†’ int๋กœ ์ทจ๊ธ‰.
    • long โ†’ L , octa โ†’ 0 , hex โ†’ 0x , binary โ†’ 0b๋ฅผ ๋ถ™์—ฌ์•ผ ํ•จ
  • floating point๋Š” overflow๋‚˜๋ฉด Infinity. underflow๋‚˜๋ฉด 0.
double inf = 1.0/0.0;             // Infinity
double neginf = -1.0/0.0;         // Negative infinity
double negzero = -1.0/inf;        // Negative zero
double NaN = 0.0/0.0;             // Not a Number

๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

int <๋ณ€์ˆ˜ ์ด๋ฆ„> = 0; // primitive type
Player <๋ณ€์ˆ˜ ์ด๋ฆ„> = new Player(); // reference type์€ new์™€ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ ์ดˆ๊ธฐํ™”

๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„์™€ ๋ผ์ดํ”„ํƒ€์ž„

  • ํด๋ž˜์Šค ๋ณ€์ˆ˜ - ํด๋ž˜์Šค๋กœ๋”๊ฐ€ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น (static). ๋ชจ๋“  ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ .
  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ - ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๊ณ  ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•ด์ œ๋  ๋•Œ ๊ฐ™์ด ํ•ด์ œ๋จ.
  • ์ง€์—ญ ๋ณ€์ˆ˜ - ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์„ ์–ธ. ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํƒ€์ž… ๋ณ€ํ™˜, ์บ์ŠคํŒ… ๊ทธ๋ฆฌ๊ณ  ํƒ€์ž… ํ”„๋กœ๋ชจ์…˜

  • ํƒ€์ž… ๋ณ€ํ™˜
    • ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ
  • ํƒ€์ž… ์บ์ŠคํŒ… (๊ฐ•์ œ ๋ณ€ํ™˜)
    • () ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ๊ฐ•์ œ๋กœ ํ˜•๋ณ€ํ™˜ํ•œ๋‹ค.
    • ๊ฐ•์ œ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’ ์†์‹ค์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ex (int)3.14f -> 3
  • ํƒ€์ž… ํ”„๋กœ๋ชจ์…˜ (์ž๋™ ๋ณ€ํ™˜)
    • ํ•˜์œ„ ํƒ€์ž…์ด ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ.
    • byte โ†’ short โ†’ int โ†’ long โ†’ float โ†’ double

1์ฐจ ๋ฐ 2์ฐจ ๋ฐฐ์—ด ์„ ์–ธํ•˜๊ธฐ

int[] arr1 = new int[2]; // 1์ฐจ์› ๋ฐฐ์—ด

int[][] arr = new int[2][3]; // 2x3 ๋ฐฐ์—ด
int[][] arr = new int[][] {{1,0}, {2}}; // ์„ ์–ธ๊ณผ ๋™์‹œ ์ดˆ๊ธฐํ™”, ์„œ๋กœ ๋‹ค๋ฅธ ๊ธธ์ด๋กœ ์„ ์–ธ ๊ฐ€๋Šฅ.

ํƒ€์ž… ์ถ”๋ก , var

var list = new ArrayList<String>();

Java10๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ, ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ์ดˆ๊ธฐํ™” ๊ฐ’์„ ๋ฐ”ํƒ•์œผ๋กœ ํƒ€์ž…์„ ์ถ”๋ก ํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ(.NET์—๋„ ์žˆ๋‹ค). ์„ ์–ธ ์‹œ ํƒ€์ž…์„ ์—ฌ๋Ÿฌ๋ฒˆ ์“ฐ์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ‘œํ˜„ํ•˜๊ธฐ ๊ณค๋ž€ํ•œ ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ๋„ ์ข‹๋‹ค. ๋‹ค๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋“ค์€ var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ์ถ”๋ก ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

var x; // ์ดˆ๊ธฐํ™” ํ•„์š”
var x = null // null๋กœ๋Š” ์ดˆ๊ธฐํ™” ๋ถˆ๊ฐ€
var arr = {1,2,3} // ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”๋Š” ๋ถˆ๊ฐ€
var f = () -> {} // lambda ๋ถˆ๊ฐ€

์ฐธ๊ณ