
매일 한 시간 가량의 Database 훈련을 병행하면서, 본격적으로 Java 수업이 시작되었다.
JavaScript (이하 JS) 수업 때와 마찬가지로 ‘자료형’에 대해 먼저 배우게 되었다.
JS를 공부할 때도 물론 자료형이라는 개념은 알고 있었다.
하지만 JS에서는 let, const로 모든 선언을 끝내버리고, 변수에 어떤 값이 들어오든 타입이 자동으로 바뀌는 구조다.
즉, JS는 동적 타입 언어라서
let x = 10; // number
x = "hello"; // string
x = true; // boolean
이렇게 값이 바뀌면 변수의 타입도 즉석에서 바뀐다.
당시엔 “그냥 편하네~” 정도로만 생각했었다.
Java는 JS와 달리 정적 타입 언어다.
즉, 변수의 타입을 선언할 때 명확히 지정해야 하고, 타입에 맞지 않는 값을 넣으면 컴파일 단계에서 바로 오류가 난다.
| 구분 | 자료형 | 크기 | 특징 |
|---|---|---|---|
| 숫자(정수) | byte | 1 byte | -128 ~ 127 |
| short | 2 byte | -32,768 ~ 32,767 | |
| int | 4 byte | 기본 정수 타입 | |
| long | 8 byte | 뒤에 L 붙여 사용 | |
| 숫자(실수) | float | 4 byte | 뒤에 F 필요(단정도) |
| double | 8 byte | 기본 실수 타입(배정도) | |
| 문자 | char | 2 byte | 유니코드 1문자 저장 |
| String | 가변 길이 | 문자열(참조형) | |
| 논리 | boolean | 1 byte | true / false만 허용 (0, 1 사용 불가) |
Java 수업에서 가장 먼저 만드는 클래스 중 하나가 이런 구조였다:
public class Dog {
String name = "뽀삐";
int age = 2;
public static void main(String[] args) {
}
}
여기서 바로 실수하기 쉬운 부분이 있다.
" "(큰따옴표)' '(작은따옴표)age처럼 숫자를 넣는 필드는 String이 아니라 int 등 숫자 타입을 써야 함JS에서는 숫자를 "2"로 넣든 2로 넣든 대체로 넘어가지만, Java는 타입을 확실히 구분해야 한다.
이런 작은 차이부터 JS와 Java의 철학 차이가 확 드러난다.
자료형이라는 개념은 처음엔 다소 번거롭게 느껴질 수 있지만,
Java처럼 타입이 확실한 언어를 배워보면
“코드가 안정적이게 만들어지는 느낌”을 확실히 경험할 수 있다.