변수(variable)와 상수

변수란?

단 하나의 값을 저장할 수 있는 메모리 공간

 

변수의 명명 규칙

식별자(identifier) : 프로그래밍에서 사용하는 모든 이름

식별자는 같은 영역 내에서 구분(식별)될 수 있어야 함

 

1. 대소문자가 구분되며 길이에 제한이 없다

2. 예약어를 사용해서는 안 된다

3. 숫자로 시작해서는 안 된다

4. 특수문자는 '_'와 '$'만을 허용한다

 

자바 프로그래머들에게 권장하는 규칙

1. 클래스 이름의 첫 글자는 항상 대문자로 한다

2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다

3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다

 

변수의 타입

자료형(data type) : 값(data)와 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것

  • 기본형(primitive type)
    • 계산을 위한 실제 값(data)를 저장
    • 논리형(boolean), 문자형 (char), 정수형(byte, short, int, long), 실수형(float, double) : 총 8개 
  • 참조형(reference type)
    • 객체의 주소(memory address) 값을 저장
    • 8개의 기본형을 제외한 나머지

 

참조 변수를 선언하는 방법

클래스이름  변수이름;

 

기본형(primitive type)

  • 논리형
    • boolean
    • true와 false 중 하나를 값으로 갖으며, 조건식과 논리적 계산에 사용됨
  • 문자형
    • char
    • 문자를 저장하는데 사용되며, 변수 당 하나의 문자만 저장 가능
  • 정수형
    • byte, short, int, long
    • 정수 값을 저장하는데 사용
    • 주로 int와 long을 사용
    • byte는 이진 데이터를 다루는데 사용, short는 C언어와의 호완성을 위해 사용
  • 실수형
    • float, double
    • 실수를 저장하는데 사용

 

int는 CPU가 가장 효율적으로 처리할 수 있는 타입

  1 byte 2 byte 4 byte 8 byte
논리형 boolean      
문자형   char    
정수형 byte short int long
실수형     float double

 

 

상수와 리터럴(constant & literal)

상수(constant) : 변수와 마찬가지로 값을 저장할 수 있는 공간이지만, 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없음

상수를 선언하는 방법 => 변수의 타입 앞에 final을 붙이기

상수는 반드시 선언과 동시에 초기화 해야 함

final int MAX_SPEED = 10; // 상수 MAX_SPEED를 선언 & 초기화

 

리터럴(literal) : 통상 표현하는 상수 대신 부르는 이름

  • 변수(variable) : 하나의 값을 저장하기 위한 공간
  • 상수(constant) : 값을 한 번만 저장할 수 있는 공간
  • 리터럴(literal) : 그 자체로 값을 의미하는 것
int year = 2014; // 변수 : year, 리터럴 : 2014
final int MAX_VALUE = 100; // 상수 : MAX_VALUE, 리터럴 : 100

 

리터럴과 접미사

종류 접미사
논리형 없음
정수형 L
실수형 f, d
문자형 없음
문자열 없음

 

실수형 리터럴의 예

자료형 리터럴 다른 형태의 동등한 표현
double 10. 10.0
double .10 0.10
float 10f 10.0f
float 3.14e3f 3140.0f
double 1e1 10.0
double 1e-3 0.001

 

진법

비트(bit)와 바이트(byte)

비트(bit, binary digit) : 한 자리의 2진수, 1 비트는 컴퓨터가 값을 저장할 수 있는 최소단위

바이트(byte) : 8bit, 데이터의 기본 단위

워드(word) : CPU가 한 번에 처리할 수 있는 데이터의 크기, CPU의 성능에 따라 워드의 크기는 달라짐

 

음수의 2진 표현 - 2의 보수법

어떤 수의 n의 보수는 더했을 때 n이 되는 수

2의 보수 관계에 있는 두 2진수로, 절대값이 같고 부호가 다른 두 10진수를 표현하는 것을 2의 보수법이라 하며, 현재 대부분의 시스템이 2의 보수법으로 부호있는 정수를 표현

2의 보수 = 1의 보수 + 1

 

 

기본형(primitive type)

논리형 - boolean

boolean형 변수에는 treu나 false 중 하나를 저장 가능

기본 값은 false

 

문자형 - char

char 타입 면수는 단 하나의 문자만을 저장 가능

변수에 문자가 저장되는 것이 아닌, 문자의 유니코드(정수)가 저장 

 

A(문자) -> 65(코드) : 문자 인코딩

65(코드) -> A(문자) : 문자 디코딩 

 

정수형 - byte, short, int, long

byte(1 byte) < short(2 byte) < int(4 byte) < long(8byte)

 

어떤 진법의 리터럴을 변수에 저장해도 실제로는 2진수로 바뀌어 저장

2진수가 저장되는 형식

  • 정수형
    • [S(부호비트)][ n - 1 비트]
      • 0, 양수 : [0][ n - 1 비트]
      • 음수 : [1][ n - 1 비트]
  • 실수형

 

오버플로우(overflow) : 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것

  • 부호 있는 정수
    • 2진수로 '0000'이 될 때 오버플로우 발생
  • 부호 없는 정수
    • 부호비트가 0에서 1이 될 때 오버플로우 발생

 

실수형 - float, double

실수형 : 실수를 저장하기 위한 타입

타입 정밀도 크기(bit)
float 7자리 32
double 15자리 64

 

실수형에서 오버플로우가 발생하면 변수의 값은 '무한대'

실수형에서 언더플로우가 발생하면 변수의 값은 0

 

float의 표현 방식

[S(1)][E(8)][M(23)]

  • S : 부호
    • 양수면 0, 음수면 1
  • E : 지수
    • 부호있는 정수
  • M : 가수
    • 실제 값을 저장하는 부분

=> 10의 제곱을 곱한 형태로 저장

 

 

실수형은 오차가 발생할 수 있다는 단점이 있기에 정밀도(precision)이 중요한 요소

정밀도가 7자리 = 7자리의 10진수를 오차 없이 저장할 수 있음

 

따라서 실수형 값을 저장할 때 float 타입보다 높은 정밀도를 가지고 있는 double 타입을 사용

 

형변환

형변환(캐스팅, casting) : 변수 또는 상수의 타입을 다른 타입으로 변환하는 것

(타입)피연산자

 

정수형간의 형변환

  • 큰 타입에서 작은 타입으로 변환
    • 크기의 차이만큼 잘려나감
    • 경우에 따라 값 손실(loss of data) 발생
  • 작은 타입에서 큰 타입으로 변환
    • 저장공간의 부족으로 잘려나가지 않음으로 값 손실이 발생하지 않음
    • 빈 공간은 0 또는 1로 채워짐

 

자동 형변환

형변환을 생략했을 때, 컴파일러가 형변환을 자동적으로 추가

기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환

 

  • boolean을 제외한 나머지 7개의 기본형은 서로 형변환이 가능
  • 기본형과 참조형은 서로 형변환할 수 없음
  • 서로 다른 타입의 변수간의 연산은 형변환을 하는 것이 원칙이지만, 값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략 가능

 

복사했습니다!