๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[JAVA] ๋ณ€์ˆ˜

by ๋Œ€๋ณต2 2024. 7. 15.

๊ธฐ๋ณธ ์ž๋ฃŒํ˜•

JAVA์˜ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•(Primitive Types)์€ ๋‹ค์Œ 8๊ฐ€์ง€์ด๋‹ค

์ข…๋ฅ˜ ์ž๋ฃŒํ˜• ํฌ๊ธฐ ์˜ˆ์‹œ
์ •์ˆ˜ํ˜• byte 1 byte -128 ~ 127
  short 2 bytes -32,768 ~ 32,767
  int 4 bytes -2^31 ~ 2^31-1
  long 8 bytes -2^63 ~ 2^63-1
๋ฌธ์žํ˜• char 2 bytes '\u0000' ~ '\uffff' (์œ ๋‹ˆ์ฝ”๋“œ)
์‹ค์ˆ˜ํ˜• float 4 bytes 32bit ๋ถ€๋™์†Œ์ˆ˜์ 
  double 8 bytes 64bit ๋ถ€๋™์†Œ์ˆ˜์ 
๋…ผ๋ฆฌํ˜• boolean 1bit(๋…ผ๋ฆฌ์  ์˜๋ฏธ) true / false
  • ์ด์™ธ์˜ ์ž๋ฃŒํ˜•์€ ๋ชจ๋‘ ์ฐธ์กฐํ˜•์ด๋‹ค.
  • ์‹ค์ˆ˜ ๋’ค์— f๊ฐ€ ๋ถ™์–ด์žˆ์œผ๋ฉด float, ์—†์œผ๋ฉด double
  • ์ž๋ฐ”๋Š” 5๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ์ด๋‹ค.(5์ด์ƒ ์˜ฌ๋ฆผ, IEEE 754 ํ‘œ์ค€)

 

var

JAVA 10๋ถ€ํ„ฐ ๋„์ž…๋œ ์ง€์—ญ ๋ณ€์ˆ˜ ํƒ€์ž… ์ถ”๋ก  ํ‚ค์›Œ๋“œ๋‹ค.

  • ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™”๋œ ํƒ€์ž…์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ณ ์ •(์ž๋ฐ”๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์  ํƒ€์ž… ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ)
  • JS์ฒ˜๋Ÿผ ๋ง‰ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.
  • var a = 10; // int๋กœ ์ถ”๋ก ๋จ a = "hello"; // โŒ ์ปดํŒŒ์ผ ์—๋Ÿฌ

 

๋ฌต์‹œ์  ํ˜•๋ณ€ํ™˜

๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘์€ ๋ฒ”์œ„ -> ํฐ ๋ฒ”์œ„๋กœ ์ž๋™ ํ˜•๋ณ€ํ™˜์ด ๋ฐœ์ƒ

long์€ 8byte๊ณ  float๋Š” 4byte์ธ๋ฐ ์™œ ๋” ํฌ๋‹ค๊ณ  ์ธ์‹๋˜๋Š”๊ฐ€?
=> ์ด๋Š” long์˜ ํ‘œํ˜„ ๋ฐฉ์‹๊ณผ float์˜ ํ‘œํ˜„๋ฐฉ์‹์˜ ์ฐจ์ด๊ฐ€ ๋‚˜์„œ ๊ทธ๋ ‡๋‹ค.

 

long(์ •์ˆ˜ ํ‘œํ˜„)์€ ์ฒซ 1bit๋ฅผ ๋ถ€ํ˜ธ๋กœ, ๋‚˜๋จธ์ง€๋Š” ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” bit๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
๋ฐ˜๋ฉด float(๋ถ€๋™์†Œ์ˆ˜์  ๋ฐฉ์‹)๋Š” ๋ถ€ํ˜ธ 1bit + ์ง€์ˆ˜ 8bit + ์ˆซ์ž 23bit๋กœ ๊ธฐ๋ก๋˜๊ณ , ์ง€์ˆ˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์ œ๊ณฑ์ด๋‹ค.
=> ์ˆซ์ž * 2^n์œผ๋กœ ๊ธฐ๋กํ•œ๋‹ค๋Š” ์†Œ๋ฆฌ์ด๋‹ค.


๊ทธ๋Ÿฌ๋ฏ€๋กœ float์˜ ๋ฒ”์œ„๋Š” long๋ณด๋‹ค ์ปค์ง€๊ฒŒ ๋˜๊ณ  ๋ฌต์‹œ์  ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ๊ฒƒ์ด๋‹ค.
์˜ˆ: Float.MAX_VALUE ≈ 3.4 * 10^38 > Long.MAX_VALUE ≈ 9.2 * 10^

 

String

String์€ ๊ฐ์ฒด(์ฐธ์กฐํ˜•)์ด๋ฉฐ, ๋ถˆ๋ณ€์ด๋‹ค.(๋ฌธ์ž์—ด ๊ณต์œ  ์ค‘, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์œ„ํ—˜์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ์žฅ์ )

