자바 기본 개념과 데이터 타입

자바 주요 키워드

자바 변수명 명명 규칙

자바 데이터 타입

1. 기본 타입(Primitive Types)

public class DataTypeExample {

    public static void main(String[] args) {
        // 기본 데이터 타입 예제
        byte num1 = 10;  // 1바이트 -128~127
        short num2 = 3000; // 2바이트 -32768~32767
        int num3 = 8889999; // 4바이트 -2147483648~2147483647
        long num4 = 100000000L; // 8바이트 -9223372036854775808~9223372036854775808 long 타입 뒤에 L 추가
        float num5 = 32.5F; // 4바이트 float 타입 뒤에 F 추가
        double num6 = 3.1415926; // 8바이트
        char char1 = 'A'; // 문자 2바이트 문자 타입은 작은따옴표 사용
        String text = "Hello Java"; // 문자열
        boolean flag = true;
    }
}

2. 참조 타입(Reference Types)

  • 클래스(Class)
  • 인터페이스(Interface)
  • 배열(Array)

진법의 정의

public class NumberSystemExample {
    public static void main(String[] args) {
        // 진법: 이진법 0b, 팔진법 0, 십육진법 0x
        int decimal = 10;
        int octal = 010;
        int hexadecimal = 0x10;
        System.out.println(decimal); // 10
        System.out.println(octal); // 8
        System.out.println(hexadecimal); // 16
    }
}

데이터 타입 변환

public class TypeConversionExample {
    public static void main(String[] args) {
        // 타입 변환: 데이터 타입 낮은 순서부터 높은 순서
        // byte short int long float double
        /*
         * 높은 타입에서 낮은 타입으로 변환 시 명시적 변환이 필요
         * 변환 구문: (데이터타입) 변수명
         * */
        int bigNumber = 129;
        byte smallNumber = (byte) bigNumber; // byte 범위는 -128~127이므로 오버플로우 발생
        System.out.println(smallNumber);
        
        /*
         * 낮은 타입에서 높은 타입으로 변환은 자동 변환
         * */
        byte source = 127;
        int target = source; // 자동 형변환
        System.out.println(target);
        
        /*
        주의사항:
        - 불리언 값을 다른 타입으로 변환할 수 없음
        - 큰 타입에서 작은 타입으로 변환 시 명시적 변환 필요
        - 변환 시 메모리 오버플로우 또는 정밀도 문제 발생 가능
        */
        System.out.println((int)25.8);  // 25
        System.out.println((int)-27.9f);  // -27
        
        // JDK 7+ 특성: 숫자에 밑줄 사용 가능 (계산 및 출력에 영향 없음)
        int largeNum = 10_0000_0000;
        System.out.println(largeNum - 1); // 999999999

        /* 큰 데이터 다룰 때 오버플로우 문제 주의
        * 데이터 오버플로우가 발생하면 계산이 잘못될 수 있으므로,
        * 계산 전에 데이터 타입을 적절히 변환해야 합니다.
        */
        byte x = 10;
	int y = 10_0000_0000;
	int z = 10;
	double w = 10;
	System.out.println(x * y);
	// 1410065408 (오버플로우 발생)
	System.out.println(y * z);
	// 1410065408 (1.0E10이 int 범위를 초과하여 메모리 누수)
	System.out.println(y * w);
	/* 1.0E10 서로 다른 크기의 데이터를 계산할 때,
	자바는 계산 전에 데이터 타입을 자동으로 변환하여 오버플로우를 방지합니다.
	*/
    }
}

태그: 자바 데이터타입 형변환 기본타입 참조타입

6월 3일 21:09에 게시됨