Java

비교와 Boolean

프로그래밍의 비교나 불린은 이것만으로는 효용이 크지 않다. 후속 수업인 반복문과 조건문에서 그 효용이 드러나기 때문에 조금 지루하더라도 조건문까지만 인내하자.

Boolean

불린(Boolean)은 참과 거짓을 의미하는 데이터 타입으로 bool이라고도 부른다. 불린은 정수나 문자와 같이 하나의 데이터 타입인데, 참을 의미하는 true와 거짓을 의미하는 false 두 가지의 값을 가지고 있다. 아래는 비교 연산자들에 대한 설명이다.

비교 연산자 (관계 연산자)

프로그래밍에서 비교란 주어진 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 것을 의미한다. 이때 비교 연산자를 사용하는데 비교 연산자의 결과는 true나 false 중의 하나다. true는 비교 결과가 참이라는 의미이고, false는 거짓이라는 뜻이다. 

==

좌항과 우항을 비교해서 서로 값이 같다면 true 다르다면 false가 된다. '='이 두 개인 것을 주의하자. '='이 하나인 것은 대입 연산자로 우항의 값을 좌항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다. (실행)

package org.opentutorials.javatutorials.compare;

public class EqualDemo {

    public static void main(String[] args) {
		System.out.println(1==2);           //false
		System.out.println(1==1);           //true
		System.out.println("one"=="two");   //false
		System.out.println("one"=="one");   //true
	}

}

!=

'!'는 부정을 의미한다. '같다'의 부정은 '같지 않다'이다. 이것을 기호로는 '!='로 표시한다. 아래의 결과는 !=의 결과인데 ==와 정반대의 결과를 보여준다. (실행)

package org.opentutorials.javatutorials.compare;

public class NotDemo {

    public static void main(String[] args) {
		System.out.println(1!=2);      		//true
		System.out.println(1!=1);			//false
		System.out.println("one"!="two");	//true	
		System.out.println("one"!="one");	//false
	}
	
}

>

좌항이 우항보다 크다면 참, 그렇지 않다면 거짓임을 알려주는 연산자다. '<'는 반대의 의미로 언급은 생략하겠다. (실행)

package org.opentutorials.javatutorials.compare;

public class GreaterThanDemo {

    public static void main(String[] args) {
		System.out.println(10>20);      	//false
		System.out.println(10>2);			//true
		System.out.println(10>10);			//false

	}

}

>=

좌항이 우항보다 크거나 같다. '<='는 반대의 의미로 언급은 생략하겠다. (실행)

package org.opentutorials.javatutorials.compare;

public class GreaterThanOrEqualDemo {

    public static void main(String[] args) {

		System.out.println(10 >= 20); // false
		System.out.println(10 >= 2); // true
		System.out.println(10 >= 10); // true

	}

}

.equals

.equals는 문자열을 비교할 때 사용하는 메소드다. 우리는 아직 메소드를 배우지 않았기 때문에 지금은 그냥 이것을 연산자로 이해해도 무방하다. 아래는 문자와 문자를 비교하는 방법이다. (실행)

package org.opentutorials.javatutorials.compare;

public class EqualStringDemo {

    public static void main(String[] args) {
		String a = "Hello world";
		String b = new String("Hello world");
		System.out.println(a == b);
		System.out.println(a.equals(b));
	}

}

변수 a와 b에 각각 문자열을 생성해서 저장했다. 변수 b에 문자열을 만드는 방법은 생성자를 이용하고 있는데 이 방법은 후에 객체 지향 시간에 배우게 된다. 지금은 new String의 괄호 안에 문자열을 넣으면 문자열을 생성할 수 있다고만 알아두자. 결과는 false와 true이다. ==은 두개의 데이터 타입이 동일한 객체인지를 알아내기 위해서 사용하는 연산자이기 때문에 b에 담긴 객체와 일치하지 않는 것이다. 이를 보안하는 비교 방법이 equals이고 이를 이용해서 서로 다른 객체들간에 값이 같은지를 비교할 수 있다. 이 이야기는 지금 단계에서는 이해하기 다소 어려움이 있다. 문자와 문자를 비교할 때는 '=='를 사용하지 않고 .equals를 사용한다고 일단은 알아두자.

댓글

