[Java] 변수 자료형 서식문자 형변환
📌 들어가며
지난 시간엔 Eclipse Photon을 설치하고 출력을 찍어봤다. 이번엔 변수, 자료형, 서식문자, 형변환을 정리한다. C에서 봤던 개념과 겹치는 부분이 많지만, 자바만의 차이(String 클래스, 유니코드, double 기본형)에 주목하자.
1. 기본기 두 가지
컴파일러의 해석 방향 — C(Visual Studio)와 마찬가지로 위→아래, 좌→우로 읽는다. 당연해 보여도 복잡한 코드를 짤 때 항상 유의할 사항이다.
출력 메소드의 활용 — 출력문은 단순 출력을 넘어 디버깅 도구로도 쓴다.
| 목적 | 설명 |
|---|---|
| 오류 위치 구체화 | Eclipse는 오류 전까지는 콘솔에 출력해주므로, 메소드 사이에 출력문을 넣어 어디서 오류가 났는지 추적 |
| 값 확인 | 변수에 올바른 값이 들어갔는지 확인 |
2. 변수와 자료형
변수 = 저장 공간. 수학의
x = 10은 “x는 10과 같다”지만, 컴퓨터에서는 “x라는 저장 공간에 10을 대입”한다. 그래서=를 대입 연산자라고 한다.
| 분류 | 자료형 | 크기(byte) | 예 |
|---|---|---|---|
| 정수형 | int | 4 | -156, 0, 88 |
| 실수형 | float | 4 | 0.0F, 1.5F |
| 실수형 | double | 8 | 0.0 |
| 문자형 | char | 2 | ‘A’, ‘안’, ‘s’ |
| 문자열 | String | 가변 | “신동희” |
C와의 차이 두 가지가 핵심이다.
💡 ① 실수 기본형은
double(8byte) — 그래서float을 쓸 땐 숫자 뒤에F를 붙인다. ②String은 클래스 — C에서 문자열은char[]배열이었지만, 자바에는String이라는 타입이 따로 있다. 대문자로 시작하니 클래스다.
변수 선언 — int x = 10;이면 RAM에 x 저장 공간이 할당되고 10이 들어간다. 이때 고유한 주소(자바에선 해시코드, C의 포인터에 해당)가 생성된다.
1
2
3
4
int x = 10;
x = 20;
System.out.println(x + 9); // 29 (x=20 + 9)
x = x + 8; // 출력문 뒤라 화면엔 안 나옴
주의사항:
| 대상 | 규칙 |
|---|---|
| 변수 선언 | 같은 이름 재선언 불가 / 반드시 초기화 / 상단에 모아 선언 |
| 변수명 | 문자로 시작 / 특수문자 불가(_ 제외) / 공백 불가 / 카멜 표기법(goodBoy) / 명사 사용 |
3. 서식문자와 제어문자
printf는 서식문자를 사용할 수 있는 출력 메소드다. (println은 줄바꿈 \n이 포함된 버전)
| 서식문자 | 의미 | 제어문자 | 의미 | |
|---|---|---|---|---|
%d | 10진수 | \n | 줄바꿈 | |
%o | 8진수 | \t | 탭 | |
%x | 16진수 | \" | 큰따옴표 | |
%f | 실수 | \' | 작은따옴표 | |
%c | 문자 | \\ | 백슬래시 | |
%s | 문자열 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
int age = 10;
float weight = 10.5F;
double height = 10.5;
char hangle = '갰';
String alpha = "ABC";
System.out.printf("나이 : %d살\n", age);
// %f에서 소수점을 자를 때 반올림된다
System.out.printf("몸무게 : %.2fkg\n", weight);
System.out.println(height);
System.out.println(hangle);
System.out.println(alpha);
}
💡 중간의
'갰'은 뭘까? C는 아스키코드를 쓰지만 자바는 유니코드를 쓴다. 유니코드는 모든 언어의 문자 하나를 2byte로 고정한다.char hangle = '갰';에서\u뒤의AC30이 유니코드값이고, 그 문자값이'갰'이다.
4. 형변환 (Casting)
| 종류 | 설명 | 예 |
|---|---|---|
| 자동 형변환 | 정수+정수=정수, 정수+실수=실수 | 3 + 0.0 = 3.0 |
| 강제 형변환 | (자료형)값으로 직접 변환 | (int)3.9 = 3 |
1
2
3
4
5
6
7
public static void main(String[] args) {
System.out.println(10 / 3); // 3 (정수/정수 → 소수점 버림)
System.out.println(10 / 3.0); // 3.33... (정수/실수 → 실수)
System.out.println("==================");
System.out.println(10 / 3); // 3
System.out.println((double)10 / 3); // 3.33... (10을 실수로 강제 변환)
}
10 / 3→ 정수끼리라 소수점을 버려 310 / 3.0→ 실수가 섞여 3.33…(double)10 / 3→ 10을 강제로 실수로 만들어 3.33…
📝 정리
1
2
3
4
5
6
변수 · 자료형 · 서식 · 형변환
├─ 변수 저장 공간, = 는 대입 연산자
├─ 자료형 int / float(F) / double(기본) / char(2byte) / String(클래스)
├─ 서식 %d %o %x %f %c %s (제어문자 \n \t 등)
├─ 유니코드 자바는 문자 1개 = 2byte (갰 → '갰')
└─ 형변환 자동(정수+실수=실수) / 강제 (int)3.9
| 개념 | 한 줄 정의 |
|---|---|
| double 기본형 | 자바의 실수 기본형, float은 F 접미사 필요 |
| String | 문자열을 표현하는 클래스 (C의 char[]와 다름) |
| 유니코드 | 문자 하나를 2byte로 표현 |
| 강제 형변환 | (타입)값으로 명시적 변환 |
C와 비슷하면서도 String이 클래스라는 점, 실수 기본형이 double이라는 점, 유니코드를 쓴다는 점이 자바의 특징이다. 다음 시간에 이어서 정리하겠다.


Comments powered by Disqus.