Java์์๋ ์ซ์ํ ํ์
์ผ๋ก double๊ณผ Double ๋ ๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.
์ฒ์ ๊ณต๋ถํ ๋ ๋๊ฐ์ ๋ณด์ด์ง๋ง, ์ค๋ฌด์์ ์ ๋ง ์ค์ํ ์ฐจ์ด๋ฅผ ๊ฐ์ง๋๋ค.
์ด๋ฒ ํฌ์คํ
์์๋ ์ด ๋์ ์ฐจ์ด์ ์ค์ ๋ก ์ธ์ ์ด๋ค ๊ฑธ ์จ์ผ ํ๋์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธ ๊ฐ๋
| ํญ๋ชฉ | double | Double |
| ํ์ | ๊ธฐ๋ณธํ(primitive) | ์ฐธ์กฐํ(wrapper class) |
| null ํ์ฉ | โ ๋ถ๊ฐ | โ ๊ฐ๋ฅ |
| ๊ธฐ๋ณธ๊ฐ | 0.0 | null |
| ์ฌ์ฉ ๋ชฉ์ | ๋น ๋ฅธ ๊ณ์ฐ, ๋จ์ํ ์์น ์ฒ๋ฆฌ | null์ฒ๋ฆฌ, ์ปฌ๋ ์ /๊ฐ์ฒด ์กฐ์ |
์ ๋๊ฐ์ง๊ฐ ์กด์ฌํ ๊น?
Java๋ ์ฑ๋ฅ์ ์ํด ์ซ์ํ์ primitive ํ์
์ผ๋ก ์ค๊ณํ์ง๋ง,
์ปฌ๋ ์
(List, Map ๋ฑ)์ ๋ด๊ฑฐ๋ null ์ํ๋ฅผ ํํํด์ผ ํ ๋๋ ๊ฐ์ฒด๋ก์จ ๋ค๋ค์ผ ํฉ๋๋ค.
๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด Wrapper Class, ์ฆ Double ์
๋๋ค.
(int → Integer, boolean → Boolean ๋ฑ๋ ๊ฐ์ ๊ฐ๋
)
์์๋ก ๋ณด๋ ์ฐจ์ด
๊ธฐ๋ณธํ์ null์ ๋ฃ์ ์ ์๋ค.
double a = null; // ์ปดํ์ผ ์๋ฌ ๋ฐ์!
์ฐธ์กฐํ์ null ๊ฐ๋ฅ!
Double b = null; // ์ ์ ๋์
์ธ์ Double์ ์จ์ผ ํ ๊น?
1. DB์ ์ฐ๋ํ ๋ (JPA ๋ฑ)
@Entity
public class WeightRecord {
private Double weight; // null ํ์ฉ → DB์ NULL ๊ฐ ๋งคํ ๊ฐ๋ฅ
}
2. ์ปฌ๋ ์ ์ ๋ด์ ๋
List<Double> weightList = new ArrayList<>();
3. ๊ฐ์ด ์๋ ์ํ(null)๋ฅผ ์๋ฏธํด์ผ ํ ๋
if (record.getMuscle() == null) {
// ์์ง ๊ธฐ๋ก๋์ง ์์ ๊ฐ ์ฒ๋ฆฌ
}
์คํ ๋ฐ์ฑ / ์ธ๋ฐ์ฑ
Java๋ ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ ๊ฐ์ ๋ณํ์ ์๋์ผ๋ก ํด์ค๋๋ค.
Double a = 3.14; // ์คํ ๋ฐ์ฑ (double → Double)
double b = a; // ์ธ๋ฐ์ฑ (Double → double)
ํ์ง๋ง a๊ฐ null์ด๋ฉด?
Double a = null;
double b = a; // โ NullPointerException ๋ฐ์!
→ ์ฃผ์! ์ธ๋ฐ์ฑ ์ null์ด๋ฉด NPE ํฐ์ง ์ ์์
๊ฒฐ๋ก
| ์ํฉ | ์ถ์ฒ ํ์ |
| ๋น ๋ฅธ ๊ณ์ฐ, null ๋ถํ์ | double |
| DB ์ ์ฅ, null ํ์ฉ, ๋ฆฌ์คํธ ๋ฑ | Double |
์ ๋ฆฌํ์๋ฉด, ์ค๋ฌด์์๋ Double์ ๋ ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ํนํ JPA Entity, ์ฌ์ฉ์ ์
๋ ฅ๊ฐ, ๊ทธ๋ํ ๋ฐ์ดํฐ ๋ฑ์์๋ ๋๋ถ๋ถ null์ ๊ณ ๋ คํด์ผ ํ๋๊น์.
ํจ๊ป ๋ณด๋ฉด ์ข์ Wrapper Class
| ๊ธฐ๋ณธํ | ์ฐธ์กฐํ |
| int | Integer |
| double | Double |
| boolean | Boolean |
| char | Character |