댓글 본문
  1. 성치
    2021-10-13일 완료
  2. H4PPY
    1010
  3. 미NI언
    10.6 완료
  4. 아하
    21.09.28 완료
  5. 문자와 문자를 비교할 때는 '=='를 사용하지 않고 .equals를 사용한다
  6. 하성호
    210901
  7. 베이스박
    210823 완료~~~감사합니다.
  8. 오션멍키
    210822 완료
  9. super1Nova
    210811
  10. 이땅콩
    문자열은 비교연산자 ==를 쓰지 않고 .eqauls()를 사용한다.
  11. B=loom
    2021.07.19
  12. 초롱이는초초
    6.11 1회독 완료
  13. 악어수장
    5.11 2회독 완료
  14. 개발꾸꾸
    5.10
  15. 코등이
    수강완
  16. 드림보이
    수강완료했습니다...
  17. 지유나
    02.04.2021 완료!
  18. Ruinark
    21.03.18 완료
  19. 하연주
    210202 완료
  20. 윤성원
    21/01/27 완료
  21. 박소영
    최고
  22. 김민혁
    21/1/9 클리어
  23. 연주
    문자열끼리 비교할때는.. a.equal(b)를 이용한다.
    a ,b 둘다 String 함수...
  24. 자바남
    자바남 수강완료
  25. 제리
    맘잡고 시작한다 가즈아!!!!!!
  26. 오석민
    2020.09.17완료
  27. 김태현
    == 숫자비교
    System.out.println(1==2); //false

    equals는 문자열을 비교할 때 사용하는 메소드다
    System.out.println(a.equals(b));
  28. 프로페쎠널
    2020.08.21 - 완료
  29. hvii
    20200807 학습완료
  30. EunSeok Kang
    선기야 형은 이미 강의 듣고 넘어갔다. 언제 따라올래?
  31. yulrinam
    200730 시청완료 감사합니다 :)
  32. 広川
    どうもありがとうございます。
  33. zinkki
    20200608
  34. yuji
    자바왕초보 2일차 완료

    boolean은 참과 거짓으로 나누게 되고 자료형?이라고 한다.
    비교연산자는 좌항과 우항의 값을 비교하는데 사용하고 결과는 true나 false로 나눈다.
    값을 비교했을떄 같으면 true 다르면 false가 된다.
    == : 동일
    !=: 동일 부정
    비교 연산자에는 >,<,>=,=< 크기를 나타내는 것이 있고

    숫자를 비교할때는 ==
    문자를 비교할때는 .equals를 쓰인다고 한다.
  35. 20200320
  36. 수고했어오늘도
    2020-03-14 완료
  37. 초보
    그런 것 같아요 뭔가 새로운 문자열로 인식하는 것 같구(즉 기존과 다른 새로운 문자열)
    다른 항목(묶음이라는 계념)이라기 보단 그냥 독립적으로 다른 문자열로 인식하게 만드는 것 같아요
    a,b 모두 new String으로 잡아봤는데 false로 나오더군요
    .equals()는 계급장때고 비교하게 만드는 명령어 같구요
    대화보기
    • 흐무
      2020.02.28 완료
      ==는 서로의 값을 비교하는 비교연산자이고 .equals는 문자열을 비교할때사용한다.
      인스턴스 생성자와의 주소값이 다르기때문에 false가 나오게 된다.
    • 쿨라임
      String a = "Hello world";
      String b = new String("Hello world");
      여기서 a == b 가 false로 나오는 이유는 String 객체에 대해서 JVM의 메모리할당 방식이 다르기 때문입니다.

      String a = "Hello world"로 할당하게 되는 경우에는 Heap안에 있는 String Constant Pool영역에 할당이 되게된다. String b = new String("Hello world")로 할당하게 되는 경우에는 Heap내의 String Constant Pool영역이 아닌 Heap내의 어딘가에 하나의 "Hello world"라는 객체로 할당

      여기서 a와 b객체의 내용은 같지만 가르키고있는 객체가 각각 다른 객체이기때문에 a == b는 false가 나오는 것입니다.

      String에 대한 추가적인 내용...
      String a = "Hello World";
      String b = "Hello World";
      이렇게 선언을 하게되면 a,b객체는 SCP(String Constant Pool)내에 Hello World로 동일한 두 객체가 할당될 것 같지만 그렇지 않습니다. SCP내에는 동일한 문자열에 대해서 하나의 Hello World객체로만 할당되며 a와 b는 동일한 레퍼런스를 가지게 되는 것입니다.
    • 베이비유저<baby user>
      2020/02/17 min 완
    • 자바를자바
      ==이랑 .equals의 이해에는 어려움이 느껴진다.
    • 과연다볼수있을까?
      200105 완료
    • 매직램프
      감사합니다!!
    • 이재우
    • 엘비
      20191031 완료
    • 허공
      감사합니다!
    • 그 두 개가 다른 것이 아니라, 그 두 개를 담기 위해 사용된 객체가 달라서 false가 출력된게 아닐까 생각됩니다.
      대화보기
      • 워나
        2019/10/05 완료
      • ㅁㄴㅇㅁㄴㅇ
        String a = "Hello world";
        String b = new String("Hello world");
        System.out.println(a == b);
        이것이 false이유는 "Hello world"와 new String("Hello world")이 다르기 때문이죠?
      • PassionOfStudy
        190906 Note
        * 비교와 Boolean
        불린(Boolean)은 참과 거짓을 의미하는 데이터 타입으로 bool이라고도 부른다. 불린은 정수나 문자와 같이 하나의 데이터 타입인데, 참을 의미하는 true와 거짓을 의미하는 false 두 가지의 값을 가지고 있다.

        대표적 ==, !=, >, <, >=, <= 있다.
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기