[Java] 자바 101 강의 - #2 (변수와 기본 자료형)

    자바(Java)를 배우기 위해선 우선 기본적으로 변수(variable)와 선언할 때 사용하는 자료형(type)을 알아야 됩니다. 자바는 정수값을 저장하기 위해서는 정수값을 선언해야 하고, 문자들을 다루기 위해서는 문자열을 선언해야 합니다.

     

    최근에 나오는 언어들은 알아서 타입을 지정(ex: kotlin)해주거나 선언 자체를 하지 않는 (ex: python, javascript) 언어들이 등장하기 때문에 자바가 구식처럼 느껴질 수 있지만, 사실 이 방식은 장단점이 있는 방식이기 때문에 어떤 언어가 좋다라고 말을 하기가 애매합니다.

     

    변수에 형태를 지정하지 않는다면 편리함이 있을 수 있겠지만, 예상하지 못한 데이터가 들어갔을 때 에러를 막지 못하는 단점도 존재할 수 있겠죠.

     

    자바 101 강의 - 변수와 기본 자료형

     


     

    변수(Variable)

    변수라는 것은 말그대로 변하는 값이라는 뜻입니다. 학창 시절 수학을 머리속에서 완전히 버리지 않았다면 변수와 상수는 당연히 알고 있을 것입니다. 그러나 프로그램에서 변수가 아직 잘 이해가 안된다면 "그릇"을 떠올리면 편합니다.

     

    변수는 그릇이라 생각하면 됩니다

     

    이 그릇에는 수많은 것들을 담을 수 있습니다. 위 사진처럼 케이크를 담을 수 있기도 하고, 과일을 올릴수도 있습니다. 이때 과일과 케이크를 값이라고 생각을 하고, 수많은 음식들을 담을 수 있는 그릇을 변수라고 생각하면 간단합니다.

     

    변수와 반대되는 용어로는 상수가 존재하며, 상수는 변하지 않는 수를 의미합니다. 예를 들어, 원주율(3.14)와 같이 변하면 절대로 안되는 값은 상수값으로 세팅을 하게 됩니다.

     

    기본 자료형(Type)

    자바에서 기본 변수는 구분을 하자면 4가지라고 볼 수 있습니다. 이 4가지 이외에도 다양한 변수들이 존재하지만, 기본 변수로서는 이정도만 알아도 어느 정도 개발을 할 수 있게 됩니다.

     

    정수형

    말 그대로 숫자값을 담는 것을 뜻합니다. 정수값에 문자열이나 실수와 같은 값을 넣을리는 없겠죠.

     

    int a = 2;
    int b = 5;

     

    정수형은 위와 같이 선언을 해줄 수 있으며, 기본적으로는 int(정수, integer)라는 약어로 된 자료형으로 선언을 합니다. a와 b 모두 정수형으로 선언하였고, a는 2를 담았으며 b는 5라는 값을 담았습니다. 만약 여기서 다른 형태의 값을 넣으면 어떻게 될까요?

     

    에러 발생

     

    위와 같이 incompatible types: Found: 'double', required: 'int' 라는 에러가 발생하게 되며, 내용은 int를 넣어야 하는데 double이 들어왔다 이런 의미로 프로그램이 아예 작동이 안됩니다.

     

    java: incompatible types: possible lossy conversion from double to int

    이런식으로 구동조차 안되게 됩니다.

     

    long 형태

    long은 long integer의 준말로 마찬가지로 정수형입니다만, int보다 훨씬 큰 수를 담을 수 있습니다. int는 4Byte이고, long은 8Byte로 지금은 이해가 안될테지만, 훨씬 큰 수는 long같은 값을 쓴다라고만 생각하는 것이 쉽습니다. 

     

    참고로 1Byte는 1Bit가 8개 모인 값으로 256개의 숫자의 값을 담을 수 있습니다.

     

    실수형

    자바에서 실수형을 처리하는 방법은 2가지로 float과 double 형이 존재합니다. 다만 보편적으로는 float을 쓰는 케이스는 많지 않고 실수형은 대개 double형으로 처리를 합니다. 

     

    실수형 선언

    double pi = 3.14;

     

    정수형의 경우는 long을 쓰는 케이스는 많습니다만, 실수형에서 float을 쓰는 케이스는 많지 않습니다. 그렇기에 개발을 하실 때에는 double을 사용하시고, 다른 소스가 float으로 인자값이 되어 있다면 float으로 변경하는 방식으로 진행을 하여도 전혀 문제가 없습니다.

     

    오히려 변수의 메모리를 아낀다고 float과 double을 섞어서 써버리면 개발의 공수가 더 올라가버리는 사태가 발생합니다. 과거 메모리가 너무 적었을 때나 타입을 신중히 썼지 지금처럼 메모리가 넉넉하고, float과 double 때문에 메모리가 over되는 케이스는 평생 개발하면서 거의 보지 못한다고 봐도 무방하기에 그냥 double만 쓴다고 생각하시기 바랍니다.

     

     

    문자열

    자바에서 문자를 담는 방법은 2가지가 있습니다. 하나는 char에 담는 방법이고, 다른 하나는 String이죠. 정확히 문자열로 확장을 하면 String밖에 없습니다. char의 경우, 오로지 한글자만 담는 방식이기 때문에 사용을 하는 케이스가 float보다 적거나 비슷합니다.

     

    문자열 선언

    String str = "동해물과 백두산이";
    char b = '동';

     

    참고로 문자열로 선언을 할 때에는 "" 쌍따옴표를 쓰며, 문자를 선언할 때에는 '' 외따옴표를 사용합니다. char 변수에 여러값을 담을 경우 아래와 같이 에러가 발생됩니다.

     

    Too many characters in character literal, 한마디로 캐릭터형에 너무 많은 문자가 담겨졌다 이런 에러가 발생한 것이죠. 한글자도 문자열로 담을 수 있기 때문에 캐릭터를 사용하는 케이스는 흔하지 않습니다. 무리해서 캐릭터형으로 변환해서 할 이유가 없기 때문에 그냥 개발을 할 때 문자열로 개발해도 아무런 지장이 없습니다.

     

    Boolean(불리언)

    불리언 자료형은 True와 False 즉 참과 거짓을 담기 위한 자료형입니다. 사실 불리언도 대체를 할 수 있습니다. 예를 들어 정수형을 만들고, 0일 경우 거짓 1일 경우 참이라고 약속하고 코딩을 하는 경우가 바로 그런 케이스죠.

     

    하지만 불리언의 경우 직관적이기 때문에 무리해서 정수형으로 사용하지 않습니다. 예를 들어 다음과 같은 정수형일 경우 값을 보지 않아도 무슨 값인지 쉽게 예측이 가능해집니다.

     

    public class Main {
    
        public static void main(String args[]) {
            boolean isNumber = true;
        }
    }

     

    위에 isNumber라는 변수명으로 true값을 세팅을 하였습니다. 사람들은 isNumber라는 값만 보더라도 true면 숫자구나라고 인식을 하게 될 것입니다. 즉 불리언은 char나 float과 달리 유지보수에 유리할 수 있으며, 크기 역시 1byte로 메모리 측면에서도 유리하기 때문에 사용을 안할 이유가 없는 것이죠.

     

    마치며...

    위 자료형들이 당최 무슨 말인지 이해가 안될 수도 있습니다. 프로그램은 코딩을 하면서 반복적으로 해야 확실히 내것으로 만들 수 있기 때문에 이해가 안되더라도 대충 이런 말이구나 하고 따라오면 앞으로 개발을 하는데 전혀 지장이 없을 겁니다.

     

    반응형

    댓글

    Designed by JB FACTORY