Java 문법 1. Variable(변수)

작성일     업데이트:

카테고리:

태그:

Variable(변수)

1. 변수란

  • 메모리(RAM)에 값을 기록하기 위한 공간
  • 변수 사용시 가독성이 좋아지며 재사용성 증가로 인한 코드량 감소
    -> 유지보수가 용이하다


2. 변수 선언

자료형 변수명;
  int num;

위와 같이 앞에 자료형 뒤에 변수명을 입력하여 선언한다.

이때

int num = 1;

위와같이 변수 선언과 동시에 값(literal)을 대입 처리하는 것을 초기화라고 한다. (지역변수는 반드시 초기화를 진행해야 함)

변수 명명시 지켜야 할 규칙들이 있는데 아래와 같다

  • 대소문자가 구분되며 길이 제한이 없다.
  • 예약어를 사용하면 안 된다 (ex. true, final, String 등)
  • 숫자로 시작하면 안된다 (ex. age1은 가능하지만 1age는 안됨)
  • 특수문자는 _$ 만을 허용한다 (ex. shee@p 는 불가능하지만 $sheep 는 가능)


3. 자료형(Type)

타입 표현식 용량
논리 boolean 1byte
문자 char 2byte
문자열 String 참조형
정수형 byte
short
int
long
1byte
2byte
4byte
8byte
실수형 float
double
4byte
8byte


4. 상수

상수란 수학에서는 변하지 않는 값을 의미하고
JAVA 에서는 한 번만 저장(기록)할 수 있는 메모리를 의미한다

final int NUM;

위와같이 final로 선언하며 변수명을 모두 대문자로 표시해주는 것이 관례다
상수변수 이름이 여러 개의 단어로 구성될 경우에는 _를 이용한다(ex. MAX_NUM)


5. 형변환(Type Casting)

데이터의 자료형을 다른 자료형으로 바꾸는 것(boolean 제외)

컴퓨터에서 데이터는 서로 같은 자료형일 때 연산/대입이 가능하므로 이러한 원칙이 지켜지지 않은 경우에 형 변환이 필요하다
형변환 하고자 하는 값과 자료형의 표현 범위 차이에 따라 형변환 방법이 나뉘는데 크게 묵시적(자동) 형변환 , 명시적(강제) 형변환이 있다

  • 묵시적(자동) 형변환 (Promotion)

    • 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 큰 자료형으로 변환하는 것
    • 메모리 할당 크기가 작은 자료형 데이터를 메모리 할당 크기가 큰 자료형 변수에 대입하는 경우 자동으로 형변환이 발생한다

    예시)

    int a = 12;
    double d = 3.3;
    double result = a + d;
    //int 자료형이 자동 형변환되어 double 자료형으로 변환됨
    
    • 자동 형변환의 예외
      • byte와 short 자료형 값의 계산 결과는 무조건 int로 처리한다.
      • char 자료형은 메모리 할당 크기가 2byte이고 값의 표현범위가 0~65,535이며 음수를 저장하지 않 는다. 그러므로 음수가 저장될 수 있는 정수의 byte 자료형이나 short 자료형은 char타입으로 자 동 형변환할 수 없다. 자바에서 char 자료형과 형변환이 가능한 정수 자료형은 int 이다.


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

    • 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환한다
    • 강제 형변환 시 데이터 손실이 발생할 수 있다 => 데이터의 변형, 손실을 감수하고 강제 변환
      (바꾸고자 원하는 자료형)데이터
      (바꾸고자 원하는 자료형)변수
    
    • 위 형태대로 선언하여 사용한다
    • 같은 자료형 데이터끼리 연산하더라도 결과값이 해당 자료형 값의 범위를 초과하는 경우가 발생할 경 우, 결과값에 대한 자료형으로 연산 값들의 자료형을 변경해야 하는 경우에도 형변환을 직접 명시한다

    데이터 손실 예시)


6. 변수와 메모리 구조

RAM 구조 내용
Static static 예약어로 선정된 필드
메소드가 저장되는 공간
클래스 변수 등
HEAP new 연산자에 의해 동적으로 할당하고 저장되는 공간
객체, 배열 등
STACK 메소드를 호출하면 자동생성
메소드가 끝나면 자동소멸
지역변수, 매개변수, 메소드 호출 스택 등

JavaGrammar 카테고리 내 다른 글 보러가기

댓글남기기