변수와 상수, 기본 자료형

박정훈·2021년 1월 1일
0

java

목록 보기
2/15

변수(variable)

  • 변수는 프로그램이 실행되는 동안 어떤 값을 저장하기 위해 사용하는 메모리 공간이다.
  • 변수는 프로그램이 실행될 때마다 저장되어 있는 값이 바뀔 수 있다.
  • 변수에는 복수 개의 값을 저장할 수 없고, 하나의 값만 저장할 수 있다.
  • 변수에는 다양한 타입의 값을 저장할 수 없고, 한가지 타입의 값만 저장할 수 있다.

변수 선언 방법

  • <자료형> <변수 식별자 이름>
    int a;
    
  • 같은 타입의 변수는 콤마(,)를 사용하여 한꺼번에 선언할 수 있다.
    int a, b, c;
    
  • 변수를 선언하고 처음 값을 저장할 경우 이러한 값을 초기값이라고 한다.
  • 변수에 초기값을 주는 행위를 '초기화'라고 한다.

변수의 사용 범위

  • 변수는 중괄호 "{}"안에서 선언되고 사용된다.
  • 변수는 선언된 블록 내에서만 사용이 가능하다.
  • 변수는 블록이 끝나면 메모리상에서 제거된다.

기본 자료형

자바에서 제공하는 자료형은 기본 자료형과 참조 자료형이 있다. 기본 자료형은 자바 라이브러리에서 기본으로 제공하고, 얼마만큼의 메모리를 어떻게 사용할 것인지가 이미 정해져 있다.

정수 자료형

  • 정수형에는 4가지 유형이 있다.
  • 정수형 변수는 byte, short, int, long 키워드(예약어)를 사용하여 선언한다.
  • 정수형은 10진수뿐만 아니라 2진수, 8진수, 16진수 등의 형태도 표현할 수 있다.
  • 정수형의 디폴트는 int이므로 long형을 지정하려면 할당할 숫자 뒤에 'L'을 붙여준다.

실수 자료형

  • 실수형에는 2가지 유형이 있다.
  • 실수형 변수를 선언할 때 float, double 키워드를 사용한다.
  • 실수형은 디폴트형이 double이므로 float형을 지정하려면 숫자 뒤에 'F'를 붙여준다.
  • 실수형 표현은 소수점 표현방식인 10진수 표현방식과, 지수 형식으로 나타내는 과학기술용 표기법이 사용된다.

논리 자료형

  • 논리형 값에는 true와 false가 있다.
  • 논리형은 다른 데이터 타입과 서로 형 변환(type casting)할 수 없다.
  • C언어에서처럼 숫자 값을 논리 값으로 해석하여, 0을 false로 다루고 0이 아닌 값을 true로 해석하는 것을 허용하지 않는다.
  • 논리 자료형에서는 오직 true와 false만 허용한다.

문자 자료형

  • 단일 문자는 char형으로 표현한다.
    • char형은 0 ~ 2^16의 범위 내에서 부호가 없는 16비트(2Byte) 숫자를 사용하여 유니코드 문자를 표현한다.
    • char형 값은 작은 따옴표('')안에 넣어야 한다.
  • 문자열을 표현할 때는 String을 사용한다.
    • String은 기본 자료형이 아니다. 문자열을 좀 더 쉽게 다루기 위해 만들어 놓은 클래스이다.
    • String 클래스는 문자열을 표현하는데 사용된다.
    • 문자열 값은 큰 따옴표("")안에 넣어야 한다.

형 변환(type casting, type conversion)

변수의 자료형이 다를 때 자료형을 같게 바꾸는 것

묵시적 형 변환

  • 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.

    byte bNum = 10;
    int iNum = bNum;
    
  • 덜 정밀한 자료형에서 더 정밀한 자료형으로 형 변환은 자동으로 이루어진다.

    int iNum2 = 20;
    float fNum = iNum2;
    
  • 연산 중에 자동 변환되는 경우

    int iNum = 20;
    float fNum = iNum;
    double dNum;
    dNum = fNum + iNum;
    

명시적 형 변환 (강제 형 변환)

  • 바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우 명시적으로 적어주어야 한다.
    int iNum = 10;
    byte bNum = (byte)iNum;
    // 강제로 형을 바꾸려면 바꿀 형을 괄호를 써서 명시해야 한다.
    
  • 더 정밀한 자료형에서 덜 정밀한 자료형으로 대입하는 경우 명시적으로 적어주어야 한다.
    float fNum = 3.14;
    int iNum2 = (int)dNum;
    

데이터의 크기

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

  • float은 4Byte인데 long보다 데이터가 큰 이유는 표현할 수 있는 값의 경우의 수가 float이 더 크기 때문이다.
    실수가 정수보다 표현 범위가 더 넓고 정밀하기 때문이다.

  • 서로 다른 타입의 데이터의 연산을 진행할 경우 두 데이터 중 큰 데이터 타입을 가진 쪽에 맞추어 자동 형 변환된 후 연산을 진행한다.

  • int형보다 작은 데이터타입의 연산을 진행할 경우 자동으로 int형으로 형변환이 이루어진다.
    프로그램이 실행되어 정수 값을 연산할 때 int형을 기본 단위로 사용하기 때문이다.
    즉, 정수의 기본형은 int형이고 byte형이나 shor형은 컴퓨터가 연산을 편리하게 하려고 내부적으로 int형으로 변환한다.

상수

  • 항상 변하지 않는 수
  • final 예약어를 사용해 선언한다.
  • 상수 이름은 대문자를 사용한다.
  • 여러 단어를 연결하는 경우에 _기호를 사용한다.
  • 상수는 선언과 동시에 초기화 하는 것이 좋다. 가끔은 선언만 먼저하고 사용하기 전에 값을 초기화하기도 한다.
  • 초기화한 이후에는 값을 변경할 수 없다.
  • 프로그램 내부에서 반복적으로 사용하고, 변하지 않아야 하는 값을 상수로 선언하여 사용하면 좋다.
    final double PI = 3.14;
    final int MAX_NUM = 100;
    

리터럴(literal)

  • 프로그램에서 사용하는 모든 숫자, 문자, 논리값을 일컫는 말이다.
    'A', 10, 3.14와 같은 문자와 숫자를 '러터럴' 혹은 '리터럴 상수'라고 한다.
  • 리터럴은 변수나 상수 값으로 대입할 수 있다.
  • 리터럴은 프로그램이 시작할 때 시스템에 같이 로딩되어 특정 메모리 공간인 상수 풀(constant pool)에 놓인다.
    예를 들어
    int num = 3;
    
    위의 코드에서 값 3이 메모리 공간 어딘가에 존재해야 num 변수에 그 값을 복사할 수 있다.
    즉, 숫자가 변수에 대입되는 과정은 일단 숫자 값이 어딘가 메모리에 쓰여 있고, 이 값이 다시 변수 메모리에 복사되는 것이다.

출처: Do it 자바프로그래밍 입문

profile
정팔입니다.

0개의 댓글