☕ 데이터 타입 분류
- 데이터 타입은 크게 기본타입, 참조타입으로 분류 된다.
- 기본 타입: 정수, 실수, 문자, 논리 리터럴
- 참조 타입: 객체의 번지를 참조하는 타입 -> 배열, 열거, 클래스, 인터스페이스
배열, 열거, 클래스, 인터스페이스를 이용해서 선언된 변수는 메모리의 번지를 값으로 갖는다. 번지를 통해서 참조한다는 뜻에서 참조 타입이라고 부른다.
// 기본 타입 변수
int age = 24;
double price = 100.5;
// 참조 타입 변수
String name = "김자바";
String hobby = "독서";
변수는 스택 영역에서 생성되고, 객체는 힙 영역에서 생성된다.
String 클래스 변수인 name과 hobby는 힙 영역의 String 객체 주소 값을 가진다. 주소를 통해 객체를 참조한다는 뜻에서 String 클래스 변수를 참조 타입 변수라고 한다.
☕ 메모리 사용 영역
🎃 힙 영역
힙 영역: 객체와 배열이 생성되는 영역이다. 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기 취급하고, JVM은 쓰레기 수집기를 실행시켜 쓰레기 객체를 힙 영역에서 자동 제거한다.
🎃 JVM 스택(Stack) 영역
- 스택 영역은 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당된다. main 스레드만 존재하므로 JVM 스택도 하나이다.
☕ 참조 변수의 ==, != 연산
- 기본 타입 변수의 ==, =! 연산은 변수의 값이 같은지 아닌지를 조사하지만,
참조 타입 변수의 ==, =!는 동일한 객체를 참조하는지 사용된다.
- 동일한 주소 값을 갖고 있다는 것은 동일한 객체를 참조한다는 의미이다. 따라서 동일한 객체를 참조하고 있을 경우, == 연산의 결과는 true이고 != 연산의 결과는 false이다.
var1 == var2 // 결과: false
var1 != var2 // 결과: true
var2 == var3 // 결과: true
var2 != var3 // 결과: false
☕ 배열 타입
🎃 배열이란
- 변수: 한개의 데이터만 저장할 수 있다.
- 배열: 같은 타입의 데이터를 연속 된 공간에 나열시키고, 각 데이터 인덱스(index)를 부여해놓은 자료구조
같은 타입의 데이터만 저장 할 수 있다.
선언과 동시에 저장할 수 있는 데이터 타입이 결정된다.
한번 생성 된 배열은 길이를 늘리거나 줄일 수 없다.
🎃 배열 선언
타입[] 변수;
타입 변수 [];
int[] intArray
int intArray[]
double[] doubleArray;
double doubleArray[];
String[] strArray;
String strArray[]
🎃 new 연산자로 배열 생성
- 값의 목록을 가지고 있지 않지만, 향후 값들을 저장할 때 배열을 미리 만들고 싶다면 new 연산자로 다음과 같이 배열 객체를 생성할 수 있다.
타입[] 변수 = new 타입[길이];
길이는 배열이 저장할 수 있는 값의 수를 말한다.
new 연산자로 배열을 생성할 경우에는 이미 배열 변수가 선언된 후에도 가능하다.
타입[] 변수 = null;
변수 = new 타입[길이];
int[] intArray = new int[5];
int[] scores = new int[30];
☕ 배열 길이 -> length()
배열변수.length;
int intArray = {10, 20, 30};
int num = intArray.length;
☕ 다차원 배열
행과 열로서 구성된 배열을 2차원 배열이라고 한다. 2차원 배열은 가로 인덱스와 세로 인덱스를 사용한다
int[][] scores = new int[2][3];
'개발&etc > JAVA' 카테고리의 다른 글
[Java] 이것이 자바다 - #상속 (0) | 2023.04.24 |
---|---|
[Java] 이것이 자바다 - #클래스 (0) | 2023.04.21 |
[Java] 이것이 자바다 - #연산자 (0) | 2023.04.12 |
[Java] 이것이 자바다 - #변수 (0) | 2023.04.10 |
[Java] 이것이 자바다 - #자바 시작하기 (0) | 2023.04.10 |