[자바(JAVA)] 변수와 상수, 기본형 변수, 참조형 변수, 래퍼 클래스(wrapper class)
변수와 상수
변수: 값이 변하는 것
상수: 값이 변하지 않는 것 (= 한번 값이 정해지면 끝까지 변하지 않는 수)
🔸 변수 저장(할당)의 2가지 방법
1. 선언과 동시에 초기화하기

* int(정수): integer의 약자
저장공간 타입의 선언 및 값을 동시에 선언함(=초기화)
2. 선언 후 값 저장하기(=덮어쓰기)


상수: 변하지 않는 저장공간
ex) PI(3.14...)
final int number = 10;
상수로 선언시 앞에 final을 붙여주면 된다.
단, 상수는 변하지 않는 값이기 때문에 로 선언한 number의 값은 변경 불가(에러발생)
변수의 형태 (기본형, 참조형)
1. 기본형: 숫자, 문자, Boolean,...
2. 참조형: 주소값을 참조하는 형식으로 사용함
(한번에 저장하긴 어렵고 어딘가에 별도로 저장해놓고 그 주소값을 참조하는 식으로 저장하는게 참조형임)
🔹 기본형 변수
- 논리형 변수 : boolean
- True/False 값만 저장한다.
- 문자형 변수 : char
- ‘A’, ‘1’ 와 같은 문자 하나만 저장한다.
- 정수형 변수 : byte, short, int, long
- byte(1byte)
- short(2byte)
- int(4byte)
- long(8byte)
- 정수형은 리터럴 구분값(접미사)를 사용하는 경우가 있다.
🔹 참조형 변수(= 주소형 변수)
어느 공간에 있는 주소값을 바라보고 있는 변수를 말한다.

참조형 변수
- 주소값: Stack 영역에 저장
- value : Heap 영역에 저장
기본형 변수
- value: Stack영역에 저장
1. 문자열 변수
public class Main {
public static void main(String[] args) {
String helloWorld = "Hello World";
System.out.println(helloWorld);
}
}
2. 배열
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
System.out.println(a);
}
}
*출력시 결과값: [I@776ec8df
참조형 데이터는 주소값을 저장하기 때문에 System.out.print(a)로 출력시 주소값이 출력됨
🔻배열의 데이터값을 출력하길 원할 경우
Arrays와 toString을 사용하여 출력한다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] a = {1, 2, 3};
System.out.println(Arrays.toString(a));
}
}
* 출력값: [1, 2, 3]
Stack영역: 기본형 변수(원본값)
참조형 변수 (주소값)
Heap 영역: 참조형 변수 원본값 저장
*Heap영역= 동적으로 할당된 메모리
📙 래퍼 클래스 변수
래퍼 클래스(wrapper class)
-기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스
기본형 변수를 클래스로 감싸서 사용함
| 기본 타입 | 래퍼 클래스 |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
래퍼 클래스(wrapper class)
public class Main {
public static void main(String[] args) {
int number = 21;
Integer num = number; //boxing
System.out.println(num.intValue()); // unboxing
}
}
출력값: 21