소개
찐
게시글
질문&답변
2024.09.22
토이프로젝트 실행시 이메일 설정 부분에서 앱비밀번호 항목이 보이지 않습니다.
2단계 인증을 사용하도록 설정하면, 최상단 '앱 비밀번호'로 검색했을 때 앱비밀번호 만들수있는 항목 검색이 가능해집니다!
- 1
- 4
- 415
질문&답변
2021.06.10
안녕하세요. enum 질문있습니다.
안녕하세요. 질문을 3 부분으로 나누어 답변을 적어보았습니다. (답변 작성 에디터에서는 개행이 여러번 안되서 가독성이 좀 떨어지네요.) 1) Member member = new Member(1L, “이유진”, Grade.VIP); System.out.println(member.getGrade()); 로 출력한다면 1이라는 상수가 나와야 할 것 같다고 추정했습니다. 하지만 결과는 VIP가 나왔습니다. 답변 : Member member = new Member(1L, “이유진”, Grade.VIP); 여기서 member.getGrade() 메소드는 Grade.VIP의 주소값을 반환합니다. member의 grade 필드는 Grade 클래스의 VIP라는 필드의 주소값을 알고 있는 것 입니다. 그런데 Grade의 필드 VIP는 그 자체로서 Grade 객체입니다. Grade가 Enum이라는 열거형 객체이기 때문입니다. 주소를 따라가서 객체 이름을 출력하므로 VIP 가 출력됩니다. Enum 열거형 클래스 Grade 가 선언된 순간, Grade 클래스를 상수처럼 사용할 수 있습니다. Grade.VIP의 주소값은 컴파일타임에 정해지는 상수 객체이기 때문에 프로그램이 동작하는 동안 변할 수 없고 똑같습니다. 다시 말하면, Grade의 필드 VIP는 public static final 필드이면서 동시에 Grade객체입니다. 2) System.out.println(member,getGrade() == 1);은 int와 비교 시 에러가 난다는 문구가 나왔습니다. 답변: 맞습니다. 자료형이 다르니까 비교할 수 없어서 컴파일 에러가 발생합니다. 왜냐하면 1은 int라는 기본 자료형(primitive type)이고, member.getGrade()는 enum 참조형(reference type) 즉, 객체형입니다. 3) equals로 Grade.VIP와 비교 했을 경우만 true가 나오고, equals(“VIP”)는 false, ==를 통한 비교는 에러가 나게됩니다. 답변 : equals 는 메소드입니다. == 는 연산자 입니다. 메소드는 ‘값’을 비교합니다. 연산자는 대상의 ‘주소값’을 비교합니다. call by value와 call by reference 차이를 떠올리시면 될 것 같습니다. member.getGrade() 를 equals(Grade.VIP) 로 비교하면 true가 나옵니다. 둘다 주소값을 알고 있고 둘 다 객체가 상수객체이므로 주소가 같습니다. 모든 Grade 타입의 객체의 VIP는 같은 주소값을 가집니다. 그래서 Grade.VIP와 비교하면 true가 나옵니다. member.getGrade() 를 equals(“VIP”) 로 비교하면 false가 나옵니다. equals 메소드는 String객체 “VIP”와 컴파일 타임에 주소값이 정해진 객체 Grade.VIP 은 서로 다르기 때문입니다. member.getGrade() == “VIP” 는 에러가 납니다. member.getGrade() 는 컴파일 타임에 힙 영역에 주소값이 *정해진* 객체 Grade.VIP의 주소값을 참조합니다. “VIP” 는 동적으로 생성한 객체의 주소값입니다. (프로그램 실행 도중 주소가 정해짐) 이미 할당된 주소값과 동적으로 생성하는 주소값은 비교할 수 없기 때문에 컴파일 에러가 납니다. 적고 보니 엄청 길어졌습니다... 조금이나마 도움이 되었으면 좋겠습니다. 감사합니다.
- 0
- 2
- 353
질문&답변
2021.06.08
안녕하세요. enum 질문있습니다.
안녕하세요. enum은 선언된 순서에 따라 0, 1, 2 .. 의 순차적으로 증가된 값을 가집니다. 예시를 들자면, enum Season{ spring, summer, fall, winter } spring == 0 summer == 1 fall ==2 winter ==3 따라서 수업 시간에 사용한 enum Grade안에 선언한 BASIC라는 코드는 0값을 가지는 상수입니다. VIP라는 코드는 1값을 가지는 상수입니다.
- 0
- 2
- 353
질문&답변
2020.06.13
혼자 해봤을 때 안되서 질문합니다.
네 알겠습니다! 답변 감사합니다 선생님!
- 0
- 2
- 215
질문&답변
2020.05.03
전역변수 지역변수 차이때문에 질문 드립니다.
자세한 답변 감사합니다 선생님!!
- 6
- 3
- 576