Search

λ³€μˆ˜μ™€ μžλ£Œν˜•

λ³€μˆ˜μ™€ μžλ£Œν˜•

β€’
λ³€μˆ˜
β€’
μžλ£Œν˜•
β—¦
κΈ°λ³Έ μžλ£Œν˜•
β—¦
μ°Έμ‘° μžλ£Œν˜•
β—¦
λ³€μˆ˜ν˜• μΆ”λ‘  (var)

λ³€μˆ˜

데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ 곡간

μžλ£Œν˜•

β€’
κΈ°λ³Έ μžλ£Œν˜•
β€’
μ°Έμ‘° μžλ£Œν˜•
β€’
λ³€μˆ˜ν˜• μΆ”λ‘  (var)

κΈ°λ³Έ μžλ£Œν˜•

μžλ°” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ λ©”λͺ¨λ¦¬μ— 값을 직접 μ €μž₯ν•˜λŠ” μžλ£Œν˜• * null 을 κ°€μ§ˆ 수 μ—†λ‹€.
μžλ°” κΈ°λ³Έ μžλ£Œν˜•μ€ 8κ°€μ§€ 이닀.
μžλ£Œν˜•
크기 (λΉ„νŠΈ)
κΈ°λ³Έκ°’
κ°’μ˜ λ²”μœ„
boolean
1 (JVM에 따라 닀름)
false
true λ˜λŠ” false
byte
8
0
-128 ~ 127
char
16
'\u0000'
'\u0000' ~ '\uffff' (0 ~ 65,535)
short
16
0
-32,768 ~ 32,767
int
32
0
-2,147,483,648 ~ 2,147,483,647
long
64
0L
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float
32
0.0f
1.4E-45 ~ 3.4028235E38
double
64
0.0d
4.9E-324 ~ 1.7976931348623157E308

μ°Έμ‘° μžλ£Œν˜•

객체의 μ£Όμ†Œλ₯Ό μ°Έμ‘°ν•˜λŠ” μžλ£Œν˜•
β€’
클래슀
β€’
μΈν„°νŽ˜μ΄μŠ€
β€’
λ°°μ—΄
β€’
μ—΄κ±°νƒ€μž… (enum)

μžλ£Œν˜• μΆ”λ‘  (var)

μžλ°” 10λΆ€ν„° λ„μž…λœ μžλ£Œν˜•μœΌλ‘œ, μ§€μ—­ λ³€μˆ˜ μ„ μ–Έ μ‹œ μžλ£Œν˜•μ„ λͺ…μ‹œν•˜μ§€ μ•Šκ³  μ»΄νŒŒμΌλŸ¬κ°€ μžλ£Œν˜•μ„ μΆ”λ‘ ν•˜μ—¬ μ„ νƒν•΄μ£ΌλŠ” ν‚€μ›Œλ“œ
var ν‚€μ›Œλ“œλ‘œ μžλ£Œν˜• μΆ”λ‘ ν•˜λ„λ‘ μ§€μ •ν•œλ‹€.
μ»΄νŒŒμΌλŸ¬κ°€ μ΅œμ΄ˆμ— ν•œ 번 μΆ”λ‘ ν•˜μ—¬ μ„ μ–Έν•œ μžλ£Œν˜•μ€ λ‹€λ₯Έ μžλ£Œν˜•μœΌλ‘œ μ‚¬μš©ν•  수 μ—†λ‹€.
var number = 10; // int둜 μΆ”λ‘  var text = "Hello"; // String으둜 μΆ”λ‘ 
Java
볡사

μ‹€μˆ˜ μ—°μ‚°μ˜ ν•œκ³„

