ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA의 변수 - 기본형과 참조형(primitive type & reference type)
    자바 2016. 2. 21. 18:23

    1.변수

    변수는 값을 저장할 수 있는 메모리상의 공간을 나타냅니다.

    변수를 사용하기 위해서는 처음 선언을 한 후 초기화를 시켜주면 사용 가능합니다.

    초기화를 해주지 않으면 변수에 어떤 값이 들어갈 지 모릅니다. 보통 C언어를 배울 땐 -43523425같은 이상한 값(garvage value)이 들어가지만 자바에서는 초기화를 해주지 않으면 이클립스가 초기화를 해주지 않았다고 에러를 띄우니 바로바로 고칠 수 있습니다.


    2. 기본형과 참조형

    기본형primitive type : 논리형, 문자형, 정수형, 실수형이 있다. 계산을 위해 실제 값을 저장한다.

    참조형reference type : 객체의 주소를 저장한다. null 또는 객체의 주소(4byte, 0x0 ~ 0xffffffff)를 갖는다.




    기본형은 논리형 boolean,   문자형 char,   정수형 byte, short, int, long   실수형 float, double이 있습니다.

    boolean은 참true, 거짓false 중 하나의 값을 나타내며 조건을 나타낼 때 사용합니다.

    byte, short, int, long은 정수를 저장하기 위해 사용되며 타입의 크기에 따라 저장 할 수 있는 수의 범위가 다릅니다.

    float, double은 실수를 저장하기 위해 사용되며 얼마나 낮은 소수점의 수를 나타낼것인가에 따라 선택하여 사용하면 됩니다.

    자료형

    표현할 수 있는 값의 범위

    크기 byte

    boolean

    false, true

    1

    char

    0 ~ 65535 (2^16)

    2

    byte

    -128 ~ 127 (-2^7 ~ 2^7 -1)

    1

    short

    -32768 ~ 32767 (-2^15 ~ 2^15 -1) 

    2

    int

    -21 ~ 21 (-2^31 ~ 2^31 -1)

    4

    long

    -920 ~ 920(-2^31 ~ 2^31 -1)

    8

    float

    1.4E-45 ~ 3.4E38

    4

    double

    4.9E-324 ~ 1.8E308

    8

    boolean - true, false로 참, 거짓을 판명하며 기본값은 false입니다.

    char - 문자를 저장하기 위한 타입으로 자바는 유니코드를 사용하므로 c와 다르게 2byte의 크기를 가집니다. 문자'A'를 저장하는것은 65를 저장하는것과 같습니다.

    char ch = 'A' 와 char ch = 65는 동일합니다. 그리고 다른 정수형과의 연산도 가능합니다.

    char타입의 변수에 숫자가 들어가게 되어도 println()으로 출력을 할 경우 문자로 디코딩 되어 출력이 됩니다. java의 인코딩 방법은 UTF-16입니다.

    byte, short, int, long - 정수를 저장하기 위한 타입들이며 기본적으로 int형을 사용하길 추천드립니다. JVM은 피연산자의 스택이 피연산자를 4byte 단위로 저장하기 때문에 크기가 4byte보다 작은 byte나 short형 타입들도 4byte로 변환하여 연산이 수행됩니다.

    float, double - 실수를 저장하기 위한 타입들입니다. float의 범위는 1.4 X 10^15 ~ 3.4 X 10^38, 음수는 -3.4 X 10^38 ~ -1.4 X 10^15 입니다. double경우도 위의 표와 같습니다.

    실수형 표현방법엔 정밀도가 정해져있습니다. 정밀도란 몇자리의 수를 지수,가수 형태로 표현 할 수 있냐는 것입니다.

    float의 정밀도는 7 double의 정밀도는 15입니다. 이 경우 float는 12.34567을 1.234567 X 10^2 혹은 1234567.1을 1.234567 X 10^5로 나타낼 수 있고 만약 123.456789123의 값을 저장하게 될 경우 7자리 이상의 범위엔 오차가 발생 할 수 있습니다. 보다 높은 정밀도를 필요로 한 경우는 double을 사용하면 됩니다.

    참조형은 기본형 8개를 제외한 모든 타입, 기본적으로 제공하는 클래스 그리고 프로그래머가 스스로 만든 클래스, 열거타입등을 모두 참조형이라고 합니다. 이 부분은 클래스를 배우는 시간에 자세히 설명하면 될것같습니다.

    3. 상수와 리터럴

    상수constant는 변수와 마찬가지로 선언을 한 다음 초기화를 시켜주어 변수로써 사용하는것이지만 처음 초기화 한 값 이후에 값을 바꾸지 않겠다고 선언하는것입니다.

    타입 앞에 final을 붙임이고 변수 이름은 관례적으로 대문자를 사용합니다.

    리터럴literal은 그저 12, 400, 1.234, 'A', 'b'와 같은 프로그래머가 입력하는 data를 리터럴이라고 표현합니다. 

    이 리터럴을 최소한으로 사용하기 위해 상수로 선언하고 상수 변수를 사용해서 프로그램을 작성한다면 코드를 고치는데 비용을 최소화 할 수 있어서 의식적으로 자주 사용하시면 코드가 편리하고 깔끔해집니다.

    코드 2가 확연히 보기도 쉽고 수정하기도 용이할것입니다.

    리터럴의 타입은 값 뒤에 L(l), F(f), D(d)를 붙임으로 정의할 수 있습니다.

    long age = 50L 이런식으로 50을 long 타입 리터널로 나타낼 수 있습니다. float는 f double은 d를 리터럴 뒤에 붙일 수 있고 기본적으로 리터럴 뒤에 아무런 접미사가 붙지 않을경우 정수형 리터럴은 기본이 int 타입 실수형은 기본이 double 타입입니다.

    그래서 float 타입의 변수에 기본 리터럴 3.14를 넣게 된다면 더 큰 정밀도를 가진 리터럴이 낮은 타입에 들어가게 되어 오류가 나게 됩니다. 그러므로 float 타입에 실수 리터럴을 넣을 땐 f접미사를 꼭 붙이시기 바랍니다.


    본 포스팅은 자바의 정석(남궁성)을 보고 정리하였습니다.

    '자바' 카테고리의 다른 글

    JAVA의 클래스 클래스와 객체, 인스턴스, 구성요소  (0) 2016.08.26
    JAVA의 배열array, 스트링 배열 다차원 배열  (0) 2016.07.19
    JAVA의 제어문  (0) 2016.07.15
    JAVA의 연산자  (0) 2016.07.05
Designed by Tistory.