변수

황상익·2023년 11월 13일

열혈 자바

목록 보기
2/30
  1. 변수의 이해와 활용

1) 메모리 공간의 활용을 위해 필요한 변수
변수를 한 문장으로 정리하자면
"데이터의 저장과 참조를 위해 할당된 메모리 공간에 붙인 이름"

2) 변수는 메모리 공간에 붙여진 이름
코드상에 변수라는 것 선언시 메모리 공간이 할당된다.
할당된 메모리 공간에 이름이 붙고, 이름을 통해서 해당 메모리 공간에 접근

변수를 선언하고 저장과 참조

public class Main {
    public static void main(String[] args) {
        int num1;
        num1 = 10;

        int num2 = 20;
        int num3 = num1 + num2; // num3 초기화
        System.out.println(num1 + " + " + num2 + " = " + num3);
    }
}

자바에서 값의 대입 의미로 = 기호 사용
= 기호를 가르켜 대입연산자라고 한다.

동시에 값을 저장 할 수도 있고, num2 = 20으로 설정시 초기화 된다.
(초기화란 값을 저장하는 일을 가르켜 초기화라고 한다.)

3) 자료형의 종류와 구분

정수 표현에 사용되는 자료형과 실수 표현에 사용되는 자료형은 바이트 크기에 따라서 종류가 둘 이상 된다.

public class Main1 {
    public static void main(String[] args) {
        double num1, num2;
        double result;

        num1 = 1.000001;
        num2 = 2.000001;
        result = num2 + num1;
        System.out.println("result = " + result);
    }
}

컴퓨터 실수 표현에는 오차가 존재한다.
변수에 저장되는 값은 가장 가까운 값일 뿐 출력되는 값이 정확한 값은 아니다.

4) 변수의 이름을 짓는 방법
자바는 대소문자 구분

    1. 변수 이름은 숫자로 시작 x
    1. $과 _ 이외의 다른 특수 문자는 변수에 사용 될 수 없다.
    1. 키워드는 변수의 이름으로 사용할 수 없다.
  1. 정수의 표현 방식 이해

1) 컴퓨터가 정수를 표현하는 방식
정수 표현에 있어 제일 먼저 결정 사항 -> 몇 바이트로 정수를 표현할 것 인가.

정수는 1바이트 2바이트, 8바이트 표현 가능.
바이트 크기 클수록 표현 할 수 있는 정수 범위는 넓어진다.
0(부호) 0 0 1 1 0 0 1
가장 왼쪽에 위치한 비트는 부호. 0이면 양수, 1이면 음수
나머지는 데이터의 양적 크기를 의미

2) 음의 정수를 표현하는 방식?
음의 정수 -> -1의 가장 왼쪽 비트는 1이다.
음의 정수 -> -1의 부호를 제외한 데이터 크기는 1이므로 나머지 비트는 0000001이다.
따라서 -1을 1 바이트로 표현하면 100000001 ?
0000001 + 1000001 = ? 0은 아니다.

이럴경우 음의 정수는 어찌 표현해야 할까?
양의 정수의 이진수 표현에 2의 보수를 취한 결과 정수로 표현한다.

  1. 2의 보수를 구하는 방법
    정수 +5의 2의 보수
    00000101 -> 1의 보수 -> 11111010 + 1 => 11111011
    1의 보수는 각 비트 별로 1은 0, 0은 1로 변경 그리고 나서 +1을 한다

  2. 실수 표현의 방식 이해하기

1)정밀도를 낮추고 근사치의 값을 찾아서 표현하기
즉) 정밀도를 낮추고, 표현할 수 있는 값의 범위를 넓힌다.
부호 비트에는 양의수를 의미하는 0, e에는 00000을 그리고 m에는 000000001을 넣어보면 표현 되는 값은
0(sign)00000(c)00000001(m)

최대한 가가운 수가 만들어지도록 비트의 열이 구성됨/ 실수엔 항상 오차가 있다고 본다.

  1. 자바의 기본 자료형
    변수를 선언할 때, 자료형을 결정해주어야 한다. 변수의 자료형을 결정한다는 것은 해당 변수에 값을 저장, 참조
    변수의 자료형을 정수형으로 결정 -> 정수 표현 방식으로 값을 저장 및 참조

1) 정수 자료형 (byte, short, int, long)
자료형을 기반으로 변수를 선언시 할당된 메모리 공간에는 정수 표현 방식으로 기준으로 저장 및 참조. 따라서 정수 자료형으로 선언될 변수에는 소수점 이하의 값을 포함하는 실수를 저장 할 수 없다.
네 개의 정수 자료형이 갖는 차이점은 정수의 표현에 사용되는 메모리 공간 차이.

2) short vs int

public class Main2 {
    public static void main(String[] args) {
        short num1 = 11;
        short num2 = 22;
        short result = (short) (num2 + num1);
        System.out.println("result = " + result);
    }
}

컴파일 오류가 발생
-> 자바는 정수형 연산을 int로 진행
자바 가상머신은 정수형 연산을 4바이트로 int형으로만 진행
따라서 이때는 int로 선언

3) 실수 자료형(float, double)
정밀도를 포기하고, 표현의 범위를 넓힌 자료형

4) char
문자 A는 숫자 65로 표기하기로 약속 = 유니코드

public class Main3 {
    public static void main(String[] args) {
        char ch1 = '혈';
        char ch2 = '화';
        char ch3 = 54736; // 문자 혈에 대한 유니코드
        char ch4 = 54869; // 문자 화에 대한 유니코드
        char ch5 = 0xD5D0;
        char ch6 = 0xD655;

        System.out.println(ch1 + " " + ch2);
        System.out.println(ch3 + " " + ch4);
        System.out.println(ch5 + " " + ch6);
    }
}

자바는 문자를 내보낼때, 작은 띄음표로 표기

public class Main4 {
    public static void main(String[] args) {
        char ch1 = 0x3041;
        char ch2 = 0x3051;
        char ch3 = 0x3061;
        char ch4 = 0x3071;
        System.out.println(ch1 + " " + ch2 + " " + ch3 + " " + ch4);

        ch1 = 0x3043;
        ch2 = 0x3053;
        ch3 = 0x3063;
        ch4 = 0x3073;
        System.out.println(ch1 + " " + ch2 + " " + ch3 + " " + ch4);
    }
}

5) 논리자료형 boolean
참, 거짓을 표현하는 목적으로 하는 논리자료형

public class Main5 {
    public static void main(String[] args) {
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1);
        System.out.println(b2);

        int num1 = 20;
        int num2 = 30;
        System.out.println(num1 < num2);
        System.out.println(num1 > num2);
    }
}
profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글