๋ฐ์ดํฐ ํ์ (data type)์ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ํ๋ก๊ทธ๋จ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋์ด์ผ ํ๋์ง๋ฅผ ๋ช ์์ ์ผ๋ก ์๋ ค์ฃผ๋๊ฒ, ๋ฐ์ดํฐํ์ ์ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ (primitive type) ๊ณผ ์ฐธ์กฐ ๋ฐ์ดํฐ ํ์ (reference type) ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๊ธฐ๋ณธ ํ์ (primitive type)
์ค์ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ, ์คํ(stack) ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค. ์๋ฐ์์ ์ฌ๋ฌ ํํ์ ํ์ ์ 8๊ฐ๋ก ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์ ๊ณตํ ๊ฒ์ด ๊ธฐ๋ณธ ํ์ ์ด๋ค.
1. ์ ์ํ ํ์
- ์๋ฐ์์์ ์ ์๋ ๋ถํธ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์์ ๋ถ๋ถ์ด ์๋ ์๋ฅผ ์๋ฏธ ( byte / short / int / long )
- ์ ์ํ ๋ฐ์ดํฐ ํ์ ๊ฒฐ์ ์ ๋ฐ๋์ ์์ ์ด ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํด ๊ฒฐ์
- ํด๋น ํ์ ์ด ํํํ ์ ์๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ ์ฅํ๊ฒ ๋๋ฉด ์ค๋ฒํ๋ก์ฐ(overflow)๊ฐ ๋ฐ์ํด ์ ํ ๋ค๋ฅธ ๊ฐ์ด ์ ์ฅ๋ ์๋ ์๋ค.
overflow - ์ต์์ ๋นํธ(MSB)๋ฅผ ๋ฒ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ธ์ ๋นํธ๋ฅผ ๋ฎ์ด ์ฐ๊ฒ ๋๋ค.
underflow - ํด๋น ํ์ ์ด ํํํ ์ ์๋ ์ต์ ๋ฒ์๋ณด๋ค ์์ ์๋ฅผ ์ ์ฅํ ๋ ๋ฐ์ํ๋ค.
์ ์ํ ํ์ | ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ | ๋ฐ์ดํฐ ํํ ๋ฒ์ |
byte | 1๋ฐ์ดํธ | -128 ~ 127 |
short | 2๋ฐ์ดํธ | -215 ~ (215 - 1) |
-32,768 ~ 32,767 | ||
int | 4๋ฐ์ดํธ | -231 ~ (231 - 1) |
-2,147,483,648 ~ 2,147,483,647 | ||
long | 8๋ฐ์ดํธ | -263 ~ (263 - 1) |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
- ์๋ฐ์์ ์ ์ํ ํ์ ์ค ๊ธฐ๋ณธ์ด ๋๋ ํ์ ์ด int. ์ปดํจํฐ ๋ด๋ถ์ ์ผ๋ก ์ ์ํ ์ค์์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ค.
int age = 30; // '', "" ์ฐ์ง ์๊ณ ์ ์ ์
๋ ฅ
2. ์ค์ํ ํ์
- ์๋ฐ์์ ์ค์๋ ์์๋ถ๋ ์ง์๋ถ๊ฐ ์๋ ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- ์ ์๋ณด๋ค ํจ์ฌ ๋ ๋์ ํํ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค. ( float / double )
- ๊ณผ๊ฑฐ์๋ floatํ์ ๋ง์ด ์ฌ์ฉํ์ผ๋ ํ๋์จ์ด ๋ฐ๋ฌ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ฆ๊ฐํด ํ์ฌ๋ doubleํ์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
( doubleํ์ด floatํ๋ณด๋ค ํจ์ฌ ๋ ํฐ ๋ฒ์ ํํ์ด ๊ฐ๋ฅํ๋ค. )
- ํํ ๋ฒ์ ์ด์ธ ์ ํจ ์๋ฆฟ์๋ฅผ ๊ณ ๋ คํด์ ์ฌ์ฉํ๋ค.
์ค์ํ ํ์ | ์ง์์ ๊ธธ์ด | ๊ฐ์์ ๊ธธ์ด | ์ ํจ ์๋ฆฟ์ |
float | 8๋นํธ | 23๋นํธ | ์์ ๋ถ๋ถ 6์๋ฆฌ๊น์ง ์ค์ฐจ์์ด ํํํ ์ ์์ |
double | 11๋นํธ | 52๋นํธ | ์์ ๋ถ๋ถ 15์๋ฆฌ๊น์ง ์ค์ฐจ์์ด ํํํ ์ ์์ |
์ค์ํ ํ์ | ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ | ๋ฐ์ดํฐ์ ํํ ๋ฒ์ | ๋ฆฌํฐ๋ด ํ์ ์ ๋ฏธ์ฌ |
float | 4๋ฐ์ดํธ | (3.4 X 10-38) ~ (3.4 X 1038) | F ๋๋ f |
double | 8๋ฐ์ดํธ | (1.7 X 10-308) ~ (1.7 X 10308) | D ๋๋ d (์๋ต ๊ฐ๋ฅ) |
double pi = 3.14; // ์ ๋ฏธ์ฌ d ์๋ต ๊ฐ๋ฅ
float rate = 0.5f; // ์ ๋ฏธ์ฌ f ์์ฑ
3. ๋ฌธ์ํ ํ์
- ์์ ์ ์๋ ๋ฌธ์ ํ๋๋ฅผ ํํํ ์ ์๋ ํ์ (char)
- ์ปดํจํฐ๋ 2์ง์๋ฐ์ ์ธ์ํ์ง ๋ชปํ๋ฏ๋ก ๋ฌธ์๋ ์ซ์๋ก ํํํด์ผ ์ธ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ๋ฌธ์๋ฅผ ์ด๋ค ์ซ์์ ๋์์ํฌ ๊ฒ์ธ์ง์ ๋ํ ์ฝ์์ด ํ์ํด์ง.
- C์ธ์ด์ C++์์๋ ์์คํค์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ํํํ๋ ์๋ฐ์์๋ ์ ๋์ฝ๋(unicode) ๋ฅผ ์ฌ์ฉํด ๋ฌธ์๋ฅผ ํํํจ.
- ์ ๋์ฝ๋๋ ๋ฌธ์ ํ๋๋ฅผ 16๋นํธ๋ก ํํํด ์ด 65,536๊ฐ์ ๋ฌธ์๋ฅผ ํํํ ์ ์์.
๋ฌธ์ํ ํ์ | ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ | ๋ฐ์ดํฐ์ ํํ ๋ฒ์ |
char | 2๋ฐ์ดํธ | 0 ~ 216 |
char gender = '๋จ'; // ๋ฆฌํฐ๋ด ' ' ์ฌ์ฉ
4. ๋ ผ๋ฆฌํ ํ์
- ์ฐธ(true) ํน์ ๊ฑฐ์ง (false) ์ค ํ ๊ฐ์ง ๊ฐ๋ง ๊ฐ์ง ์ ์๋ ๋ถ๋ฆฐ(boolean) ํ์
- boolean์ ๊ธฐ๋ณธ ๊ฐ์ false ์ด๋ฉฐ, ๊ธฐ๋ณธ ํ์ ์ค ๊ฐ์ฅ ์์ ํฌ๊ธฐ์ธ 1๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ค.
๋ ผ๋ฆฌํ ํ์ | ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ | ๋ฐ์ดํฐ์ ํํ ๋ฒ์ |
boolean | 1๋ฐ์ดํธ | true ๋๋ false |
boolean isTrue = true; // ์ฐธ ๊ฐ
boolean isFalse = false; // ๊ฑฐ์ง ๊ฐ ( 0 )
์ฐธ์กฐ ํ์ (Reference type)
์ค์ ๊ฐ์ ์ ์ฅํ์ง ์๋, ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ณณ์ ์ฃผ์๊ฐ์ผ๋ก ๋น์ด์๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง null ๊ฐ๋ ์ด ์กด์ฌํ๊ฒ ๋๋ค. ์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๋ ํ(Heep) ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค. ๋ฐฐ์ด, ์ด๊ฑฐ, ํด๋์ค, ์ธํฐํ์ด์ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
1. ๋ฐฐ์ด (Array)
- ๋ฐฐ์ด์ ๋์ผํ ํ์ ์ ์ฌ๋ฌ ๊ฐ์ ์ ์ฅํ๊ณ ์ ๊ทผํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์๋ฐ์์ ๋ง์ด ํ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ ์ค ํ๋์ด๋ค.
/*
๊ธฐ๋ณธํํ
๋ฐ์ดํฐํ์
[] ์๋ณ์ = {};
๊ธฐ๋ณธ๊ฐ : null
*/
public class Example {
public static void main(String[] args) {
// ์ ์ํ ๋ฐฐ์ด ์ ์ธ๊ณผ ์ด๊ธฐํ
int[] numbers = { 1, 2, 3, 4, 5 };
// ๋ฌธ์์ด ๋ฐฐ์ด ์ ์ธ๊ณผ ์ด๊ธฐํ
String[] names = { "Alice", "Bob", "Charlie" };
// ๋ฐฐ์ด ์์์ ์ ๊ทผํ์ฌ ์ถ๋ ฅ
System.out.println("numbers ๋ฐฐ์ด ์์:");
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
System.out.println("names ๋ฐฐ์ด ์์:");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
2. ์ด๊ฑฐ (Enumeration)
- enum์ ์ ํ๋ ์ ํ์ง๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ ์ฉํ๋ฉฐ, ๊ฐ๋ ์ฑ๊ณผ ์์ ์ฑ์ ๋์ผ ์ ์๋ ์ฅ์ ์ด ์๋ค.
// ํค์๋ enum ์ฌ์ฉ
// ๊ธฐ๋ณธ๊ฐ null
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class Example {
public static void main(String[] args) {
// enum ๊ฐ ์ฌ์ฉ
Day today = Day.WEDNESDAY;
// switch ๋ฌธ์ผ๋ก enum ๊ฐ์ ๋ฐ๋ฅธ ๋์ ์ํ
switch (today) {
case MONDAY:
System.out.println("์์์ผ์
๋๋ค.");
break;
case TUESDAY:
System.out.println("ํ์์ผ์
๋๋ค.");
break;
case WEDNESDAY:
System.out.println("์์์ผ์
๋๋ค.");
break;
case THURSDAY:
System.out.println("๋ชฉ์์ผ์
๋๋ค.");
break;
case FRIDAY:
System.out.println("๊ธ์์ผ์
๋๋ค.");
break;
case SATURDAY:
System.out.println("ํ ์์ผ์
๋๋ค.");
break;
case SUNDAY:
System.out.println("์ผ์์ผ์
๋๋ค.");
break;
}
}
}
3. ํด๋์ค (class)
- Class ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๊ณ , ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฉ์๋์ ์ ๊ทผํ์ฌ ์ํ๋ ์์ ์ ์ํํ ์ ์๋ค.
// ๊ธฐ๋ณธ๊ฐ : null
public class ex { // ex ํด๋์ค ์์ฑ
// .. ์ฝ๋ ์์ฑ
}
4. ์ธํฐํ์ด์ค (interface)
- ์ธํฐํ์ด์ค๋ ๋ฉ์๋์ ์๊ทธ๋์ฒ(๊ตฌ์กฐ)๋ง ์ ์ํ๊ณ ๊ตฌํ์ ๊ฐ์ง ์๋ ์ถ์ํ๋ ๊ฐ๋ ์ด๋ค.
- ๋คํ์ฑ(polymorphism) ๊ณผ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ์ฃผ๋ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ค์ ๊ฐ์ ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ์ ์ธ๋์ด ๋ค์ํ ๊ฐ์ฒด๋ค์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๋คํ์ฑ ์ด๋ ? : [JAVA] - Java - ๊ฐ์ (๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ)
// ์ธํฐํ์ด์ค ์ ์ธ
// ๊ธฐ๋ณธ๊ฐ : null
interface Animal { // Animal ์ธํฐํ์ด์ค ์ ์ธ
void makeSound();
}
// ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค
class Dog implements Animal {
@Override : ์์์ ์ ์ธ๋ makeSound์ ๊ฐ ๋ณ๊ฒฝ
public void makeSound() {
System.out.println("๋ฉ๋ฉ!");
}
}
class Cat implements Animal {
@Override : ์์์ ์ ์ธ๋ makeSound์ ๊ฐ ๋ณ๊ฒฝ
public void makeSound() {
System.out.println("์ผ์น!");
}
}
'๊ฐ๋ฐ ์ด์ผ๊ธฐ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java - ์์ธ ๋ฐ์ ์ฝ๋ (throw new IllegalArgumentException) (0) | 2023.07.04 |
---|---|
Java - ์ดํด๋ฆฝ์ค ํ๊ฒฝ ์ค์ (0) | 2023.07.01 |
Java - ๋ฆฌํฐ๋ด (literals) (0) | 2023.06.29 |
Java - ์์ (constant) (0) | 2023.06.29 |
Java - ๋ณ์ (variable) (0) | 2023.06.29 |