티스토리 뷰

한화시스템/백엔드

[BE] JAVA_변수

jjam-mo 2024. 7. 13. 12:45

1. 변수 개요

리터럴를 담는 곳

1-1. 변수(variable)란?

💡데이터를 저장하기 위해 할당 받은 메모리 공간
변수의 종류는 여러 가지가 있지만, 여기서 다루는 변수는 지역 변수(local variable)이라고 한다.

1-2. 변수 사용 방법

💡변수를 선언하고, 변수에 값을 대입하여 사용
선언한 변수에 최초 값을 대입하는 것을 초기화
이러한 선언과 초기화는 따로 작성할 수도 있고, 동시에 작성할 수 있다.
동시에 작성하는 것을 선언과 동시에 초기화 라고 한다.
// 변수의 선언 예시
int age;  // 생성되면 0으로 초기화가 저절로 된다. int age = 0 과 같다.
// int : 변수 크기 설정 / age : 변수 이름

// 선언한 변수에 값 대입 예시
age = 20;
// age(공간) = 20(값)
age = age;    // 값 부분 치환!

// 선언과 동시에 초기화 예시
int point = 100;

1-3. 변수 사용 목적

  1. 값에 의미를 부여하기 위한 목적 (의미 전달이 쉬워야 코드를 읽기 쉬워지고, 협업 및 유지보수에 유리기 때문이다.)
  2. 한 번 저장해둔 값을 재사용 하기 위한 목적(변수를 이용하여 코드를 작성하면, 값을 변경할 때도 보다 간편하게 변경할 수 있다.)
  3. 시간에 따라 변하는 값을 저장하고 사용할 수 있다. (변하는 값을 저장하기 위한 공간이다)
package com.ohgiraffers.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;                // 쉽게 포인트를 수정할 수 있다.(재사용을 통한 유지보수 측면 개선)
        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 + "포인트 지급하였습니다.");

        /* 목차. 3. 시간에 따라 변경되는 값을 저장하고 사용 할 목적 */
        System.out.println("======= 변수에 저장된 값 변경 테스트 =======");
        int sum = 0;

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

        sum = sum + 10;     // 현재 sum에는 20
        sum = sum + 10;     // 현재 sum에는 30
        sum = sum + 10;     // 현재 sum에는 40
        sum = sum + 10;     // 현재 sum에는 50
        System.out.println("sum에 10을 네 번 더 누적하면 sum의 값은: " + sum);

        /* 설명. 동일한 sum이라는 하나의 변수를 어느 시점에 보느냐에 따라 들어있는 값은 달라진다. */

    }
}

2. 변수의 사용

2-1. 변수의 선언과 자료형

💡변수를 선언한다 : 메모리에 공간을 생성하고 그 공간을 참조(reference)할 수 있도록 이름을 부여
"자료형 변수명;"
위와 같은 형태로 앞에 어떠한 데이터를 저장하는 공간 인지를 알려주는 키워드를 작성
이렇게 예약된 키워드를 자료형
💡자료형
다양한 값의 형태별로 오느 정도의 크기를 하나의 값으로 취급할 것인지 미리 Compiler와 약속한 키워드
ex) int 자료형 : 정수를 4byte만큼을 읽어서 하나의 값으로 취급하겠다는 약속
package com.ohgiraffers.section02.variable;

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

        /* 수업목표. 변수를 선언하고 값을 할당하여 사용할 수 있다.(feat. 자료형(type)) */

        // 1 ~ 4 : 기본 자료형(primitive type)
        /* 필기. 1. 정수를 취급하는 자료형 */
        byte bNum;              // 1byte
        short sNum;             // 2byte
        int iNum;               // 4byte, default
        long lNum;              // 8byte

        /* 필기. 2. 실수를 취급하는 자료형 */
        float fNum;             // 4byte
        double dNum;            // 8byte, default

        /* 필기. 3. 문자를 취급하는 자료형 */
        char ch;                // 2byte

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

        /* 필기. 5. 문자열을 취급하는 자료형(참조 자료형) */
        String str;             // 4byte
        // 위 8개 말고 그 이외는 참조 자료형이자 4byte

        /* 설명. 변수에 값 대입해 보기(자료형별로 초기화) */
        bNum = 1;
        sNum = 2;
        iNum = 4;
        lNum = 2200000000L;     // long형에 대입되는 값은 L을 붙이자(꼭 붙여야 될 경우가 있다.)

        fNum = 3.14f;           // double형으로 인식되는 실수를 float에 담을 때는 f를 붙이자.
        dNum = -3.14;

        ch = 'a';
        ch = 97;                // char는 양수만 가능

        isTrue = true;

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

        int sum = kor + math + eng;
//        soutv     //variable 값을 한번에 출력
        System.out.println("sum = " + sum);

//        System.out.println(sum / 3.0);
        double avg = sum / 3.0;                 // 나눗셈은 일반적으로 실수 결과가 나오며 나눌 떄
                                                // 항 중에 하나 이상은 실수형 값이어야 한다.
        System.out.println("avg = " + avg);

    }
}

2-2. 변수의 명명규칙

  1. 컴파일 에러를 발생시킬 수 있는 규칙
    • 동일한 범위 내에서 동일한 변수명을 가질 수 없다.
    • 변수의 이름에는 자바에서 사용중인 키워드(keyword)를 사용할 수 없다.
      ex) int, float, while, continue 등
    • 변수의 이름은 영문자 대소문자를 구분한다.
      ex) age와 Age는 다르다.
    • 변수의 이름은 숫자로 시작할 수 없다.
      ex) 123abc - 사용불가
    • 특수기호는 '_'와 '$'만 사용 가능하다.
      ex) abc_zxc, abc$123, _abc123 등
  2. 컴파일 에러를 발생시키지는 않지만 개발자들끼리의 암묵적인 규칙
    • 변수명의 길이 제한은 없다. (하지만 적당히 해야 한다.)
    • 변수명이 합성어로 이루어진 경우 첫 단어는 소문자, 두 번째 시작 단어는 대문자로 시작한다. (camel-case)
      ex) int memberAddress;
    • 단어와 단어 사이의 연결을 언더스코어( _ )로 하지 않는다. (타 언어 네이밍 규칙이다.)
    • 한글로 변수명을 짓는 것이 가능하지만, 권장하지 않는다. (한글을 취급하는 다양한 방식들이 존재하기 때문에 에러를 유발할 수 있다.)
    • 변수 안에 저장된 값이 어떤 의미를 가지는지 명확하게 표현하도록 한다.
    • 전형적인 변수 이름이 있다면 가급적 사용하도록 한다.
    • 명사형으로 작성할 수 있도록 한다.
    • boolean 형은 의문문으로 가급적 긍정 의문문 형태로 네이밍한다.

2-3. 변수에 값 대입 및, 초기화

💡변수에 값을 대입하기 위해서는 대입연산자(=) 사용
대입연산자는 연산 방향이 오른쪽에서 왼쪽 방향!!!
대입하는 값의 리터럴 형태와 선언된 자료형이 일치해야 한다.

'한화시스템 > 백엔드' 카테고리의 다른 글

[BE] JAVA_형변환  (0) 2024.07.13
[BE] JAVA_오버플로우  (0) 2024.07.13
[BE] JAVA_상수  (0) 2024.07.13
[BE] JAVA_리터럴  (0) 2024.07.12
[BE] JAVA_개요  (0) 2024.07.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함