일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바웹프로그래밍
- 갤러리제작 #갤러리만들기 #jsp갤러리 #jsp게시판 #jsp프로그래밍 #jsp웹프로그래밍 #jsp웹 #jsp모델1방식 #사진업로드 #jsp사진업로드 #jdbc6 #jdbc드라이버다운 #jdbc드라이버무료다운
- View #
- 자바 #웹자바 #webJava #java #코딩 #코딩초보 #ojdbc #서블릿 #자바서블릿 #javaServelet #servelet #httpServlet
- 정처기 #정처기필기 #정보처리기사 #정보처리기사필기 #정보처리기사2023 #정처기2023 #정처기3회 #정보처리기사3회 #정보처리기사실기 #정처기실기 정처기합격
- web.xml #배포지시자 #서블릿테스트
- 어노테이션 #@WebServlet #WebServlet #
- Doit #Doit오라클 #Doit시리즈 #연습문제
- sql #오라클 #불리언형 #boolean #webjava #java #jsp #Mybatis #마이바티스 #마이바티스환경설정 #모델1 #모델1프로그래밍 #Batis #마이바티스다운로드 #web설정 #웹프로그래밍 #게시판 #게시판제작 #게시판만
- 방통대 #방송통신대학교 #컴퓨터과학 #컴퓨터과학과 #컴과 #방통대컴퓨터과학과 #방통대컴과 #방통대파이썬 #방통대C #방통대자바
- cos.jar #cos드라이버 #파일업로드드라이버 #루피는귀여워 #마이바티스 #MyBatis #마이바티스sql #마이바티스DB #마이바티스jsp #마이바티스이클립스 #mapper #config.xml #마이바티스다운로드
- tern다운로드 #메이븐다운로드 #maven #스프링라이브러리 #자바라이브러리 #톰캣설정 #WAS #웹어플리케이션서버
- java #array #자바 #배열 #프로그래밍 #코딩 #자바프로그래밍
- Init-param #context-param #
- 서블릿선언 #서블릿선언방법 #
- QUERY #DML #SQL문 #내림차순정렬 #오름차순정렬
- 서블릿 #자바모델1 #자바모델2 #mvc #mvc패턴
- 자바 #웹자바 #JAVA #WEB #WEBJAVA #WEBPROGRAMMING #웹 #웹프로그래밍 #코딩 #CODING #모델1 #모델2 #모델1방식 #모델2방식
- 마이바티스환경설정
- spring #스프링 #전자정부표준프레임워크 #표준프레임워크 #자바스프링 #스프링다운로드 #자바스크립트 #웹프로그래밍설정 #웹프로그래밍셋팅
- ORACLE #TIGER #SCOTT #SCOTT계정 #오라클학습계정 #프로그래밍 #SQL #SQLORACLE #오라클 #오라클연습 #오라클연습계정 #오라클연습문제 #WHERE절 #오라클조건절
- html #자바와서블릿 #자바와웹연결 #웹연결
- 정처기필기합격 #정처기합격후기
- 기말고사 #방통대기말고사 #방통대후기 #방통대기말고사후기 #방통대2023년1학기 #방통대1학기 #방통대C프로그래밍 #방통대장학금 #방통대영어회화1
- Controller
- jsp #게시판만들기 #자바로게시판만들기 #웹테스트 #JNDI #myora #Oracle #오라클 #DAO #DTO #아파치톰캣 #웹자바셋팅 #모델1 #모델1방식 #모델1방식웹프로그래밍 #웹프로그래밍
- 8 실무에서 가장 많이 사용하는 SQL
- 정처기3회 #정보처리기사2023
- Model #
- union #sql99 #외부조인 #오라클조인 #sql조인 #자체조인 #비등가조인 #비등가조인 #테이블복사 #오라클테이블 #null인데이터출력
- Today
- Total
장미의 개발일기
Java equals 함수 주의점 : String class / Do it! 자바 완전 정복 (김동형) -연습문제 본문
Do it! 자바 완전 정복 (김동형) - 10장 클래스의 상속과 다형성 연습문제 11번
문제 맨 아래의 equals 함수를 보자마자 내 머릿 속은 ???? 였다.
전에 공부한 내용에서 저렇게 비교하면 안된다고 강조하면서 공부했기 때문.
바로 이클립스 켜서 코드 직접 쳐보니 false 나옴 그 순간 머릿속을 스쳐지나가는 게 있었으니
package book;
class A {
int data;
A(int data) {
this.data = data;
}
}
public class Page377Ex {
public static void main(String[] args) {
A a = new A(3);
A a2 = new A(3);
System.out.println(a.equals(a2));
}
}
String class!! 내가 앞에서 생각한 것은 String 클래스에만 해당되는 거였는데 내가 착각한 거였다.
String str = "안녕하세요"; String str2 = new String("안녕하세요"); String str3 = "안녕하세요"; |
String class 의 특징: 문자열이 같으면 같은 주소를 공유한다.
이 말은 즉 str과 str3는 힙영역에서 같은 주소를 공유하고 있다.
즉, str과 str3만 있다고 치면 객체는 총 1개인 셈이다.
다만 str2는 new 키워드를 사용하여 새 객체를 생성했기 떄문에, 내용물인 안녕하세요 가 같더라도
str과 str3와는 메모리 주소가 다르다. (저 위의 예시에선 객체가 총 2개다.)
equals 함수는 Stack 메모리의 값을 비교, 즉 객체의 위치를 비교한다. (같은 객체 안인지 아닌지)
그래서 String 객체들(문자열)을 비교할때는 equals 함수를 쓰면,
str = = str3 => true
str == str2 => false
이런 결과가 나온다.
String 객체를 정확하게, 주소까지 같은지를 비교하고 싶다면,
equals 함수 대신 아래처럼 == 비교연산자를 사용해서 비교하여야 한다.
다만 다른 보통 객체들 케이스와 변수를 비교할 떄는 equals 함수를 써도 무방하다.
String 클래스는 특별한 경우라 예외로 쳐야한다.
(다시 한번 말하지만, 문자열(String객체)이 같으면 힙영역에서 주소를 공유하는 하나의 객체에 둘 다 담기기 때문에)
다른 객체들,자료형의 경우엔 equals 함수를 쓰면 주소 값까지 같은지 비교가 가능하다.
do it 자바의 연습문제 11번으로 다시 돌아와서,
객체 a1와 a2는 같은 객체가 아닌, 별도로 생성된 객체이기에 각자 다른 주소를 가지고 있다.
즉 a1와 a2객체는 서로 다른 독립적이 존재니 false가 반환된다.
+ 메인 함수를 생각없이 쓰다가 살펴보았다.
public static void main(String[] args)
static이니 static 변수만 사용이 가능하고, 매개변수는
String 배열, String 여러개를 갯수 상관없이 사용하는게 가능하다.
(그래서 문자열을 포함한 다른 기본 자료형의 변수들을 자유롭게 사용할 수 있는 것 같다.)
가변적 배열의 표기? 인 것 같다. 매개변수로 String...a 를 대신 대입해보니 역시 적용이 똑같이 된다.
public static void main(String...a)
'개발일기 > Java' 카테고리의 다른 글
메소드 오버라이딩(Method Overriding) (0) | 2023.04.25 |
---|---|
헷갈리는 메모리 영역 정리 : 힙영역 + 클래스 캐스팅 (0) | 2023.04.24 |
클래스 조금 아는 상태에서 회원정보 등록하고, 출력하는 프로그램 만들기 (0) | 2023.04.20 |
IT 개발쪽 필수 용어 정리 (0) | 2023.04.19 |
클래스와 객체 (0) | 2023.04.19 |