본문 바로가기
JAVA

Java 자료형

by 얍얍1234 2024. 6. 10.

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