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 |
Tags
- 웹게임
- jQuery
- Cookie
- 도커
- tiles.xml
- PL/SQL
- RDS
- Spring
- websocket
- SQL
- 알고리즘
- docker
- EC2
- Ajax
- autowired
- phaser
- 웹소켓
- HTML
- express
- AWS
- model1
- 비트코인
- Servlet
- 배포
- CSS
- JSP
- 암호화
- node.js
- JavaScript
- 블록체인
Archives
- Today
- Total
記錄
JAVA) String과 주소값 본문
String 에서 기본 변수에 추가로 String을 붙이는 경우에 주소값이 계속 바뀐다.
예를 들어,
String str = "가"; // 주소값이 0xAA 라고 한다면
str += "나"; // 여기서 주소값은 0xAA에 "나"가 붙는 것이 아니고
// 아예 새로운 주소 0xBB에 "가나"를 할당한다
str += "다"; // 여기서도 마찬가지로 0xBB에서 "다"를 붙이지 않고
// 새로운 주소 0xCC에 "가나다"를 할당한다
str = "가"; // 여기서 다시 "가"를 할당할 경우 새로운 주소를 만드는 것이 아니고
// 기존에 힙에 올렸던 0xAA가("가"가 할당 되어있는) str에 담기게 된다
하지만 new를 이용해서 String 객체를 생성하게 되면 기존의 주소를 사용하지 않는다
여기서 '=='비교와 'String.equals("~")'의 차이도 숙지하도록 한다
public class Ex05_String_Class {
public static void main(String[] args) {
String str1 = "AAA";
String str2 = "AAA";
System.out.println("1) " + (str1 == str2)); // 주소값 비교
System.out.println("2) " + str1.equals(str2)); // 주소 타고 들어가서 내용 비교
// String 비교 (주소안에 있는 값을 비교)
System.out.println();
System.out.println();
String str3 = new String("BBB"); // new를 통해 다른 메모리에
String str4 = new String("BBB");
System.out.println("1) " + (str3 == str4)); // 주소값 비교
System.out.println("2) " + str3.equals(str4)); // 주소 타고 들어가서 내용 비교
}
}
cf. Q) 이 클래스를 실행시켰을 때 Heap 영역에 String class 는 총 몇 개 인가?
정답) 3개
<결과값>
1) true
2) true
1) false
2) true
'Computer language > JAVA' 카테고리의 다른 글
JAVA) 메모리 구조 -2 (수정중) (0) | 2018.02.08 |
---|---|
JAVA) 메모리 구조 -1 (0) | 2018.02.08 |
JAVA) 예외처리(throw , throws) (0) | 2018.02.08 |
JAVA) 다운캐스팅과 메모리 (0) | 2018.02.07 |
JAVA) 다형성 메모리 구조와 다형성 이점 (0) | 2018.02.06 |
Comments