package com.haenin.section02.variable;

public class Application1 {
    public static void main(String[] args) {

        /* 목표, 변수의 사용 목적에 대해 이해할 수 있다. */

        /* 목차. 1. 값에 의미를 부여하기 위한 목적(가독성) */
        System.out.println("값에 의미 부여 테스트");
        System.out.println("보너스를 포함한 금액: " + (1000000 + 200000) + "원");

        int salary = 1000000;       // 왼쪽 변수 오른쪽 리터럴
        int bonus = 200000;
        System.out.println("보너스를 포함한 금액: " + (salary + bonus) + "원");

        /* 목차. 2. 한 번 저장해둔 값을 재사용(유지보수)하기 위해서 */
        System.out.println("고객에게 포인트 부여");

        System.out.println("1번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("2번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("3번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("4번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("5번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("6번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("7번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("8번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("9번 고객에게 포인트를 100포인트 지급하였습니다.");
        System.out.println("10번 고객에게 포인트를 100포인트 지급하였습니다.");

        System.out.println();       // 한칸 엔터

//        int point = 100;
        int point = 200;
        System.out.println("변수를 활용하여 고객에게 포인트 부여");

        System.out.println("1번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("2번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("3번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("4번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("5번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("6번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("7번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("8번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("9번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");
        System.out.println("10번 고객에게 포인트를 " + point + "포인트 지급하였습니다.");

        System.out.println();

        /* 목차. 3. 변수를 통해 시간에 따라 변화하는 값을 같은 이름으로 저장할 목적 */
        System.out.println("변수에 저장된 값 변경 테스트");

        int sum = 0;

        sum = sum + 10;
        System.out.println("sum에 10을 더하면 sum의 값은 : " + sum);

        sum = sum + 10;
        sum = sum + 10;
        sum = sum + 10;
        sum = sum + 10;
        System.out.println("sum에 10을 4번 더 누적하면 sum의 값은 " + sum);

    }
}

package com.haenin.section02.variable;

public class Application2 {
    public static void main(String[] args) {
        
        /* 목표, 변수를 선언하고 값을 할당하여 사용할 수 있다.(자료형(type) */
        /* 목차. 1. 정수를 취급하는 자료형 */
        byte bNUm;      // 1bute
        short sNum;     // 2byte
        int iNum;       // 4byte
        long lNum;      // 8byte

        /* 목차. 2. 실수를 취급하는 자료형 */
        float fNum;     // 4byte
        double dNUm;    // 8byte

        /* 목차. 3. 문자를 취급하는 자료형 */
        char ch;        // 2byte ( 양수만 들어감 (유니코드) )

        /* 목차. 4. 논리값을 취급하는 자료형 */
        boolean isTrue; // 1byte

        /* 목차. 5. 추가로, 문자열을 취급하는 자료형(기본자료형x) */
        String str;     // 4byte
        
        /* 설명. 각 변수에 값 대입해 보기 */
        bNUm = 12;
        sNum = 2;
        iNum = 2140000000;
        lNum = 2150000000L; // 정수를 int로 인식하기 때문에 L을 붙여 long임을 인지

        fNum  = 3.14f;
//      fNum = 3.14;        // 왼쪽 float 오른쪽 double
                            // double형 값(실수 값을 기본 인지)을 float형 변수에 담으려니 컴파일 에러
        dNUm = - 3.14;

        ch ='a';
        ch = 97;

        System.out.println(ch);

        isTrue = true;

        /* 설명. 변수를 활용한 합계(sum), 평균(avg) 출력해 보기 */
        int kor = 90;
        int eng = 80;
        int mat = 75;

        int sum = kor + eng + mat;
        System.out.println("합계: " + sum);

        double avg = sum / 3.0;
        System.out.println("평균: " + avg);
    }
}