Java 변수 feat. JS

습토리·2025년 2월 12일
0

Java

목록 보기
7/32

변수란?

변수는 단 하나의 값을 저장할 수 있는 메모리 공간을 의미합니다. 변수가 저장하는 값은 고정되지 않으며, 새로운 값이 기록될 때 자동으로 덮어씌워질 수 있습니다.

메모리와 변수

  • 메모리 공간은 1Byte 단위로 구성됩니다.
  • 메모리에는 각 공간을 구분하는 메모리 주소가 존재합니다.
  • 메모리 주소를 직접 사용하면 불편하기 때문에, 특정 메모리 영역에 이름(변수명) 을 붙여서 값을 저장하고 읽을 수 있게 한 것이 변수입니다.

변수의 선언

변수를 선언하는 이유는 메모리에 값을 저장할 공간을 확보하기 위해서입니다.

선언 방법

변수타입 변수이름;

예제:

int age;
int num;
// 또는 여러 개의 변수를 동시에 선언
int age, num;

변수의 종류와 크기

Java에서는 변수 타입에 따라 메모리 공간의 크기가 결정됩니다.

자료형크기값의 범위
boolean1 bytetrue 또는 false
char2 bytes0 ~ 65,535 (유니코드 문자 1개)
byte1 byte-128 ~ 127
short2 bytes-32,768 ~ 32,767
int4 bytes-2,147,483,648 ~ 2,147,483,647
long8 bytes-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float4 bytes소수점 숫자 (정밀도 낮음)
double8 bytes소수점 숫자 (정밀도 높음)

참고로 intinteger(정수)의 앞글자이다.
doublefloat의 2배여서 그렇게 부릅니다.

예제 코드:

class Variable1_1 {
    boolean flag;
    char grade;
    byte val;
    short sval;
    int num;
    long price;
    float tax;
    double score;
}

변수 이름 규칙

  1. 대소문자를 구분하며 길이에 제한이 없음
  2. 예약어(ex: true, int) 사용 불가
  3. 숫자로 시작할 수 없음 (int 1num; → 오류 발생)
  4. 특수문자 _$만 사용 가능

변수명 표기법 (Naming Convention)

표기법예제특징
Camel casevarTest일반적인 변수 및 메서드 표기법
Snake casevar_testJava에서는 잘 사용되지 않음
Pascal caseVarTestJava에서는 클래스명에 주로 사용
Kebab casevar-testJava에서 - 사용 불가

변수의 초기화

변수를 사용하기 전에 값을 저장하는 것을 초기화라고 합니다.

초기화 방법

변수타입 변수이름 =;

예제:

int age;
age = 23;
// 또는
int age = 23;
// 여러 개의 변수를 한 줄에 초기화
int age = 23, num = 32768;

초기화 예제 코드

class Variable1_2 {
    public static void main(String[] args) {
        boolean flag = false;
        char grade = 'A';
        byte val = 127;
        short sval = 128;
        int num = 32768;
        long price = 2_147_483_648L;
        float tax = 3.14f;
        double score = 3.14159265358979;

        System.out.println("boolean = " + flag);
        System.out.println("char = " + grade);
        System.out.println("byte = " + val);
        System.out.println("short = " + sval);
        System.out.println("int = " + num);
        System.out.println("long = " + price);
        System.out.println("float = " + tax);
        System.out.println("double = " + score);
    }
}

변수의 값 읽기

변수의 값을 읽어서 다른 변수에 할당하거나 출력할 수 있습니다.

class Variable1_3 {
    public static void main(String[] args) {
        int year, age = 23;

        year = age + 2000;
        System.out.println("year = " + year); // 2023

        age = age + 1;
        System.out.println("age = " + age); // 24
        System.out.println("year = " + year); // 2023
    }
}

변수의 종류

Java에는 클래스 변수, 인스턴스 변수, 지역 변수가 있습니다.

변수의 종류 정리

변수 종류선언 위치특징
클래스 변수클래스 내부, static 사용모든 객체가 공유하는 변수
인스턴스 변수클래스 내부, static 없음객체가 생성될 때마다 따로 존재
지역 변수메서드 내부해당 메서드에서만 사용 가능

변수 종류 예제 코드

class Variable1_4 {
    static int classVal = 100; // 클래스 변수
    int instanceVal = 200; // 인스턴스 변수

    public static void main(String[] args) {
        int num; // 지역 변수
        // System.out.println("int = " + num); // Error 발생
        num = 300;
        System.out.println("int = " + num); // 300

        // 인스턴스 변수 사용을 위해 객체 생성
        Variable1_4 instance = new Variable1_4();
        System.out.println("instanceVal = " + instance.instanceVal); // 200

        // 클래스 변수
        System.out.println("classVal = " + classVal);
        System.out.println("Main.classVal = " + Variable1_4.classVal);
    }
}

자바 변수 마무리

Java에서 변수를 선언할 때 타입을 명확하게 지정해야 한다는 점이 중요합니다.

자바 변수 vs 자바스크립트 변수

Java에서도 변수를 서랍(drawer) 같은 개념으로 비유할 수 있지만, Java는 JavaScript보다 정적 타입(static typing) 언어라서 개념이 좀 다르게 적용돼.

📌 JavaScript에서 변수 = 서랍

JavaScript는 동적 타입(dynamic typing) 언어라서, 변수(서랍)에 어떤 값이든 넣을 수 있어. 예를 들어,

let box = 10;  // 숫자 10을 넣음
box = "hello"; // 문자열 "hello"를 넣어도 OK

이렇게 같은 변수에 다양한 타입의 데이터를 저장할 수 있어서 "서랍에 아무 물건이나 넣을 수 있다" 라고 비유하는 거야.


📌 Java에서 변수 = 이름표가 붙은 상자

Java는 변수를 선언할 때 미리 타입을 정해야 해. 예를 들어,

int box = 10;  // 정수 10을 넣음
box = "hello"; // ❌ 오류 발생! (문자열을 넣을 수 없음)

Java에서는 한 번 정해진 타입의 데이터만 저장할 수 있어서 "특정 물건만 넣을 수 있는 상자" 로 비유하는 게 더 적절해.
예를 들어, 정수형(int) 변수는 정수만 받을 수 있고, 문자열(String) 변수는 문자열만 받을 수 있어.


📌 추가적으로 Java에서 변수의 동작

Java에는 변수에 대한 몇 가지 개념이 더 있어:
1. 기본형 변수(Primitive Type): int, double, char 등은 값 자체를 저장해.
→ 즉, int a = 10; 하면 a 라는 상자 안에 숫자 10이 들어감.
2. 참조형 변수(Reference Type): String, Array, Object 등은 실제 값이 아니라 주소(참조)를 저장해.
→ 즉, String s = "hello"; 하면 s 상자에는 "hello" 자체가 아니라 "hello"가 저장된 메모리 주소가 들어가 있어.

이런 이유로 Java에서는 단순한 서랍보다는 "라벨이 붙은 상자(특정 물건만 들어가는 상자)" 또는 "택배 상자(어디 있는지 주소만 갖고 있는 경우)" 같은 비유가 더 자주 사용돼.

💡 한 줄 요약:

  • JavaScript 변수 = 서랍 (아무거나 넣을 수 있음)
  • Java 변수 = 라벨이 붙은 상자 (특정 타입만 가능) & 택배 상자 (참조형 변수)
profile
재미난 삶을 살다

1개의 댓글

comment-user-thumbnail
2025년 3월 15일

답글 달기