변수(Variable)

Heejeong Choi·2021년 9월 2일
0

Java의 정석 기초편

목록 보기
2/19
post-custom-banner
벌써 프로그래밍 공부를 시작한지 어느덧 6개월차 그럼에도 불구하고 여전히 나는 불안하다 부족한 것 같아😢 꾸준히 노력해야 하는걸 알기에 다시 기초부터 빠르게 복습해보고자 포스팅 합니다. 스스로 공부하고 생각했던 것이기 때문에 혹시라도 틀린부분이 있다면 댓글로 둥글게 얘기해주세요👀💕

변수? 변하는 수!

하나의 값을 저장할 수 있는 기억 공간 👉 프로그램에서 항상 변하는 값을 나타낼 필요가 있다. 이 때, 표현하려는 자료에 맞는 데이터 타입(자료형)을 이용해 변수를 선언해야 한다.

✔ 변수명은 영문자, 숫자, 언더바(_), 그리고 달러($)로만 구성 할 수 있습니다.
✔ 자바에서는 스네이크형 보다는 카멜식을 따라야 합니다.
✔ 변수 명은 숫자로 시작 할 수 없습니다.
✔ 변수 사이에 공백이 들어갈 수 없습니다.
✔ 변수의 이름으로 자바에서 미리 정의된 예약어는 사용할 수 없습니다.
즉, 한눈에 알아보기 쉽고 읽었을 때 어떤 용도로 사용했는지 구분하기 쉽게 정해주어야 합니다🤗

변수와 메모리

변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당
변수는 할당된 메모리를 가리키는 이름
ex) int level = 10; // 4byte 정수형 메모리가 level이라는 이름으로 할당됨.

1. 기본 자료형(primitive data type)

정수형문자형실수형논리형
1bytebyteboolean
2byteshortchar
4byteintfloat
8bytelongdouble
  • 기본 타입은 크기가 작고 고정적이기 때문에 메모리의 Stack에 저장이 된다.
  • 변수가 사용된 메서드가 종료되거나 사용된 객체가 사라질 때 자동으로 파괴된다.

2. 참조 자료형(Reference data type)

  • new 를 사용해 객체를 생성하여 데이터가 생성되는 주소를 참조하는 타입
  • class, array, interface, enumeration
  • 참조 타입의 데이터의 크기가 가변적 및 동적이기 때문에 Heap에 저장이 된다.
  • String과 배열은 참조 타입과 다르게 new 없이 생성이 가능하지만 기본 타입이 아닌 참조타입임을 꼭 기억해야한다.
  • 참조변수가 없을 경우, GC에 의해 제거된다.

아래에는 기본형과 참조형의 변환을 도와주는 클래스와 오토/언박싱에 대해 알아본다.

3. 래퍼 클래스(Wrapper class)

  • 기본 자료형을 참조 자료형으로 바꿔주는 클래스
  • Why? 참조 자료형으로 변환시 데이터를 가공하는 메서드들을 사용할 수 있기 때문
  • But, JDK 1.4까지만 랩퍼 클래스 제공했다.

4. 오토박싱 & 언박싱(Autoboxing & Unboxing)

int i = 5;
Integer iObject = new Integer(7);

int sum = i + iObject;
// 이 경우 에러 발생(JDK 1.5이전까지)

JDK 1.5 부터 컴파일러가 자동으로 변환하는 코드를 넣어줬다.
컴파일러가 Integer 객체를 int 타입 값으로 변환해주는 intValue()를 추가 해주는 것.

int i = 5;
Integer iObject = new Integer(7);

int sum = i + iObject.intValue();

이렇게, 기본형 값을 저장해야할 때나 형변환이 필요할 때도 컴파일러가 코드를 추가해준다.

  • 오토박싱(Autoboxing): 기본형 값을 래퍼 클래스의 객체로 자동 변환 해주는 것
  • 언박싱(Unboxing): 래퍼 클래스를 기본형 값으로 바꿔주는 것
profile
Welcome to my velog! I love learning something new to build up my ability in development field. I don't think it is shame not to know, but it is shame to pretend to know about something you don't know.
post-custom-banner

0개의 댓글