본문 바로가기
JAVA

변수와 자료형

by winteringg 2022. 8. 14.

1. 변수 (Variable)
1) 변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당 되는데, 이 때 할당된 메모리를 가리키는 이름.
2) 하나의 값을 저장할 수 있는 메모리의 기억 공간.
3) 프로그램에서는 항상 변하는 값을 나타낼 필요가 있음. ex) 학생의 성적, 학번, 합계, 게임의 레벨, 회원 주소 etc.
4) 표현하려는 숫자/글자에 맞는 데이터 타입(자료형)을 이용해서 변수를 선언하고, 그 변수에 값을 할당함.
5) 표현하려는 자료가 숫자, 문자, 문자열 등 다양할 수 있으므로, 그에 맞는 자료형을 사용해야 함.

2. 변수의 이름
1) 영문자 (대문자, 소문자 각각 다르게 인식하므로 구분하여 사용해야 함.) 혹은 숫자를 사용하며, 특수문자는 $(달러모양), _(언더바) 두 개만 가능 함.
2) 이름의 시작은 숫자로 할 수 없음.
3) 예약어는 변수로 사용 불가능 함.
4) 용도에 맞게, 가독성 있게 만드는 것이 중요하며 관례적으로 단어 연결부분은 대문자로 씀. ex) int numOfStudent, numberOfStudent, studentAddress etc.
  - 중간 중간 대문자가 있는 모양이 마치 낙타의 혹 모양과 같다고 하여 카멜(camel) 표기법 이라고 함.

3. 선언 위치에 따른 변수 종류 (전역 변수(global variable), 지역 변수(local variable), 매개 변수(parameter))
1) 전역 변수 : 함수 바깥에 선언하여 클래스 전체에서 사용가능한 변수
  - 클래스 변수(static 변수) : 객체화를 시키지 않고도 사용 가능. 같은 클래스 뿐만 아니라 다른 클래스에서도 호출 가능함. 선언 되자마자 정적 메모리(stack) 안에 공간이 할당 됨. 클래스변수는 여러번 객체화 시켜도 공통적인 스택 저장공간을 가짐. 변수를 매번 초기화하고 싶지 않을 때 사용함.
  - 인스턴스 변수(멤버 변수) : 객체 변수라고도 함. 같은 클래스 영역에서 선언되며 클래스의 객체를 생성할 때 만들어짐. 즉 객체화를 시켜서 호출해야 사용 가능함. 객체화 시킬 때마다 서로 다른 새로운 스택 저장공간이 계속 생김.
2) 지역 변수 : 메소드의 { } 속에 선언하여 해당 함수 속에서만 사용 가능한 변수. 지역변수는 메소드가 끝나는 순간 다른 곳에서는 사용할 수 없음.
3) 매개 변수 : 메소드의 ()안에 선언된 변수. 매개변수는 메소드가 끝나는 순간 다른 곳에서는 사용할 수 없음.
4) 최종 정리
  - 지역 변수와 전역 변수의 구분은 선언한 위치에 따라 다름. 
  - 전역 변수는 어디서나 호출이 가능하고, 지역 변수는 메소드 안에서 사용 가능함.
  - 전역 변수 종류는 두 가지로 인스턴스 변수, 클래스 변수가 있음.
  - 인스턴스 변수는 같은 클래스에서만 자유롭게 사용 가능하고, 클래스 변수는 다른 클래스에서도 사용 가능함.
  - 인스턴스 변수는 객체화 시킬 때마다 서로 다른 저장공간을 가지고, 클래스 변수는 공통적인 저장공간을 가짐.


4. 자료형 (Data Type)

자료형의 크기 비교


1) 기본 자료형(primitive data type)의 8종류
  - byte & short
    * byte : 1바이트 단위의 정수 자료형. 동영상, 음악파일, 실행파일의 자료를 처리할 때 사용.
    * short : 2바이트 단위의 정수 자료형. 자주 사용되는 자료형은 아님.
  - int : 자바에서 사용하는 정수에 대한 4바이트 단위의 기본(dafault) 자료형. 프로그램에서 사용하는 숫자는 통상 int 로 저장 함.
  - long : 8바이트 단위의 정수 자료형. 자바에서 기본 정수 자료형은 int 이기 때문에 숫자 값 뒤에 알파벳 대문자 혹은 소문자 "L", "l" 을 써서 long형임을 표시 함. (ex. 9223372036854775808L)
  - float & double
    * float : 4바이트 단위의 실수 자료형. 자바에서 기본 실수 자료형은 double 이기 때문에 숫자 값 뒤에 알파벳 대문자 혹은 소문자 "F", "f" 를 써서 float형임을 표시 함. (ex. 3.14F)
    * double : 8바이트 단위의 실수 기본 자료형으로서 float보다 2배 더 정밀한 수를 표현. 
    * 부동 소수점 방식
      - 실수는 정수보다 정밀하기 때문에 정수와는 다른 방식으로 표현 함.
      - 지수부, 가수부 로 표현 함.
      - 컴퓨터에서는 밑수를 2로 사용 함.
      - 자바에서는 실수의 기본 자료형으로 double을 사용함. 
      - 부동 소수점은 근사치 값이기 때문에 값을 연산하면 약간의 오차가 발생함. 

  - char : 문자열이 아닌 하나의 문자를 저장한 값. 문자도 정수로 표현할 수 있음. 어떤 문자를 컴퓨터 내부에서 표현하기 위해 특정 정수 값을 정의.
     - 'A' => 65 (encoding, 문자가 기계가 이해할 수 있는 숫자로 변환되는 것)
     - 'A' <= 65 (decoding, 숫자에서 다시 문자로 해독하여 변환되는 것)
     - 문자 세트 (Character Set) : 각 문자를 얼마로 표현할 것인 지 코드 값을 모아놓은 것.문자를 숫자로 변환한 값의 세트.
     - 아스키 코드 (ASCII code) : 알파벳과 숫자, 특수문자 등을 1바이트에 표현하는 데에 사용하는 문자 세트.
     - 유니 코드 (UNICODE) : 전세계 표준으로 만든 문자 세트이며, 자바는 문자를 나타내기 위해 전세계 표준인 유니코드를 사용함.
     - UTF-8 : 1바이트에서 4바이트까지 다양하게 문자 표현을 할 수 있음.

  - boolean : 1바이트 논리형으로 true (참) / false (거짓) 두 가지의 형태로 표현 됨. 값이 존재하는지, 배열이 비었는지, 결과가 참인지 거짓인지 등을 표현.

 

    * 기본 자료형 없이 사용하기 (자바 10부터 지원 되는 기능)
        - 한 번 선언하여 추론된 변수는 다른 타입의 값을 대입할 수 없음.

'JAVA' 카테고리의 다른 글

연산자  (0) 2022.08.14
관심사의 분리(separation of concerns, SoC)  (0) 2022.08.14
상수와 리터럴  (0) 2022.08.14
JDK 구성 및 기능  (0) 2022.08.14
Java 란?  (0) 2022.08.14

댓글