자바 주요 키워드
자바 변수명 명명 규칙
자바 데이터 타입
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 서로 다른 크기의 데이터를 계산할 때,
자바는 계산 전에 데이터 타입을 자동으로 변환하여 오버플로우를 방지합니다.
*/
}
}