[ITWILL : JSP] ==과 str.equals(str2) 차이, 객체와 클래스

ITWILL학원 : 16강 JSP기초 BY 정규태강사

1. ==과 str.equals(str2) 차이점

두가지는 공통적으로 비교연산을 하지만 차이점이 존재한다.
String타입을 비교할때는 equals()를 사용해야한다.

  • == : 두개의 문자열 객체가 완전히 같은지 비교(주소비교)

    • 메모리 주소를 비교(동일한 객체인지)
    • stack 메모리에 있는 주소를 비교
    • 기본형데이터타입을 비교할때 사용한다
  • str.equals(str2) : 두 개의 문자열 객체의 문자 데이터값이 같은지 비교

    • 대상의 내용을 비교
    • heap
    • 모든 참조형데이터타입에 사용하는 것은 아니고 참조형데이터타입중에 string타입 비교시에만 사용 가능하다.
    • 다른 참조형데이터타입을 비교하는 방법은 상속을 배운뒤 알게된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
//일치여부확인(==이용)
if (id == DBID && pw == DBPW){
%> <%=id%> 님 환영합니다! <%
}else{
%> 잘못입력하셨습니다.<%
}

//일치여부확인(equals이용)
if (id.equals(DBID) && pw.equals(DBPW)){
%> <%=id%> 님 환영합니다! <%
}else{
%> 잘못입력하셨습니다.<%
}

참고링크 : java equals 차이점

2. 객체와 클래스

  • 객체 : 모든 대상,기능들이다.

->객체를 프로그램에 포함하기위해서는 내가 필요한 기능만 뽑는 즉, 추상화과정이 필요하다.

  • 클래스 : 추상화된 객체를 코드로 표현한 형태

흔히 이를 붕어빵만들기에 비유하곤 한다.

클래스 - 객체 => 인스턴스화(객체화)
붕어빵틀 - 붕어빵 => 가열동작

하지만 붕어빵틀과 붕어빵만 있으면 붕어빵을 만들수있을까?
가열동작이 없으면 붕어빵은 만들어지지않는다
이 가열동작은 인스턴스화(객체화, 메모리에 올린다)라고 생각하면 쉽다.
이때 new연산자를 이용한다. -> new를 하면 메모리에 올라간다.

3. 클래스

1. 클래스와 객체는 같다?

NOPE! 다르다!

2. 클래스의 구성요소

  1. 생성자 : 멤버 변수를 초기화
  2. 멤버 변수 : 객체의 속성
  3. 멤버 메서드 : 객체의 동작(기능)

왼쪽처럼 기본데이터형의 변수를 선언하면 stack메모리에 올라간다.
오른쪽처럼 클래스를 선언하면 stack에는 a라는 변수가 생성되고 heap에는 new Test()라는 객체가 생성된다.

3. 클래스예시

휴대폰이라는 객체가 있다고 생객해보자

  1. 속성 : model, price, color …등등
  2. 기능 : on/off(), tell(), sendMSG() …등등
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Phone {
1. 속성
model
price
color ...등등

2. 기능
on/off()
tell()
sendMSG() ...등등

}

new Phone(); //클래스선언이 되고 이는 heap메모리에 저장된다.