Language/Java

[Java] 변수와 데이터 타입이란?

苦盡甘來 2024. 3. 26. 21:05

 


변수(variable)란?

💡말 그대로 변하는 수 즉, 고정되지 않은 수를 변수라고 의미한다.
프로그래밍 언어에선 변수란 값을 저장할 수 있는 메모리상의 공간을 의미한다.

 


변수의 선언과 초기화

  • 변수타입이란?
    변수에 저장 될 값이 어떤 타입(type)인지 지정하는 것이다.
    지정된 타입에 맞게 값을 설정하면 된다.
    정수형, 실수형, 문자형 등 다양한 타입을 지원한다.

  • 변수이름이란?
    다른 변수와 서로 구분짓기 위해 사용하는 이름이며,
    서로 구별되어야 하기에 동일한 변수명이 존재해선 안된다.

변수의 초기화
변수를 선언 시 반드시 초기화를 해야한다.
초기화란 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.

메모리는 모두 공유하는 자원이므로, 이미 이전에 저장된 데이터가 남아있을 수 있기 때문이다.

값을 저장할 때, 대입 연산자 '='를 사용한다.
Java에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다.

예를들어 int num = 1 이면, num 이라는 변수에 1이라는 값을 초기화 한다는 의미이다.

public class Example {

    public static void main(String[] args) {
        int weight = 88;
        int age = 27;

        System.out.println("age = " + age); // 27
        System.out.println("weight = " + weight); // 88

        age += 1; // 변수 age에 값을 1 증가시킨다.
        weight += 3; // 변수 weight에 값을 3 증가시킨다.

        System.out.println("age + 1 = " + age); // 28
        System.out.println("weight = " + weight); // 91

    }
}

 


변수의 명명규칙


변수의 이름을 정할 때 생각보다 많은 생각을 하게 된다.
어떤 용도인지에 따라 달라지기에,
되도록 처음 보는 사람도 이해 할 수 있는 규칙을 정해주는게 좋다.
규칙은 아래와 같다.

➡️ 영문자, 숫자, 밑줄(_), 달러 기호($)로 구성된다.
       💡 $price는 허용되지만, p$rice는 허용되지 않는다.

➡️ 영문자로 시작해야하며, 숫자로 시작할 수 없다.
       💡 num1은 허용되지만, 1num은 허용되지 않는다.

➡️ 대소문자가 구분되며, 길이에 제한이 없다.
       💡 MyNum 과 myNum은 서로 다른 변수이다.

➡️ 예약어(Reserved Words)를 사용해서는 안된다.
       💡 예약어란 프로그래밍 언어에서 이미 사용하는 단어에 대한 집합이다.

 


변수의 스코프와 라이프타임

💡 스코프(Scope)란?
변수에 접근하거나 접근할 수 있는 유효범위/영역이다.

💡 라이프타임(LifeTime)이란?
변수가 메모리에 살아있는 시간이다.

 

Type Scope Life-Time
인스턴스 변수 static 메서드를 제외한 클래스 전체 객체가 메모리에 남아있을 때 까지
클래스 변수 클래스 전체 프로그램이 끝날때 까지
지역 변수 변수가 선언된 함수 내부 함수가 종료 될 때 까지

 

public class Example {
    
    int num; // 인스턴스 변수
    static int count; // 클래스 변수

    public static void main(String[] args) {
        String str = ""; // 지역 변수
    }
}

 


기본형과 참조형

💡자료형은 크게 기본형, 참조형 2가지로 나뉘게 된다.
기본형은 실제 값을 저장하고
참조형은 값이 저장되어 있는 주소를 갖게된다.

 

➡️ 기본형은 8개의 타입을 미리 정의하여 제공한다.

 

분류 크기 타입 기본 값 설명
논리형 1 byte boolean false true, false 중 하나의 값을 가지며,
조건식 및 논리적 계산에 사용된다.
문자형 2 byte char '\u0000' 변수에 하나의 문자만 저장할 수 있다.
정수형 1 byte byte 0 이진 데이터를 다룰때 사용된다.
2 byte short 0 C언어와 호환을 위해 추가되었다.
4 byte int 0 정수 값을 저장 할 때 사용된다.
8 byte long 0L 매우 큰 정수 값을 다룰때 사용된다.
실수형 4 byte float 0.0F float 보다 정밀한 값을 저장하며,
기본적으로 사용되는 실수 타입이다.
8 byte double 0.0

 

 

➡️ 기본형을 제외한 타입들이 모두 참조형 타입이다. 

 

💡값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.

 

타입 기본값 메모리 크기
배열(Array) null 4 byte
클래스(Class)
열거(Enumeration)
인터페이스(Interface)

 


 

상수와 리터럴(constant & literal)

➡️ 상수는 변수와 공통된 특성을 가지지만, 단 한가지 다른 점이 있다.

값을 저장하면 다른 값으로 변경 할 수 없으며, 변수 타입 앞에 final을 붙여줘야 한다.

💡final int MAX_CONNECT = 15;

 

 

➡️ 리터럴은 소스 코드의 고정된 값을 대표하는 용어이다.

💡final int MAX_CONNECT = 15;

 


OUTRO

오늘은 Java 변수에 대해 알아보았는데,

반드시 숙지 해야 할 개념이라고 생각합니다.

블로그 포스팅을 하면서 개념을 다시 바로 잡게되는 소중한 시간이 되는것같습니다.

 

그러면 다음 포스팅에서 뵙겠습니다.