Published 2021. 10. 27. 23:21
반응형

 스터디를 진행하다 보니 기초지식이 너무 부족하다는 생각이 들었습니다.

그래서 조금씩 스스로 정리를 해보고자 합니다.

 

part1. 그래서 new 연산자는 무엇인가!?

 

- new 연산자 : 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 담당.

- new 연산자를 통해 메모리(Heap영역)에 데이터를 저장할 공간을 할당받고 그 공간의

참조값(reference value / 해시 코드)을 객체에게 반환하여 주고 이어서 생성자를 호출하게 된다.

 

음? 무슨 말이지? 조금 더 풀어보자.

 

new 연산자로 생성된 객체는 똑같은 값을 가지고 있는 객체가 있어도 서로 다른 메모리를 할당하기

때문에 서로 다른 객체로 분류된다.

 

public class Main {
    public static void main(String[] args) {
        String str = new String("string"); // string 문자열 값을 가지고 있는 String 객체 생성
    }
}

new 연산자를 사용해서 string이라는 문자열 값을 담고 있는 String 객체를 생성했다.

 

Stack         ->   Heap

String str   ->   "string"  

 

변수는 Stack 영역에 할당. new String으로 생성된 문자열 값이 Heap 영역의 메모리 공간을 할당받아

str이라는 변수가 그 메모리 주소를 가리키고 있다. -> 다른 말로 참조라고 함.

 

new 연산자는 객체를 생성할 때 사용하고 Heap이라는 메모리 영역에 각각의 새로운 메모리 공간을

할당해 주는 역할을 한다.

new 연산자로 생성한 객체들의 메모리 주소가 다르게 나오는 것도 이 때문이다.

 

 

반응형
복사했습니다!