String str = "Hello";
str += " World";  // ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  str์ด ๊ทธ๊ฒƒ์„ ์ฐธ์กฐํ•จ
String str1 = null; // str1์€ ์•„๋ฌด ๊ฐ์ฒด๋„ ์ฐธ์กฐ ํ•˜์ง€ ์•Š์•˜๋‹ค.
String str2 ; // ์„ ์–ธ๋งŒ ํ•จ, ์ดˆ๊ธฐ๊ฐ’์ด ์—†์Œ => ์‚ฌ์šฉ ์ „ ์ดˆ๊ธฐํ™” ํ•„์ˆ˜

str1๊ณผ str2๋Š” ๋‹ค๋ฅด๋‹ค.

  1. str1 = null;
  • ์ •์˜ + ์ดˆ๊ธฐํ™” ์™„๋ฃŒ
  • str1์€ ๋ช…์‹œ์ ์œผ๋กœ "์•„๋ฌด ๊ฐ์ฒด๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š์Œ(null)"์„ ๊ฐ€๋ฆฌํ‚ด.
  • ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋‹ด๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ์ฃผ์†Œ๊ฐ’ ๋Œ€์‹  null ๋ฆฌํ„ฐ๋Ÿด์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
  • ์ฆ‰, "์•Œ๊ณ ๋Š” ์žˆ์œผ๋‚˜ ์•„๋ฌด ๊ฒƒ๋„ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Œ" ์ƒํƒœ์ž„.

=> ์ด ์ƒํƒœ์—์„œ str1.length() ๋“ฑ ํ˜ธ์ถœํ•˜๋ฉด NullPointerException ๋ฐœ์ƒ.

  1. String str2;
  • ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์Œ
  • ์ด ์ƒํƒœ๋กœ๋Š” ์ปดํŒŒ์ผ์กฐ์ฐจ ์•ˆ ๋จ (์ง€์—ญ ๋ณ€์ˆ˜ ๊ธฐ์ค€)
  • ์ฆ‰, "์•„์ง ์–ด๋–ค ๊ฐ’๋„ ๋ถ€์—ฌ๋œ ์  ์—†์Œ" ์ƒํƒœ์ž„
  • ์ž๋ฐ”๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ดˆ๊ธฐํ™”๋ฅผ ๊ฐ•์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, str2๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ.
๊ตฌ๋ถ„ ์˜๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ์˜ˆ์™ธ ์—ฌ๋ถ€
str1 = null; ๋ช…์‹œ์  null ์ฐธ์กฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (์ปดํŒŒ์ผ ๊ฐ€๋Šฅ) ๋Ÿฐํƒ€์ž„์— NPE ๋ฐœ์ƒ ๊ฐ€๋Šฅ
String str2; ์„ ์–ธ๋งŒ ๋จ (์ดˆ๊ธฐํ™” ์•ˆ ๋จ) ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ (์ปดํŒŒ์ผ ์—๋Ÿฌ) ์˜ˆ์™ธ ์ „์— ์ปดํŒŒ์ผ ์‹คํŒจ

 

Wrapper Class

์•„๊นŒ ๋‚˜์˜จ ๊ธฐ๋ณธ ์ž๋กœํ˜•์„ ๊ฐ์ฒด๋กœ ํฌ์žฅํ•œ Wrapper Class๊ฐ€ ์žˆ๋‹ค.

  • ์ž๋ฐ”๋Š” ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ์–ธ์–ด์ด๊ณ , ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ฐ์ฒด๋กœ ํƒ€์ž…์„ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ(ex: ์ปฌ๋ ‰์…˜, ์ œ๋„ค๋ฆญ)
  • ๊ธฐ๋ณธํ˜• → ๊ฐ์ฒด๋กœ ํฌ์žฅํ•˜๋Š” ๊ฒƒ(Boxing)
  • ๊ฐ์ฒด → ๊ธฐ๋ณธํ˜• ๊ฐ’์œผ๋กœ ๊บผ๋‚ด๋Š” ๊ฒƒ(UnBoxing)
  • JAVA 5 ๋ถ€ํ„ฐ ์ž๋™ ๋ฐ•์‹ฑ/์–ธ๋ฐ•์‹ฑ์„ ์ง€์›
๊ธฐ๋ณธํ˜• ๋ž˜ํผ ํด๋ž˜์Šค
int Integer
byte Byte
short Short
long Long
float Float
double Double
char Character
boolean Boolean

'Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] ์ฝ”๋“œ ์™ธ ์ž‘์„ฑํ•  ๊ฒƒ๋“ค  (0) 2024.07.17
[JAVA] ์ƒ์†  (0) 2024.07.17
[JAVA] ๊ฐ์ฒด  (0) 2024.07.16
[JAVA] ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2024.07.15
[JAVA] ์ž๋ฐ” ์ž…๋ฌธ  (0) 2024.07.10