Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 머신러닝
- bastion host
- Java
- 리버싱
- AI
- 암호학
- 자바
- docker
- cmd
- dreamhack
- vector
- vlan
- 스위치
- 네트워크
- 머신러닝 프로세스
- 인공지능
- Mac
- AWS
- RIP
- abex'crackme
- Reversing
- Screening Router
- Firewall
- Repository
- 크롤러
- Python
- CISCO
- 라우터
- 온프레미스
- STP
Archives
- Today
- Total
Haekt‘s log
[JAVA] new 연산자란 ? 본문
오랜만에 코딩 문제를 풀다가 부딧힌 문제이다.
String 과 new String 의 차이점은 뭐지..?
여기서 new 연산자는 뭘까 ?
- new 연산자
new 연산자는 java 의 heap 영역에 저장할 공간을 마련한 후, 메모리주소를 반환하고 생성자를 실행시킨다.
새로운 객체를 생성한다는 뜻이다.
쉽게는 학교 사물함을 놔두고 내 개인 사물함을 마련한다고 보면 된다.
아래 그림으로 String 과 new String 를 비교하여 더 쉽게 살펴보자.
먼저 일반적으로 new 없이 String 으로 변수를 선언한 경우이다.
String A, B 모두 같은 값으로 초기화 해준 경우, 이 변수들은
heap 영역의 String pool에 test 를 한번만 저장하고 그 값의 메모리주소를 가리키는 방식으로 작동이 된다.
* java는 문자열을 String pool 로 관리한다.
public class test{
public static void main(String[] args) {
String A="test";
String B="test";
System.out.println("A : "+System.identityHashCode(A));
System.out.println("B : "+System.identityHashCode(B));
}
}
그래서 같은 값의 두 변수의 메모리 값이 같게 나온다.
그럼 이번엔 new String 으로 변수를 정의한 경우이다.
new 를 사용하면 heap 영역에 test 값을 가지는 새로운 Stirng 객체를 만든다.
그리고 변수는 그 객체를 가리키는 방식이다.
public class test{
public static void main(String[] args) {
String A=new String("test");
String B=new String("test");
System.out.println("A : "+System.identityHashCode(A));
System.out.println("B : "+System.identityHashCode(B));
}
}
그래서 당연히 둘의 메모리 주솟값도 다르게 나온다.
따라서 String 과 new String 의 차이는 메모리에 값이 저장되는 메커니즘 차이다 ~
틀린 부분이 있다면 알려주시면 감사하겠습니다 ~
'언어 > JAVA' 카테고리의 다른 글
[JAVA] 예외처리( Exception ) 하는법 (1) | 2022.10.02 |
---|---|
[JAVA] 문자열 & 문자열버퍼 관련 함수 정리 (1) | 2022.10.02 |
[Eclipse] Java를 위한 Eslipse 설치 (0) | 2022.09.28 |
JAVA 설치 (0) | 2022.09.28 |
[Eclipse] package 코딩 없는 default package 만들기 (0) | 2022.09.27 |
Comments