ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바 변수의 종류와 자료형 완벽 정리
    IT/개발(자바, 서블릿, 스프링 등) 2019. 12. 6. 10:36

    문서용 주석.

     

    /**

    */


    자바의 4가지 변수

    지역변수 매개변수 인스턴스변수 클래스변수
    {} 중괄호 내에 선언된 변수. 메소드나 생성자에 넘겨주는 변수. 클래스 안에, 메소드 밖에 선언된 변수. static 키워드 없음. 클래스 안에, 메소드 밖에 선언된 변수. static 키워드 있음.
    지역변수를 선언한 중괄호 내에서만 유효. 메소드 호출될 때 생명 시작, 메소드 끝나면 소멸. 객체가 생성될 때 생명 시작, 그 객체를 참조하는 다른 객체가 없을 때 소멸. 클래스가 생성될 때 생명 시작, 자바 프로그램이 끝날 때 소멸.

    클래스는 상태와 행위가 있다.

    EX) 자동차

            - 정지중.

            - 10km/h로 이동중.

            - 512km를 주행중.


    클래스와 객체

    new 연산자와 클래스의 생성자를 이용하여 객체를 생성한다.

    클래스는 대부분 그 자체만으로 일할 수 없고 객체를 생성해야 일을 시킬 수 있다.

    (클래스 변수는 객체 생성 없이 클래스명으로 접근.)


    자바의 2가지 자료형

    기본형    초기화할 때 값을 바로 적음   

    참조형    new 키워드 사용하여 초기화

    * String만 예외. 값을 통해 초기화 가능하지만 참조형.


    기본형

    정수형 / 소수형 / boolean

     

    정수형(char는 가장 아래에서 설명한다.)

    타입 최소 최대
    byte

    -2^7

    ------------------------------------

    -128

    2^7-1

    ------------------------------------

    127

    short

    -2^15

    ------------------------------------

    -32,768

    2^15-1

    ------------------------------------

    32767

    int

    -2^31

    ------------------------------------

    -2,147,483,648

    2^31-1

    ------------------------------------

    2,147,483,647

    long

    -2^63

    ------------------------------------

    -9,223,372,036,854,775,808

    2^63-1

    ------------------------------------

    9,223,372,036,854,775,807

    char

     

    ------------------------------------

    0

    2^16-1

    ------------------------------------

    65,535

     

    컴퓨터는 0과 1만 안다. 전기신호가 있을 땐 1, 전기신호가 없을 땐 0이다. 따라서 컴퓨터가 이해하는 기계어는 0과 1을 가진 2진수로 표현한다. 2진수 1자리는 비트이고, 8비트의 부호가 있는 타입(signed type)을 byte라고 한다. 8비트 중 가장 왼쪽의 비트는 부호를 나타낸다. 0이면 양수이고 1이면 음수가 된다. 따라서 위에 표를 보면, 바이트는 8비트 중 부호비트를 제외하고 7비트로 표현하기 때문에 2^7-1이 된다. 그런데 왜 음수는 -128일까? 아래를 보면 +0이든 -0이든 둘 다 0이다. 

    0000 0000

    1000 0000

    언뜻 보기에 둘 다 0인 것 같지만 위는 0, 아래는 -128이다. 다시 말하면, byte, short, int, long 타입의 가장 앞의 값만 1인 것은 해당 타입의 최소값이고, 두 번째 값부터 1로 채워져 있으면 해당 타입의 최대값이다. 값을 하나라도 더 표현하기 위해 이런 방법을 사용했다. 절대값만으로 따지면, 최소값이 최대값보다 딱 1이 더 크다.

    byteMin = -128

    byteMax = 127

    byteMin--;

    byteMax++;

    위와 같은 프로그램을 실행하면,

    최소값에서 1을 더 뺀 것은 최대값이 나오고,

    최대값에서 1을 더한 것은 최소값이 나온다.

     

    보통 byte나 short보다 int나 long을 많이 사용한다. 왜냐하면 위에서 살펴봤듯 바이트로 표현 했을 때, 최소값에 -128에 -1을 하면 -129를 예상하지만 127이 되어버리는 등 원하지 않는 계산이 될 수 있기 때문이다. long의 경우에 선언할 때 소문자 L을 붙여주는 것이 좋다.

     

    소수형

     

    소수점 처리.

    간단한 계산에는 사용해도 무방하지만, float(32bits)와 double(64bits)가 제공하는 범위를 넘어서면, 값의 정확성을 보장하지 못한다.

    돈 계산과 같은 정확한 계산이 요구될 때, 자바에서 java.math.BigDecimal이라는 클래스를 사용한다.

    보통 double을 많이 사용.

    float: 부호 1자리 + 지수 08자리 + 가수 23자리 = 32비트

    double: 부호 1자리 + 지수 11자리 + 가수 52 자리 = 64비트

     

    char, boolean

     

    캐릭터 변수는 유니코드 값을 따른다.

    자바의 정수형 중 유일하게 부호가 없는 값이다. 음수 불가능.

     

    * 아스키 코드란와 유니코드란?

    영어 알파벳, 숫자, 기호, 각종 여러가지 값을 담을 수 있는 1바이트 단위의 코드표를 만들었다.

    이 코드표에는 각 문자마다 고정된 번호가 할당되어 있다.

    a라는 문자의 아스키 값은 97이다.

    어떤 컴퓨터에서든 어떤 언어를 사용하든 어떤 OS든지 a를 표현할 때 사용하든 번호는 97이라는 약속이다.

    자바에서는 유니코드라는 2바이트 단위의 코드표를 사용한다.

    따라서 아스키가 할당된 값들이 먼저 나오고, 그 다음에 미리 정해져 있는 유니코드들이 존재한다.

     

    캐릭터 변수를 지정하는 방법은 크게 세가지.

    홑 따옴표 안에 문자 하나 넣기

    \u 뒤에 16진수 값 넣기

    정수 값 넣기

    (예시)

    char a = 'a';

    char c = '가';

    char e = '\u1188';

    char g = 999;

     

    드디어 마지막인 boolean 값을 알아보자.

    불리언형은 true 혹은 false 값만 저장.

    참은 1, 거짓은 0이라는 정수로 나타낼 수도 있다.

Designed by Tistory.