728x90

 

☕ 데이터 타입 분류

- 데이터 타입은 크게 기본타입, 참조타입으로 분류 된다.

- 기본 타입: 정수, 실수, 문자, 논리 리터럴

- 참조 타입: 객체의 번지를 참조하는 타입 -> 배열, 열거, 클래스, 인터스페이스

                    배열, 열거, 클래스, 인터스페이스를 이용해서 선언된 변수는 메모리의 번지를 값으로 갖는다. 번지를 통해서 참조한다는 뜻에서 참조 타입이라고 부른다. 

 

 

// 기본 타입 변수
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];

 

 

 

728x90