ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]STEP1 - 2) 변수, 리터럴, 데이터 타입, 타입 변환
    개발 공부/Java 2020. 8. 28. 20:19

     

     

    본 게시글은 도서 "이것이 자바다" 동영상 강의를 듣고 기록하는 TIL(Today I Learned) 입니다.
    모든 저작권은 출판사 한빛미디어와 신용권님께 있음을 알립니다.👍

     

     

    1. 변수(Variable)


    1-1. 변수의 개념과 선언

    변수: 하나의 값을 저장할 수 있는 메모리 공간

     

    변수의 선언은 어떤 타입의 데이터를 저장할 것인지, 변수 이름이 무엇인지를 결정해야 한다.

    // 정수(integer)값을 저장할 수 있는 number 변수 선언
    int number;

    // 실수(double)값을 저장할 수 있는 result 변수 선언
    double result;

    // 같은 타입의 변수는 한꺼번에 선언 가능
    char a, b, c;

     

    변수이름은 다음과 같은 작성 규칙들을 가진다.

    1. 첫 번째 글자는 문자, $, _ 만 가능하고 숫자로는 시작할 수 없다.
    2. 특수문자(ex. @, #, * 등)를 넣을 수 없다.
    3. 영어 대,소문자가 구분된다.
    4. 첫 문자는 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다. (ex. nameColor)
    5. 문자 길이의 제한은 없다.
    6. 자바 예약어는 사용할 수 없다. (int, class, void, while 등 자바 언어 자체 내에서 이미 정해진 예약어)

    1-2. 변수의 사용

    변수에 값을 저장할 때는 대입 연산자(=)를 사용한다.

    // 변수 선언하고 값 저장하기
    int number;
    number = 1;

    // 선언과 저장 동시에 하기
    int number = 1;

     

    리터럴(literal) : 소스 코드 내에서 직접 입력된 값

     

    정수 리터럴
    10진수 (소수점 없음) 1, 65, 200
    8진수 (0으로 시작) 05, 010
    16진수 (0x 또는 0X로 시작) 0x6, 0xB, 0xB7
    byte, char, short, int, long 타입에 저장가능  

     

    실수 리터럴
    10진수 (소수점 있음) 0.54, 1.0, -9.22
    10진수 지수와 가수 (대문자 E 또는 소문자 e) 5E8, 0.35E-8
    float, double 타입에 저장가능  

     

    문자 리터럴
    작은 따옴표('')로 묶은 텍스트 'A', '1', '가', '\n'
    char 타입에 저장가능  

     

    문자열 리터럴
    큰 따옴표("")로 묶은 텍스트 "컴퓨터", "자바", "프로 \n 그래밍"
    String 타입에 저장가능  

     

    논리 리터럴
    참 거짓 true, false
    boolean 타입에 저장가능  

     

     

    변수의 사용 범위: 중괄호 블록({}) 내에서만 사용 가능

    public static void main() {
    	int a;
        
        if(true) {
        	int b;
            // int a 사용 가능
            // int b 사용 가능
        }
        
        // int a 사용 가능
        // int b 사용 불가능
    }

     


     

    2. 데이터 타입(Data Type)


    2-1. 데이터 타입의 종류

    정수: byte, char, short, int, long 

    • byte: 1 byte,   -128 ~ 127,   가장 작은 범위의 수를 저장
    • char: 2 byte,   0 ~ 65535,   유니코드를 저장하여 문자를 표현하기 위함, 음수 값 저장 불가능
    • short: 2 byte,   -32,768 ~ 32,767,   C언어와의 호환을 위해 사용되며 비교적 자바에서는 사용 되지 않음
    • int: 4 byte,   - 2,147,483,648 ~ 2,147,483,647,   정수 연산의 기본 타입
    • long: 8 byte,   -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807,   가장 큰 정수 단위, 은행 및 우주 분야에서 사용

     

    실수: float, double

    • float: 4 byte,   부호(1bit) + 지수(8bit) + 가수(23bit),  입력 시 숫자 뒤에 F나 f를 붙여야 인식함(ex. 10.0f)
    • double: 8 byte,  부호(1bit) + 지수(11bit) + 가수(52bit),  실수 연산의 기본 타입

     

    논리: boolean

    • boolean: 1 byte,   true/false 논리값 저장,   조건문과 제어문의 실행 흐름을 변경하는데 자주 사용

     

    String은 자바의 기본 데이터 타입이 아니다! String은 클래스 타입이고 String 변수는 참조 변수이다.

     


    2-2. 타입 변환

    자동 타입 변환(Promotion) : 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것.

    작은 크기의 타입이 큰 크기의 타입에 저장 될 때 일어난다.
    byte < short < int < long < float < double
    byte one = 1;
    int bigOne = one;

    // 이때 bigOne에 one이 들어가면서 byte에서 int로 자동 타입 변환이 이루어진다.

     

     

    강제 타입 변환(Casting) : 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어 저장하는 것.

    큰 크기의 타입이 작은 크기의 타입에 저장 될 때 일어난다.
    캐스팅 연산자 () 를 이용하여 타입을 변환한다.
    int big = 1000000;
    byte small = (byte) big;

    // 이때 small에 big이 들어가면서 int에서 byte로 강제 타입 변환이 이루어진다.
    // 단, 1000000이라는 수는 byte에 들어갈 수 없으므로, 1000000의 조각이 들어가게 되어 전혀 다른 값이 들어간다.


    int big = 1;
    byte small = (byte) big;

    // 이러한 경우에는 1이라는 수가 byte에도 들어갈 수 있으므로, 값의 깨짐 없이 1이 고스란히 small로 들어간다.

            강제 타입 변환 시에는 두 가지 주의사항이 있다.

    1. 안전하게 값이 보존 될 수 있는지 검사하는 것이 좋다.
      큰 단위에서 작은 단위로 쪼개지며 이동하므로 값의 손실이 일어나지는 않는지 정확히 파악해야 한다.

    2. 정수 타입을 실수 타입으로 변환할 때 정밀도 손실을 피해야 한다.

     

    연산식에서의 자동 타입 변환 : 연산 시에 일어나는 자동 타입 변환

    서로 다른 타입의 피연산자가 있을 경우, 두 피연산자 중 크기가 큰 타입으로 자동 변환 된 후 연산한다.
    int one = 1;
    double two = 2.0;
    double result = one + two;

    // 이때 result 값은 3.0 이 나온다.
    // int가 double 보다 작은 타입이므로, int one은 double 타입으로 자동 변환 된 후 연산된다.

     

     

    본 게시글은 여기서 마치겠습니다.

    읽어주셔서 감사하고, 혹시나 틀린 부분이나 보완해야할 부분이 있다면 댓글에 남겨주세요~!

     

     

     

    댓글

Designed by Tistory.