개발 ━━━━━/Java

[Java] 기초 문법 - 자료형

GukJang 2023. 8. 14. 19:44
반응형

Java 자료형 (Data Type)

Java 의 자료형은 크게 기초 자료형 (Primitive type) 과 참조 자료형 (Reference type) 으로 나뉘어진다.

 

• 기초 자료형 (Primitive type)

정수 Byte byte 1byte (8bit)
Short short 2byte (16bit)
Integer int 4byte (32bit)
Long long 8byte (64bit)
실수 Float float 4byte (32bit)
Double double 8byte (64bit)
문자 Character char 2byte (16bit)
논리 Boolean boolean 1byte (8bit)

( * char 는 문자 타입으로 분리되긴 하나 사실상 2byte 정수이다. 컴퓨터는 아스키코드 규칙에 맞게 숫자로 치환되어 인식한다.)

 

• 참조 자료형 (Reference type)

객체 문자열
배열
인터페이스

( * String 은 Java 에서 제공하는 문자열 클래스이다. 하나의 객체를 생성하고, 해당 객체에 문자들을 연결하는 방식)

 

기초 자료형은 변수가 값을 직접 가르키고,

참조 자료형은 데이터를 담고 있는 객체를 가리킨다.

 

• 문자형 vs 문자열

public class Main {
    public static void main(String[] args) {
        char alphabet1 = 'A'; // 문자형
        String alphabet2 = "B"; // 문자열
    }
}

 

문자형과 문자열은 몇 가지 차이점이 있다.

char (문자형) String (문자열)
' ' (단일 인용부호, Single Quatation) 사용 " " (따옴표, Double Quotation) 사용
기본형 타입 (자료형) 클래스
정수로 출력 문자 그대로 출력
한 개의 문자 값으로만 이루어짐 문자열 맨뒤에 \0 (NULL) 이 항상 저장됨
빈 문자열 ('') 과 NULL 로 초기화 불가능 빈 문자열 ("") 과 NULL 로 초기화 가능

 

형 변환 (Type Casting)

변수의 타입을 바꾸는 방법으로 명시적 형변환, 묵시적 형변환이 있다.

 

• 명시적 형변환 (Explicit type conversion)

public class Main {
    public static void main(String[] args) {
        double doubleNumber = 10.101010;
        float floatNumber = 10.1010f;

        // double, float -> int 변환
        int intNumber;
        intNumber = (int)doubleNumber;  // 10
        intNumber = (int)floatNumber;  // 10
    }
}

 

public class Main {
    public static void main(String[] args) {
        int intNumber = 10;
		
        // int -> double, float 변환
        double doubleNumber = (double)intNumber;    // 10.0
        float floatNumber = (float)intNumber;    // 10.0
    }
}

 

• 묵시적 형변환 (Implicit type conversion)

byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)

public class Main {
    public static void main(String[] args) {
        // 암시적 형변환
        // byte -> int
        byte byteNumber = 10;
        int intNumber = byteNumber;
        System.out.println(intNumber);      // 10
        
        // char -> int
        char charAlphabet = 'A';
        intNumber = charAlphabet;
        System.out.println(intNumber);      // 65
        
        // int -> double
        intNumber = 200;
        double doubleNumber = intNumber;
        System.out.println(doubleNumber);       // 200.0
        
        // 크기가 큰 타입으로 자동 형 변환
        intNumber = 10;
        doubleNumber = 5.5;
        double result = intNumber + doubleNumber;    // 15.5 
    }
}

 

반응형