[Java] 변수와 상수의 개념 (01.03)

늘보·2025년 1월 3일

Java

목록 보기
5/17
post-thumbnail

변수 (변하는 저장공간)


기본형 (Primitive type)

  • 기본형은 실제값을 저장한다.
  • 소문자로 시작한다. (int, char, double, .... )
  • 클래스가 없기 때문에 제공되는 메서드를 사용할 수 없다.

  • 논리형 변수 Boolean : True False

  • 문자형 변수 char : 'A', 'B' ... 등

    💡문자형의 경우 반드시 ''(작은 따옴표)를 사용해야하고, 문자 뒤에 \n(널문자)가 존재하지 않는다.

  • 정수형 변수

    💡 byte ➡︎ short ➡︎ int ➡︎ long 순으로 크기가 결정되며 크기는 1byte, 2byte, 4byte, 8byte이다.

    long 데이터 타입의 경우 int와의 구분을 위해 데이터의 마지막에 L을 붙여준다.

  • 실수형 변수

    💡 float ➡︎ double 순으로 크기가 결정되며 크기는 4byte, 8byte이다.

    실수형의 경우부동 소수점 방식이기 때문에 표현 범위가 매우 넓다. 따라서 정수형 변수가 실수형을 담지 못할 수 있다. 즉, 자동 형변환이 이루어지지 않는다.


참조형 (Reference type)

  • 참조형의 경우 원본 값의 주소 값을 저장한다.
  • 대문자로 시작한다. (String, Integer, ....)
  • 우리가 만드는 클래스도 참조형이다.

  • 문자열 : String "Hello", "Apple ... 등

    💡문자열의 경우 반드시 ""(작은 따옴표)를 사용해야하고, 문자 뒤에 \n(널문자)가 존재한다.

  • 그 외 : Object, Array, List
    단일 저장공간에 담을 수 없는 값 (객체, 배열, 리스트)

    단일 저장공간: 기본형처럼 단 하나의 값만 저장할 수 있는 것


stack 영역 : 정적으로 할당된 메모리 영역

  • 기본형 값참조형의 주소 값을 저장하는 영역이다.
  • 크기가 정해져 있다.

heap 영역 : 동적으로 할당된 메모리 영역

  • 참조형 변수를 위한 별도의 영역이다.
  • 크기가 정해져 있지 않다.

래퍼 클래스 변수 (Wrapper class)

기본형 변수를 클래스로 감싸는 것을 의미한다.

💡래퍼 클래스로 기본형을 감싸면 래퍼 클래스가 가지고 있는 유용한 기능(메서드)를 사용할 수 있다.

  • 박싱
    기본 타입래퍼 클래스로 감싸는 것

int number = 10;(기본형)을 Integer 타입으로 감싸면 num이 다양한 메소드를 사용할 수 있다.

  • 언박싱
    래퍼 클래스 타입기본 타입으로 가져오는 것 변수. intValue();


아스키코드

문자를 숫자로, 숫자를 문자로 변경하고 싶을 때 사용

💡 형변환을 통해 변경가능하다.


형변환

  • 명시적 형변환
    값의 손실이 있다.
int a = 10;
double b = (double) a

(double) a 를 통해 명시적으로 형변환을 했다.

  • 암시적 형변환
    • 값의 손실이 없다.
    • Java 프로그램 안에서 자동으로 형을 바꿔주는 것이다.
int a = 10;
long b = (double) a

int c = 100;
double d = c;

변수 크기 순으로 형이 자동으로 변환된다.


💡작은 크기와 큰 크기가 계산되면 자동으로 큰 타입으로 변환된다.

int a = 10;
double b = 3.3;

double이 더 큰 크기이기 때문에 결과값이 13.3이 나온다.


지역 변수와 전역 변수

  • 지역 변수 <=> 전역 변수 (지역 변수와 반대되는 개념)

    • 메서드 내부에서 정의될 때 생성되어 메서드가 종료되면 소멸하는 변수를 말한다.
    • 메서드가 실행될 때마다 독립적인 값을 저장하고 관리한다.
    • 항상 직접 초기화 해주어야한다.
  • 전역 변수
    인스턴스를 생성할 때 자동으로 초기화된다.



상수 (변하지 않는 저장공간)

final & static

💡 final을 이용하면 해당 number가 상수 값으로 명시된다.
❗final은 변경될 여지가 아예 없을 때, 절대 수정하지 않을 때 사용한다. 또한 final은 반드시 초기값을 지정해 주어야한다.

💡 static final을 이용하면 해당 number는 공통적으로 사용되는, 수정 불가능한 상수 값으로 명시된다.
ex > static final double N_PI = 3.14;

📌 [final 참고] & [static 참고]

profile
누워만 있지 말고 제발 뭐라도 하자.

2개의 댓글

comment-user-thumbnail
2025년 1월 4일

정리 잘 하셨네요 잘봤습니다 :)

1개의 답글