본 포스팅은 '이젠아카데미컴퓨터학원 종로캠퍼스'에서 진행한 윤대명 선생님의 강의를 듣고 공부한 내용을 정리한 것입니다.
*참고 자료: 신용권, 『이것이 자바다』, 한빛미디어(주), 2015.
목차
1. String 타입의 문자열 비교
*자바에서 쓰는 메모리는 세 개가 있습니다.
*기본 데이터 타입 8개로 만든 변수들은 스택(stack)이라는 메모리에 올라갑니다. (변수의 이름, 값이 함께)
*String은 기본 데이터 타입이 아니고 Class 개념으로 씁니다.
String s = "Hello"
↘String 타입으로 s라는 변수를 선언해서 여기에 "Hello"를 넣어놓으면, 스택(stack)이라는 메모리에는 s라는 변수만 저장합니다. "Hello"는 힙(heap)이라는 메모리에 따로 들어갑니다.
스택(stack) | 힙(heap) |
s | "Hello" |
*'객체를 생성한다'라는 건 [Class]가 가지고 있는 애들을 사용할 수 있도록 힙(heap)이라는 메모리에 펼쳐 놓는 것입니다. 쉽게 얘기하면, 음식을 만들 때 냉장고에 재료를 때려 넣어놓은 상태로는 아무것도 할 수가 없습니다. 요리를 하려면, 조리대에 꺼내놓고 순차적으로 작업을 해야 합니다. 객체를 생성하는 것은, 음식을 하기 위해서 조리대에 올려놓는 재료들을 만드는 것이랑 똑같은 것입니다.
1-1. [예제] 문자열 비교
↘클래스 이름하고 똑같은 데에 괄호를 붙여 놓은 것은 생성자라고 부릅니다. 괄호 붙일 수 있는 것은 메소드하고 생성자 밖에 없습니다.
↘값이 비교가 되는 게 아니라, 눈에 안 보이는 메모리 주소를 비교하기 때문에 여기서는 [false]가 나옵니다. String은 [==] 연산자를 쓰면 안 됩니다.
↘값을 비교할 때는 [equals] 메소드를 씁니다. 웹사이트에서 로그인을 하려고 아이디 비밀번호를 넣으면, 내가 입력한 아이디와 회원가입할 때 저장시켜 놓은 아이디를 [equals] 메소드로 비교합니다. [==]로 비교하면 안 됩니다. 메모리 주소가 다르기 때문에.