Java 프로그래밍 언어의 중요한 개념 중 하나인 자료형(Data Types)에 대해 알아보도록 하겠습니다.
자료형은 변수에 저장될 수 있는 데이터의 종류와 크기를 정의하며, 프로그램의 효율성과 정확성을 보장하는 중요한 요소입니다.
Java의 기본 자료형(Primitive Types)과 참조 자료형(Reference Types), 그리고 각 자료형의 특성과 사용법에 대해 정리해보겠습니다.
1. 기본 자료형(Primitive Types)
Java에는 8개의 기본 자료형이 있으며, 이는 다시 정수형, 실수형, 문자형, 논리형으로 분류할 수 있습니다. 기본 자료형은 값 자체를 저장하며, 참조 자료형과 달리 객체를 생성하지 않습니다.
1.1. 정수형 (Integers)
정수형 자료형은 정수 값을 저장하는 데 사용됩니다. Java에서는 4가지 정수형 자료형을 제공합니다:
- byte: 8비트 정수형. -128에서 127까지의 값을 저장할 수 있습니다.
- short: 16비트 정수형. -32,768에서 32,767까지의 값을 저장할 수 있습니다.
- int: 32비트 정수형. -2^31에서 2^31-1까지의 값을 저장할 수 있습니다.
- long: 64비트 정수형. -2^63에서 2^63-1까지의 값을 저장할 수 있습니다.
public class IntegerTypes {
public static void main(String[] args) {
byte b = 100;
short s = 10000;
int i = 100000;
long l = 100000L;
System.out.println("byte value: " + b);
System.out.println("short value: " + s);
System.out.println("int value: " + i);
System.out.println("long value: " + l);
}
}
1.2. 실수형 (Floating-point numbers)
실수형 자료형은 소수점이 있는 숫자를 저장하는 데 사용됩니다. Java에서는 2가지 실수형 자료형을 제공합니다:
- float: 32비트 부동 소수점 형. 단정밀도(float precision)로 저장됩니다.
- double: 64비트 부동 소수점 형. 배정밀도(double precision)로 저장됩니다.
public class FloatingPointTypes {
public static void main(String[] args) {
float f = 5.75f;
double d = 19.99;
System.out.println("float value: " + f);
System.out.println("double value: " + d);
}
}
1.3. 문자형 (Characters)
문자형 자료형은 단일 문자를 저장하는 데 사용됩니다. Java에서 문자는 16비트 유니코드(Unicode)로 표현됩니다.
- char: 16비트 문자형. 하나의 문자를 저장하며, 유니코드 문자 집합을 사용합니다.
public class CharacterType {
public static void main(String[] args) {
char letterA = 'A';
char letterB = 66; // ASCII 코드 값
System.out.println("char value 1: " + letterA);
System.out.println("char value 2: " + letterB);
}
}
1.4. 논리형 (Boolean)
논리형 자료형은 논리 값을 저장하는 데 사용됩니다. 두 가지 값만 가질 수 있습니다: true 또는 false.
- boolean: 1비트 논리형. true 또는 false 값을 저장합니다.
public class BooleanType {
public static void main(String[] args) {
boolean isJavaFun = true;
boolean isFishTasty = false;
System.out.println("Is Java fun? " + isJavaFun);
System.out.println("Is fish tasty? " + isFishTasty);
}
}
2. 참조 자료형(Reference Types)
참조 자료형은 객체의 참조(주소)를 저장하는 데 사용됩니다. Java에서 모든 객체는 참조 자료형에 의해 관리됩니다. 참조 자료형에는 클래스, 인터페이스, 배열이 포함됩니다.
2.1. 클래스 (Classes)
클래스는 객체의 청사진(blueprint)으로, 객체의 상태(필드)와 동작(메서드)을 정의합니다. 클래스를 사용하여 객체를 생성할 수 있습니다.
public class Car {
String model;
int year;
public Car(String model, int year) {
this.model = model;
this.year = year;
}
public void displayInfo() {
System.out.println("Model: " + model + ", Year: " + year);
}
public static void main(String[] args) {
Car car = new Car("Toyota", 2020);
car.displayInfo();
}
}
2.2. 배열 (Arrays)
배열은 동일한 자료형의 여러 값을 저장할 수 있는 자료 구조입니다. 배열의 크기는 고정되어 있으며, 인덱스를 사용하여 접근합니다.
public class ArrayType {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println("Element at index " + i + ": " + numbers[i]);
}
}
}
2.3. 인터페이스 (Interfaces)
인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의합니다. 인터페이스를 구현함으로써 클래스는 인터페이스에 정의된 메서드를 제공해야 합니다.
interface Animal {
void sound();
}
class Dog implements Animal {
public void sound() {
System.out.println("Bark");
}
public static void main(String[] args) {
Dog dog = new Dog();
dog.sound();
}
}
3. 자료형 변환 (Type Conversion)
Java에서는 자료형 변환을 통해 하나의 자료형을 다른 자료형으로 변환할 수 있습니다. 자료형 변환은 크게 묵시적 변환(implicit conversion)과 명시적 변환(explicit conversion)으로 나뉩니다.
3.1. 묵시적 변환 (Implicit Conversion)
묵시적 변환은 자동으로 수행되는 변환으로, 주로 작은 범위의 자료형이 큰 범위의 자료형으로 변환될 때 발생합니다.
public class ImplicitConversion {
public static void main(String[] args) {
int num = 100;
double d = num; // int to double
System.out.println("int value: " + num);
System.out.println("double value: " + d);
}
}
3.2. 명시적 변환 (Explicit Conversion)
명시적 변환은 개발자가 직접 변환을 명시해야 하는 경우로, 주로 큰 범위의 자료형이 작은 범위의 자료형으로 변환될 때 사용됩니다.
public class ExplicitConversion {
public static void main(String[] args) {
double d = 9.78;
int num = (int) d; // double to int
System.out.println("double value: " + d);
System.out.println("int value: " + num);
}
}
4. Wrapper 클래스
Java에서는 기본 자료형을 객체로 다룰 수 있도록 하는 Wrapper 클래스를 제공합니다. 각 기본 자료형에 대응되는 Wrapper 클래스가 있으며, 이를 통해 기본 자료형을 객체처럼 사용할 수 있습니다.
| 기본 자료형 | Wrapper 클래스 |
|------------|----------------|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
public class WrapperClassExample {
public static void main(String[] args) {
int num = 10;
Integer wrappedNum = Integer.valueOf(num); // int to Integer
System.out.println("Wrapped integer: " + wrappedNum);
int unwrappedNum = wrappedNum.intValue(); // Integer to int
System.out.println("Unwrapped integer: " + unwrappedNum);
}
}
4.1. 오토박싱과 언박싱 (Autoboxing and Unboxing)
Java에서는 기본 자료형과 그에 대응되는 Wrapper 클래스 간의 자동 변환을 지원합니다. 이를 오토박싱(autoboxing)과 언박싱(unboxing)이라고 합니다.
public class AutoboxingUnboxing {
public static void main(String[] args) {
int num = 10;
Integer wrappedNum = num; // Autoboxing
System.out.println("Wrapped integer: " + wrappedNum);
int unwrappedNum = wrappedNum; // Unboxing
System.out.println("Unwrapped integer: " + unwrappedNum
);
}
}
5. String 자료형
String은 Java에서 가장 많이 사용되는 참조 자료형 중 하나입니다. String은 문자(char)의 연속된 시퀀스로, 문자열을 나타냅니다. String은 불변(immutable) 객체로, 생성된 후 변경할 수 없습니다.
public class StringType {
public static void main(String[] args) {
String greeting = "Hello, World!";
System.out.println(greeting);
// 문자열 결합
String name = "Java";
String welcome = greeting + " Welcome to " + name + ".";
System.out.println(welcome);
}
}
5.1. String 메서드
String 클래스는 문자열 처리를 위한 다양한 메서드를 제공합니다. 여기서는 자주 사용되는 몇 가지 메서드를 소개합니다.
- length(): 문자열의 길이를 반환합니다.
- charAt(int index): 주어진 인덱스에 있는 문자를 반환합니다.
- substring(int beginIndex, int endIndex): 지정된 범위의 하위 문자열을 반환합니다.
- equals(Object anObject): 두 문자열이 같은지 비교합니다.
- toUpperCase(): 문자열을 대문자로 변환합니다.
- toLowerCase(): 문자열을 소문자로 변환합니다.
public class StringMethods {
public static void main(String[] args) {
String str = "Hello, World!";
System.out.println("Length: " + str.length());
System.out.println("Character at index 1: " + str.charAt(1));
System.out.println("Substring (0, 5): " + str.substring(0, 5));
System.out.println("Uppercase: " + str.toUpperCase());
System.out.println("Lowercase: " + str.toLowerCase());
String anotherStr = "Hello, World!";
System.out.println("Equals: " + str.equals(anotherStr));
}
}
결론
이번 블로그 포스트에서는 Java의 다양한 자료형에 대해 알아보았습니다. 자료형은 프로그래밍 언어의 핵심 개념 중 하나로, 이를 잘 이해하고 활용하는 것이 중요합니다.
이 글을 통해 Java 자료형에 대한 개념과 실전 적용 방법을 이해하는 데 도움이 되셨기를 바랍니다.
'JAVA' 카테고리의 다른 글
Java Spring Security (0) | 2024.06.22 |
---|---|
Java 연산자 (1) | 2024.06.16 |
WebFlux: 반응형 프로그래밍을 이용한 비동기 웹 프레임워크 (0) | 2024.06.09 |
Java 객체지향이란 (0) | 2024.06.07 |
Java 람다 알아보자 (2) | 2024.06.02 |