생활코딩

Coding Everybody

코스 전체목록

닫기

문자의 비교 : ==과 equals의 차이점

수업소개

자바에서 문자나 객체를 비교할 때는 ==가 아닌 equals를 사용해야 합니다. 그 이유와 equals의 의미를 살펴봅시다. 

 

 

 

강의

소스코드

public class AuthApp2 {

    public static void main(String[] args) {
		
		String id = "egoing";
		String inputId = args[0];
		
		String pass = "1111";
		String pass2 = "2222";
		String inputPass = args[1];
		
		System.out.println("Hi.");
		boolean isRightPass = (inputPass.equals(pass) || inputPass.equals(pass2));
		if(inputId.equals(id) && isRightPass ) {
			System.out.println("Master!");
		} else {
			System.out.println("Who are you?");
		}		

	}

}

 

 

 

 

댓글

댓글 본문
  1. 뱅글이
    원시데이터와 비원시데이터가 있다.
    원시데이터는 값이 같다면 같은 곳에 저장이 되어있기 때문에 비교연산자 사용이 가능하다
    > a = 1, b = 1, a==b (true)
    비원시 데이터, 객체나 문자를 비교할 때는 값이 같아도 저장된 장소가 다르기 때문에 다른 곳을 가리키고 있다.

    String a= new String("Pass");
    String b = new String("Pass");
    System.out.println(a==b); // false값 반환
    System.out.println(a.equals(b)); //true값 반환

    --? 논리 연산자에 대한 내용은 이곳엔 소스코드만 있고 영상은 유튜브에만 올라가 있나봅니다.

    // AND
    (true)&&(true) - true
    (true)&&(false) - false
    (false)&&(true) - false
    (false)&&(false) -false

    //OR
    (true)||(true) - true
    (true)||(false) - true
    (false)||(true) - true
    (false)||(false) - false

    // not
    (!true) = false
    (!false) = true


    Boolean isRightpass = (inputPass.equals(pass)||inputPass.equals(pass2));
    if(inputId.equals(id)&& isRightpass )
  2. 준서
    0. 변수의 선언
    -원시 데이터 타입
    ->한 저장소에 매칭
    -비원시 데이터 타입
    ->다른 저장소에 매칭
    -new
    ->다른 저장소에 매칭
    1. 원시 데이터 타입의 비교
    a==b
    2. 비원시 데이터 타입의 비교
    a.equals(b)
  3. 이정왓
    아하~ 저번시간에 저장했던 id = "egoing" ; 이랑 InpuId = args[0];은 각자의 egoing이 다른 저장소에 저장이 되어있으니 == 을 했을때 같은곳을 가리키지 않아서 false가 떴던 거군요!
  4. 헤딩코딩
    @원시 자료형(더이상 쪼갤수없는 자료형) 은 같은값이면 같은주소를 가리킨다
    그러므로 == 연산자로 비교를하면 true가 나온다.

    @비원시 자료형은 new를 선언해 서로다른 주소를 사용하기때문에
    ==가 아닌 .equals()를 사용하자.
  5. Gyeong Min Lee
    ㅇㄹ
  6. 선대범
    // 원소 자료형들처럼 "="로만 변수 선언하는 경우 값이 같으면 변수이름이 다르더라도 같은 메모리 주소를 가르키지만
    // 원소 자료형이 아니면 값이 같더라도 다른 주소를 가르킨다.
    // String은 원소 자료형은 아니지만 원소 자료형 취급을 해준다.
    // String이라 하더라도 new를 이용해 선언한다면 같은 값이라도 다른 주소를 가르키게 되어 false값이 나온다.

    // 그때 비교하는 방법은 비교대상.equals(비교대상) 형식으로 메소드를 사용하는 것이다.
  7. 2020 06 24
  8. 이해 쏙속!
  9. claire
    좋은 추가 설명 감사합니다
    대화보기
    • 왜 equals를 쓰는가
      자바에는 원시데이터 타입과 비원시데이터 타입이 있는데, 자바는 이 둘을 다루는데 차별이 있다.
      요약하자면, int같은 원시데이터 타입은 ==로, String같은 비원시데이터타입은 equals()를 쓰는 것이 좋다.

      ==(동등연산자)는 '메모리 상에서 같은 주소(위치)를 가리키고 있냐'라는 물음이기 때문에 원시데이터타입의 경우 값이 동일하면 true가 반환된다.

      equals() 메소드는 '값 내용물이 같은가'라는 물음이기 때문에 비원시데이터 타입에서 사용된다.
      (String 같은 경우는 자주 쓰이기 때문에 동등연산자 ==를 사용해줄수도 있으나, 오류가 날 수도 있으므로 그냥 equals를 쓰는게 속편하다.)
    • 완료
    • 뉸찡
      2020.03.06 완료
      감사합니다!
    • 감자
      수강 완료
    • 설탕소금
      감사합니다,
    • 임지수
      2020.01.30 완료
    • serina
      감사합니다!
    • 라또마니
      감사합니다. 근데 위에 강의6의 소스코드는 보이나 연결이 없습니다. 참고하세요!!
    • 이기호
      명 강의 감사합니다!
    • 쑤우
      수강완료. 감사합니다.
    • 허공
      감사합니다!
    • 김민호
      정주행중입니다 ㅎㅎ
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기