[Java] Chapter2. 변수

Updated:

유튜브에 있는 남궁성의 자바의 정석 강의를 듣고 정리한 포스트입니다! :)
click > 남궁성의 자바의 정석(기초편)

Chapter2. 변수

변수(Variable)란?

하나의 값을 저장할 수 있는 기억공간(Memory 공간)을 의미한다.

1) 변수의 선언

‘해당 변수의 타입만큼 메모리에 공간을 할당해’ 하는 프로그래머의 명령이다.

2) 변수의 초기화

변수에 처음으로 값을 저장하는 것

  • 변수의 선언 및 초기화 예시

      int num; //num 이라는 변수 선언 => 메모리에 int(4 byte)만큼 공간 할당
      num = 256; //num에 값 256 대입(초기화)
        
      char c = 'A'; //c 라는 변수 선언 및 값 대입(초기화)
    

3) 변수의 기본값

자료형 기본값
boolean false
char ‘\u0000’ (널 문자)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d 또는 0.0
참조형 null

변수의 타입(Data type)

1) 기본형 (Primitive type)

  • 실제 값을 저장하며, 8개 (boolean, char, byte, short, int, long, float, double)가 있다.
    1. 논리형 : boolean(1)

      true와 false 중 하나의 값을 가지며, 조건식과 논리적 계산에 사용된다.

    2. 문자형 : char(2)

      문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.

    3. 정수형 : byte(1), short(2), int(4), long(8)

      정수 값을 저장하는데 사용되며, 주로 사용되는 것은 int와 long이다.

    4. 실수형 : float(4), double(8)

      실수 값을 저장하는데 사용된다.

2) 참조형 (Reference type)

  • 기본형을 제외한 나머지 (String, System 등)
  • 객체의 주소를 저장 (4 byte - 주소의 크기)

변수 vs 상수 vs 리터럴

변수(variable)

  • 하나의 값을 저장하기 위한 공간

상수(constant)

  • 한 번만 값을 저장 가능한 변수(변경 X)
  • 선언 시, final 제어자를 붙이고, 변수명은 모두 대문자로 한다.
final int MAX_SIZE = 1000;

리터럴(literal)

  • 그 자체로 값을 의미하는 것으로 상수 개념과 같다.
  • 리터럴의 접두사
    • 2진수 : 0b0101, 8진수 : 077, 16진수 : 0xff
    • 대소문자 구분을 하지 않는다.
  • 리터럴의 접미사
    • long : 100L (int 범위 내 생략 O), float : 1.4f (생략 X), double : 3.14d (생략 O)
    • 대소문자 구분을 하지 않지만, L은 대문자를 주로 사용한다.
int a = 4;  // a는 상수, 4는 리터럴이다.

변수와 리터럴의 타입 불일치

  • 타입의 범위가 ‘변수 > 리터럴’인 경우 -> OK!
  • 타입의 범위가 ‘변수 < 리터럴’인 경우 -> Error!
  • byte, short 변수에는 int 리터럴 저장가능. 단, 변수의 범위 내이어야 한다.

변수의 명명규칙

  1. 첫번째 글자는 문자이거나 ‘$’, ‘_’이어야 하고 숫자로 시작할 수 없다. (필수)
  2. 영어 대소문자가 구분된다. (필수)
  3. 첫문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫자를 대문자로 한다. (권장)
  4. 문자 수(길이)의 제한이 없다.
  5. 자바 예약어는 사용할 수 없다. (필수)
  6. 클래스 이름의 첫 글자는 대문자로 한다. (권장)
  7. 상수의 이름은 대문자로 하고, 단어는 ‘_’로 구분한다. (권장)

형변환(Casting)

형변환이란?

값의 타입을 다른 타입으로 변환하는 것이다.
boolean을 제외한 7개의 기본형은 서로 형변환이 가능하다.

자동 형변환

  • 데이터 손실이 없다면 자동으로 형변환이 가능하다.
  • ‘자료형의 크기가 작은 쪽에서 큰 쪽’ 또는 ‘정수형에서 실수형’ 일 경우 자동으로 형변환된다.

byte(1) -> short(2), char(2) -> int(4) -> long(8) -> float(4) -> double(8)

강제 형변환

  • 개발자가 직접 형변환을 명시하면서 변환시킨다.
// double => int
double pi = 3.14;
int num = (int)pi;

// int보다 작은 크기의 자료형 연산 시 자동 int로 변환되므로 강제 형변환을 해야한다. 
short num1 = 10;
short num2 = 20;
short num3 = (short) num1 + num2;

Summary

• Java는 기본값으로 자동 초기화가 된다. 단, 지역변수는 초기화 필수!
• int보다 작은 정수형 자료형은 연산 시 자동으로 int 형 변수로 변환되기 때문에 강제 형변환을 해주어야 한다.

댓글남기기