ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 기본 용어
    자바/Java 공부 2018. 3. 7. 20:04
    • 변수

    컴퓨터 언어에서 변수(variable)란, 값을 저장할 수 있는 메모리상의 공간을 의미한다.

    변수의 값은 바뀔 수 있으며, 하나의 변수에는 단 하나의 값만을 저장할 수 있다. 그래서 값을 여러 번 저장하면 마지막에 저장한 값을 갖게 된다. 


    변수를 사용하기 위해서는 먼저 변수를 선언해야한다. 변수가 선언되면 메모리 공간에 변수의 타입에 알맞은 크기의 메모리공간이 확보되어, 값을 저장할 준비가 되는 것이다. 



    변수타입 변수이름; 

    int number;             // 정수형 변수 number를 선언한다. 



    • 변수의 타입(Type)


    변수의 타입은 크게 기본형과 참조형, 2가지로 나눌 수 있는데, 기본형 변수는 실제 값(Data)을 저장하는 반면에, 참조형 변수는 어떤 값이 저장되어 있는 주소를 값으로 갖는다. 





    기본형(Primitive Types)





    - boolean은 true와 false 두 가지 값만 표현할 수 있으면 되므로 가장 작은 크기인 1 byte. 
    - char은 자바에서 유니코드(2 byte 문자체계)를 사용하므로 2 byte. 
    - byte는 크기가 1 byte라서 byte. 
    - int(4 byte)를 기준으로 짧아서 short(2 byte), 길어서 long( 8byte). (short <-> long) 
    - float는 실수값을 부동소수점(floating-point)방식으로 저장하기 때문에 float. 
    - double은 float보다 두 배의 크기(8 byte)와 두 배의 정밀도(double-precision)를 갖기 때문에 double. 



    Date클래스 타입의 참조변수 today를 선언한 것이다. 참조형 변수는 null 또는 객체의 주소를 값으로 갖으며 참조변수의 초기화는 다음과 같이 한다. 


    Date today = null; 
      또는 
    Date today = new Date(); 


    객체를 생성하는 연산자 new의 연산결과는 생성된 객체의 주소이다. 이 주소가 대입연산자(=)에 의해서 참조변수 today에 저장되는 것이다. 



    • 형변환


    형변환이란, 변수 또는 리터럴의 타입을 다른 타입으로 변환하는 것이다.


    모든 연산은 기본적으로 같은 타입의 피연산자(Operand)간에만 수행될 수 있으므로, 서로 다른 타입의 피연산자간의 연산을 수행해야하는 경우, 연산을 수행하기 전에 형변환을 통해 같은 타입으로 변환해주어야 한다. 

    피연산자 앞에 변환하고자 하는 타입의 이름을 괄호에 넣어서 붙여 주기만 하면 된다. 여기에 사용되는 괄호는 특별히 캐스트연산자(형변환 연산자)라고 하며, 형변환을 캐스팅(Casting)이라고도 한다.


    원칙적으로는 모든 형변환에 캐스트연산자를 이용한 형변환이 이루어져야 하지만, 값의 표현범위가 작은 자료형에서 큰 자료형의 변환은 값의 손실이 없으므로 캐스트 연산자를 생략할 수 있도록 했다. 
    그렇다고 해서 형변환이 이루어지지 않는 것은 아니고, 캐스트 연산자를 생략한 경우에도 JVM의 내부에서 자동적으로 형변환이 수행된다. 
    반면에 값의 표현범위가 큰 자료형에서 작은 자료형으로의 변환은 값이 손실될 가능성이 있으므로, JVM이 자동적으로 형변환하지 않고 프로그래머에게 캐스트 연산자를 이용하여 형변환을 하도록 강요하고 있다. 



    보통 자료형의 크기가 큰 것일 수록 값의 표현범위가 크기 마련이지만, 실수형은 정수형과는 값을 표현하는 방식이 다르기 때문에 같은 크기일지라도 실수형이 정수형보다 훨씬 더 큰 표현 범위를 갖기 때문에 float와 double이 같은 크기인 int와 long보다 오른쪽에 위치한다. 
    short과 char은 모두 2 byte의 크기를 갖지만, short의 범위는 -215 ~ 215-1(-32768~32767)이고 char의 범위는 0~216-1(0~65535)이므로 서로 범위가 달라서 둘 중 어느 쪽으로의 형변환도 값 손실이 발생할 수 있으므로 자동적으로 형변환이 수행될 수 없다. 


    << 요약정리 >>
     1. boolean을 제외한 나머지 7개의 기본형들은 서로 형변환이 가능하다. 
     2. 기본형과 참조형 간에는 서로 형변환이 되지 않는다. 
     3. 서로 다른 타입의 변수간의 연산에는 형변환이 요구되지만, 값의 범위가 작은 타입에서 큰 타입으로의 변환은 생략할 수 있다. 



    • 배열
    같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 "배열"이라고 한다. 많은 양의 데이터를 저장하기 위해서, 그 데이터의 숫자만큼 변수를 선언해야 한다면 매우 혼란스러울 것이다. 
    이런 경우에 배열을 사용하면 하나의 변수로 많은 양의 데이터를 손쉽게 다룰 수 있다. 

    [참고]서로 다른 타입의 데이터를 하나로 묶어서 다루려면, 클래스를 정의해서 사용하면 된다. 


    1.3 배열의 생성


    배열을 선언한 다음에는 배열을 생성해야한다. 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어지는 것 뿐이다. 배열을 생성해야만 비로소 데이터를 저장할 수 있는 공간이 만들어지는 것이다.

    배열을 생성하기 위해서는 new연산자를 사용하고 배열의 타입과 크기를 지정해 주어야 한다. 


    사실 배열도 객체이기 때문에 멤버변수와 메서드를 갖고 있으며, 이 중 멤버변수 length는 배열의 크기에 대한 정보를 담고 있다. 위의 예제코드에서 score의 크기가 5이므로 score.length의 값은 5가 된다. 
    [참고] 배열은 한번 생성되면 크기를 변경할 수 없다.