Post

[Java] 변수 자료형 서식문자 형변환

📌 들어가며

지난 시간엔 Eclipse Photon을 설치하고 출력을 찍어봤다. 이번엔 변수, 자료형, 서식문자, 형변환을 정리한다. C에서 봤던 개념과 겹치는 부분이 많지만, 자바만의 차이(String 클래스, 유니코드, double 기본형)에 주목하자.


1. 기본기 두 가지

컴파일러의 해석 방향 — C(Visual Studio)와 마찬가지로 위→아래, 좌→우로 읽는다. 당연해 보여도 복잡한 코드를 짤 때 항상 유의할 사항이다.

출력 메소드의 활용 — 출력문은 단순 출력을 넘어 디버깅 도구로도 쓴다.

목적설명
오류 위치 구체화Eclipse는 오류 전까지는 콘솔에 출력해주므로, 메소드 사이에 출력문을 넣어 어디서 오류가 났는지 추적
값 확인변수에 올바른 값이 들어갔는지 확인

2. 변수와 자료형

변수 = 저장 공간. 수학의 x = 10은 “x는 10과 같다”지만, 컴퓨터에서는 “x라는 저장 공간에 10을 대입”한다. 그래서 =대입 연산자라고 한다.

분류자료형크기(byte)
정수형int4-156, 0, 88
실수형float40.0F, 1.5F
실수형double80.0
문자형char2‘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이 포함된 버전)

서식문자의미 제어문자의미
%d10진수 \n줄바꿈
%o8진수 \t
%x16진수 \"큰따옴표
%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);
}

Desktop View

💡 중간의 '갰'은 뭘까? 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을 실수로 강제 변환)
}

Desktop View

  • 10 / 3 → 정수끼리라 소수점을 버려 3
  • 10 / 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이라는 점, 유니코드를 쓴다는 점이 자바의 특징이다. 다음 시간에 이어서 정리하겠다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.