μ‹€μˆ˜ 연산을 ν•˜κΈ° μœ„ν•΄μ„œ, 컴퓨터가 μ‹€μˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜κ²Œ 되면, μ •μˆ˜ 뢀뢄은 λ¬Έμ œμ—†μ΄ λ³€ν™˜λ˜μ§€λ§Œ μ†Œμˆ˜ 뢀뢄은 2μ§„μˆ˜ ν˜•νƒœμ˜ λ¬΄ν•œμ†Œμˆ˜ ν˜„νƒœλ‘œ 끝없이 λ°˜λ³΅λœλ‹€.
10.1 을 μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 경우
μ‹­μ§„μˆ˜ 10은 μ΄μ§„μˆ˜λ‘œ 1010 으둜 λ³€ν™˜λœλ‹€.
β€’
μ‹­μ§„ μ •μˆ˜λ₯Ό μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 방법 : 10을 2 둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό λ‚˜μ—΄ν•΄μ„œ μ“°κ³ , 거꾸둜 μ½λŠ”λ‹€.
β€’
μ‹­μ§„ μ†Œμˆ˜λ₯Ό μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 방법 : μ†Œμˆ˜ 뢀뢄을 2둜 κ³±ν•˜κ³ , μ •μˆ˜ 뢀뢄을 λ‚˜μ—΄ν•˜μ—¬ μˆœμ„œλŒ€λ‘œ μ½λŠ”λ‹€.
μ†Œμˆ˜λ‘œ μ΄μ§„μˆ˜λ₯Ό κ΅¬ν•˜λŠ” κ³Όμ •μ—μ„œ λ¬΄ν•œμ†Œμˆ˜κ°€ λ°œμƒν•œλ‹€.
μ΄λŸ¬ν•œ 원인 λ•Œλ¬Έμ— μ‹€μˆ˜ μ—°μ‚°μ˜ ν•œκ³„κ°€ λ°œμƒν•œλ‹€.
0.1의 μ΄μ§„μˆ˜λ₯Ό κ΅¬ν•œλ‹€λ©΄,
0.1 Γ— 2 = 0.2 β†’ 0 0.2 Γ— 2 = 0.4 β†’ 0 0.4 Γ— 2 = 0.8 β†’ 0 0.8 Γ— 2 = 1.6 β†’ 1 0.6 Γ— 2 = 1.2 β†’ 1 0.2 Γ— 2 = 0.4 β†’ 0 0.4 Γ— 2 = 0.8 β†’ 0 0.8 Γ— 2 = 1.6 β†’ 1 ...
Java
볡사
0.000110011001100110011001100110011001100110011... (λ¬΄ν•œ 반볡)
Java
볡사
μ΄λŸ¬ν•œ ν˜„μƒμ΄ 있기 λ•Œλ¬Έμ—, μ†Œμˆ˜μ  μ‹€μˆ˜ μ—°μ‚°μ˜ ν•œκ³„κ°€ λ°œμƒν•œλ‹€.

ν•΄κ²° 방법

BigDecimal 객체λ₯Ό μ΄μš©ν•˜μ—¬ μ—°μ‚° λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬, μ‹€μˆ˜ μ—°μ‚° 였차λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.
import java.math.BigDecimal; public class BigDecimalExample { public static void main(String[] args) { BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); BigDecimal c = a.add(b); System.out.println(c); // μ •ν™•νžˆ 0.3 좜λ ₯ } }
Java
볡사

μžλ™ ν˜• λ³€ν™˜

μž‘μ€ μžλ£Œν˜•μ—μ„œ 큰 μžλ£Œν˜•μœΌλ‘œ μžλ™μœΌλ‘œ λ³€ν™˜λ˜λŠ” 것
μ™Όμͺ½ λ³€μˆ˜λ₯Ό κΈ°μ€€μœΌλ‘œ μžλ£Œν˜•μ΄ λ³€ν™˜λ˜λŠ” κ²ƒμœΌλ‘œ, 크기가 μž‘μ€ μžλ£Œν˜•μ„ 더 큰 μžλ£Œν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 경우 μžλ™μœΌλ‘œ λ°œμƒν•œλ‹€.
μžλ™ ν˜• λ³€ν™˜μ€ 데이터 손싀 없이 μ•ˆμ „ν•˜κ²Œ λ³€ν™˜λœλ‹€.
λ³€ν™˜ μˆœμ„œ: byte β†’ short β†’ int β†’ long β†’ float β†’ double
int intValue = 10; long longValue = intValue; // intκ°€ long으둜 μžλ™ λ³€ν™˜ double doubleValue = longValue; // long이 double둜 μžλ™ λ³€ν™˜ System.out.println(longValue); // 10 System.out.println(doubleValue); // 10.0
Java
볡사

λͺ…μ‹œμ  ν˜• λ³€ν™˜ (κ°•μ œ ν˜• λ³€ν™˜)

큰 μžλ£Œν˜•μ„ μž‘μ€ μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•  λ•Œ κ°•μ œλ‘œ μžλ£Œν˜•μ„ λ³€ν™˜ν•˜λŠ” 것
λ³€ν™˜ν•  μžλ£Œν˜•μ„ λͺ…μ‹œν•˜μ—¬ κ°•μ œλ‘œ μžλ£Œν˜•μ„ λ³€ν™˜ν•˜λŠ” κ²ƒμœΌλ‘œ, 크기가 큰 μžλ£Œν˜•μ„ 더 μž‘μ€ μžλ£Œν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 경우 μ‚¬μš©ν•œλ‹€.
ν˜•μ‹: (μžλ£Œν˜•) 데이터;
데이터 손싀이 λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ μ£Όμ˜κ°€ ν•„μš”ν•˜λ‹€.
double doubleValue = 10.5; int intValue = (int) doubleValue; // double을 int둜 κ°•μ œ λ³€ν™˜ System.out.println(intValue); // 10 (μ†Œμˆ˜μ  μ΄ν•˜ 버림) long longValue = 300; byte byteValue = (byte) longValue; // long을 byte둜 κ°•μ œ λ³€ν™˜ System.out.println(byteValue); // 44 (데이터 손싀 λ°œμƒ)
Java
볡사