티스토리 뷰

목차



    반응형
    컴퓨터는 데이터를 어떻게 표현할까?
    변수란 무엇일까?
    변수가 저장되는 자료의 특성, 자료형
    상수와 리터럴
    형 변환

    컴퓨터는 데이터를 어떻게 표현할까?

    컴퓨터는 0과 1로만 데이터를 저장한다. (2진수)

    따라서 숫자나 문자도 0과 1의 조합으로 표현된다.

    그러나 2진수로만 표현되면 너무 길어지므로, 8진수와 16진수를 사용하기도 한다.

    int num = 10; // 10
    int bNum = 0B1010; // 10
    int oNum = 012; // 10
    int hNum = 0XA; // 10
    //4개의 변수 모두 10을 가르킨다.

    비트(bit) : 컴퓨터가 표현하는 데이터의 최소단위로 2진수 하나의 값을 저장할 수 있는 크기를 말한다.
    ※ 바이트(byte) : 1byte = 8bit를 의미한다.

    변수란 무엇일까?

    프로그램에서 사용되는 자료를 저장하기 위한 공간

    할당 받은 주소 대신에 부르는 이름 

    프로그램 사용 중에 값 변경 가능

    사용되기 이전에 선언되어야 함

    영어로 variable 이라고 부름

     

    변수 선언과 초기화

    int level; //level이라는 이름의 변수를 선언
    int level = 0; //level 이라는 이름의 변수를 0으로 초기화

    변수 선언시 유의점

    변수의 이름은 알파벳과 숫자로 구성되며, 특수문자는 _ (언더바), $(달러)만 허용된다. (공백은 허용하지 않음.)

    변수의 이름은 숫자나 특수문자로 시작할 수 없고, 소문자(관례적)를 시작으로 이후 단어의 첫 알파벳은 대문자로 구분한다.

    키워드도 변수의 이름으로 사용할 수 없다.

    ※ 변수의 이름을 정할 때는 변수의 역할에 어울리는 의미 있는 이름을 지어야 한다.

     

    변수가 저장되는 자료의 특성, 자료형

      정수형 문자형 실수형 논리형
    1byte byte - - boolean
    2byte short char - -
    4byte int - double -
    8byte long - float -

    변수를 사용할 공간의 크기와 특성에 따라 자료형을 사용하여 변수를 선언한다.

     

    byte

    동영상, 음악 파일 등 실행 파일의 자료를 처리 할 때 사용하기 좋은 자료형

    byte bNum; // 1byte

    short

    주로 c/c++ 언어와의 호환시 사용

    short sNum; // 2byte

    int

    자바에서 사용하는 정수에 대한 기본 자료형

    프로그램에서 사용하는 모든 숫자(리터럴)는 기본적으로 int로 저장됨

    int iNum; // 4byte

    long

    가장 큰 정수 자료형

    값의 끝 부분에 L을 명시하여 long형임을 표시해야 함

    long lNum = 100L; // 숫자 마지막의 L입력 8byte

    ※ 소문자 l을 써도 되지만 숫자 1과 구분하기 위해 대문자 사용을 권장함

     

    char

    컴퓨터에서는 문자도 내부적으로는 비트의 조합으로 표현

    각 문자의 특정한 숫자 값을 부여하여 변환(인코딩)

    ex) 'A', 65 'B' 66

    char ch1 = 'A'; // 2byte
    char ch2 = 65; // 'A' 출력

    ※ 인코딩 : 각 문자에 따른 특정한 숫자 값(코드 값)을 부여

    ※ 디코딩 : 숫자 값을 원래의 문자로 변환

     

    float, double

    부동 소수점 방식 : 실수를 지수부와 가수부로 표현, 무한의 실수를 표현하기 위함.

    실수는 기본적으로 double 형을 사용함

    float 형으로 사용하는 경우 값 마지막에 f 또는 F를 명시함.

    double dNum = 3.14; // 4byte
    float fNum = 3.14F; // 8byte

    boolean

    논리값 true(참), false(거짓)을 표현하는 자료형

    boolean isMarried1 = true; // 참 
    boolean isMarried2 = false; // 거짓
    // 1byte

    자료값 없이 변수 사용하기

    지역 변수 자료형 추론(local variable type inference)

    변수에 대입되는 값을 보고 컴파일러가 추론

    var num = 10; // int
    num = 10.0 // 오류발생
    var dNum = 10.0; // double
    dNum = 10 // 10.0 출력

    ※ 최초의 선언된 자료형 변경 안됨.

     

    상수와 리터럴

    상수

    변하지 않는 값

    상수를 선언

    final 키워드 이용

    final double PI = 3.14;
    PI = 3.15; // 에러발생
    final int MAX_NUM = 100;

    final 로 선언된 상수는 다른 값을 대입할 수 없음.

    프로그램에서 변경되지 않아야 하는 값을 상수로 선언한 후 변경이 필요할 때에는 상수의 값을 수정

     

    리터럴

    프로그램에서 사용되는 모든 문자, 숫자, 논리 값

    ex) 10, 3.14, 'a', true

    리터럴에 해당되는 값은 특정 메모리 공간인 상수 풀(constant pool)에 있음.

    필요한 경우 상수 풀에서 가져와서 사용

    상수 풀에 저장할 때 정수는 int, 실수는 double를 저장

    long이나 float 값으로 저장하는 경우 식별자(L, l, F, f)를 명시해야 함.

     

    형 변환

    자료형은 각각 사용하는 메모리 크기와 방식이 다름 

    서로 다른 값이 대입되는 경우 형 변환이 일어남

     

    묵시적 형변환

    작은 수에서 큰 수로 덜 정밀한 수에서 정밀한 수로 대입되는 경우

    byte bNum = 10; // 1byte
    int iNum = bNum; // 4byte
         
    System.out.println(bNum); // 10
    System.out.println(iNum); // 10

    명시적 형변환

    묵시적 형 반대의 경우 

    반환되는 자료형을 명시해야 함(자료의 손실이 발생할 수 있음)

    double dNum1 = 1.2; // 8byte
    float fNum2 = 0.9F; // 4byte
    
    int iNum3 = (int)dNum1 + (int)fNum2;
    int iNum4 = (int)(dNum1 + fNum2);
    
    System.out.println(iNum3); // 1
    System.out.println(iNum4); // 2
    반응형