본문 바로가기

언어/JAVA

4장 변수 / 기본 자료형

'자바의 신'의 1장, 2장, 3장은 자바 설치와 기본 문법에 대한 설명으로 한번 읽고 넘겼다.

 

변수(variable)

1. 변동이 심한; 가변적인    2. 변화를 줄 수 있는

 

 변수(Variable)란 값(Value)을 저장할 수 있는 메모리의 공간을 의미한다.

 쉽게 말해 값을 담을 수 있는 상자와 같으며, 이름에서 유추할 수 있듯이 변수는 말 그대로 '변하는 수'를 뜻한다.

 

자바에서는 4가지의 변수가 있다.

예시)

public class VariableTypeKor {
	int 인스턴스_변수;
    static int 클래스_변수;
    
    public void method(int 매개_변수) {
    	int 지역_변수;
    }
}

 

지역 변수 (local variables) 중괄호 내에서 선언된 변수 지역 변수를 선언한 중괄호 내에서만 유효하다.
매개 변수 (parameters)  메소드에 넘겨주는 변수 메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸된다.
인스턴스 변수 (instance variables) 메소드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어 없어야한다. 객체가 생성될 때 생명이 시작되고, 그 객체를 참조하는 다른 객체가 없다면 소멸한다.
클래스 변수 (class variables) 인스턴스변수처럼 메소드 밖에, 클래스 내에 선언된 변수 중에서 타입 선언 앞에 static이라는 예약어가 있는 변수 클래스가 처음 호출될 때 생명이 시작되고, 자바 프로그램이 끝날 때 소멸된다.

 

자바의 자료형

자바의 자료형은 크게 2가지로 나뉘는데 기본자료형과 참조자료형이다.

참조 자료형은 내가 원하는대로 만들 수 있지만 기본 자료형은 추가로 만들 수 없다.

 

기본 자료형 

기본 자료형은 총 8개로 숫자와 boolean타입 두 가지로 나뉜다.

기본 자료형에 대한 설명1

 

기본 자료형에 대한 정리는 다음과 같다.

자료형 키워드 크기 기본값 표현범위
논리형 boolean 1bit false true or false
문자형 char 2byte \u0000 0 ~ 65,535 ( 0 ~ 2^16 - 1 )
정수형 byte 1byte 0 -128 ~ 127 ( -2^7 ~ 2^7 - 1 )
short 2byte 0 -32,768 ~ 32,767 (-2^15 ~ 2^15-1)
int 4byte -2,147,483,648 ~ 2,147,483,647
( -2^31 ~ 2^31-1 )
long 8byte 0 -9,223,372,036,854,775,808
~ 9,223,372,036,854,775,808
( -2^63 ~ 2^63-1 )
실수형 float 4byte 0.0 -3.4E38 ~ +3.4E38
double 8byte 0.0 -1.7E308 ~ 1.7E308

 

위의 표를 보면 알겠지만 정수형 중에서 char만이 unsigned이다.(표에서는 문자형으로 따로 나와있지만 정수형에 포함된다.)

signed, unsigned는 음수를 표현하고 안하고의 차이이다

 

signed - 부호를 가지는 값 (양수, 음수 구별)

unsigned - 부호를 가지지않는 값 (오직 양수만)

 

예시) byte로 예시를 들어보자

byte는 8bit의 signed 타입이다.

아래의 표와 같이 모든 공간에 1이 채워지면 

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
1 1 1 1 1 1 1 1

2^7 X 1 + 2^6 X 1 + 2^5 X 1 + 2^4 X 1 + 2^3 X 1 + 2^2 X 1 + 2^1 X 1 + 2^0 X 1 = 255

가 된다.

 

하지만 byte의 표현범위는 -128 ~ 127 이기에 부호를 가질 수 있어 양수, 음수를 구분해야 한다.

그래서 8비트 중 가장 최상단 비트(MSB)의 값을 0이면 양수 1이면 음수로 구분할 때 사용하게 된다.

(만약 int로 가정하면 2^31을 양수, 음수 구분할 때 사용됨)

구분   2^6 2^5 2^4 2^3 2^2 2^1 2^0
양수
최대값
0 1 1 1 1 1 1 1 127
음수
최소값
1 0 0 0 0 0 0 0 -128

 

만약 숫자 5를 byte로 선언했으면

-> 0000 / 0101

숫자 -5를 byte로 선언했으면

-> 1000 / 0101

 

<위의 기본자료형을 정리한 표에는 안 나온 특징 정리>

long

  • 숫자를 명시적으로 초기화할 때는 숫자 맨 뒤에 'L'을 붙여야 한다.

short

  • 32비트 범위를 넘어서는 값에 대해서는 정확성 보장하지 못한다.
  • single-precision 32-bit IEEE 754 floating point(32비트 단정밀도)
  • 부호 1자리 + 지수 8자리 + 가수 23자리 = 32비트

double

  • 64비트 범위를 넘어서는 값에 대해서는 정확성 보장하지 못한다.
  • single-precision 64-bit IEEE 754 floating point(64비트 단정밀도)
  • 부호 1자리 + 지수 11자리 + 가수 52자리 = 64비트

기본자료형의 형 변환

  • 형 변환은 서로 다른 타입 간의 자료형을 변환하는 작업이다.
  • boolean타입을 제외하고 모든 기본자료형은 형 변환이 가능하다.
  • 기본자료형 <->참조자료형 형 변환은 안된다.
  • 숫자 값을 참조자료형으로 변경할 수 있는 방법이 전혀 없는 것은 아니다.(Integer, Long)
  • byte(1바이트, 8비트) -> short(2바이트, 16비트)는 문제없지만 
  •  short(2바이트, 16비트)  -> byte(1바이트, 8비트) 1바이트를 버리게 되어 다른 결과를 볼 수 있다.

 

 

참고사이트 및 자료

자바의 신

https://lazymolt.tistory.com/60

'언어 > JAVA' 카테고리의 다른 글

10장 상속  (0) 2021.10.19
9장 패키지 / 접근제어자  (0) 2021.09.21
8장 참조자료형  (0) 2021.09.21
6장 조건문 / 반복문  (0) 2021.09.19
5장 연산자  (0) 2021.09.16