비교연산자
왼쪽의 값과 오른쪽의 값을 비교한다.
> >= < <= == !=
비교연산자의 경우 어디가 크다 대신
어디가 큰게 참이냐 or 거짓이냐 이런식으로 결과가 나오기 때문에
결과값은 항상 true/false의 boolean이 된다.
> : 왼쪽의 값이 오른쪽 값보다 큽니까?
>= : 왼쪽의 값이 오른쪽 값보다 크거나 같습니까?
< : 왼쪽의 값이 오른쪽 값보다 작습니까?
<= : 왼쪽의 값이 오른쪽 값보다 작거나 같습니까?
== : 왼쪽의 값이 오른쪽의 값과 같습니까?
!= : 왼쪽의 값이 오른쪽의 값과 다릅니까?
단 비교 연산자의 경우에는 기본형 값에 대해서는 정확한 결과를 내놓지만
참조형 값에 대해서는 부정확한 값을 내놓을 수도 있다!
public class Ex06Operator03 {
public static void main(String[] args) {
int number1 = 10;
int number2 = 8;
System.out.println("number1 > number2: "+(number1 > number2));
System.out.println("number1 < number2: "+(number1 < number2));
System.out.println("number1 == number2: "+(number1 == number2));
System.out.println("number1 != number2: "+(number1 != number2));
기본형 데이터타입과 참조형 데이터타입의 차이
기본형 데이터타입의 경우 해당 공간에 값이 직접 저장되어있다.
참조형 데이터타입의 경우 해당 공간에 값이 저장되는것이 아니라
진짜 값이 저장되어있는 곳의 메모리 주소값이 저장되어있고
자바가 그 메모리주소값을 "참조"해서 진짜 값이 있는 곳을 찾아간다.
그러면 우리는 참조형 데이터타입의 변수를 3개 만들어보자
String이란 여러 문자가 모여있는 문자열을 뜻하는 클래스이다.
따라서 String 변수란 1개의 문자열을 뜻한다.
String 변수에 값을 넣을 때에는 "" 사이에 값을 넣어서 할당한다.
String string1 = "abc";
String string2 = new String("abc");
String string3 = string1;
각 참조형 변수의 값을 화면에 출력해 봅시다.
System.out.println(string1);
System.out.println(string2);
System.out.println(string3);
참조형 변수를 비교 연산자를 통해 값이 같은지를 비교합시다.
System.out.println("string1 == string2: "+(string1 == string2));
System.out.println("string1 == string3: "+(string1 == string3));
System.out.println("string2 == string3: "+(string2 == string3));
비교연산자의 경우에 참조형 데이터타입의 실제값을 비교해주지 않는다.
실제값대신 해당 공간에 저장되어있는 메모리 주소값만 비교해준다.
하지만 우리가 클래스 변수(=객체)를 비교할 때에는
객체 안의 어떤 값이 저장되어있는지를 비교하고 싶다는거지
주소값은 별로 궁금하지 않기 때문에
비교연산자를 이용해서는 우리가 참조형 변수의 비교를 정확하게 할 수 없다.
따라서 참조형 변수를 비교할 때에는 해당 참조형 변수안에 정의되어있는
비교기능을 호출해서 비교해야 한다.
비교 기능은 .equals() 메소드 이다.
객체안의 메소드를 호출할 때에는 객체이름.메소드()로 호출할 수 있다.
System.out.println("string1.equals(string2): "+string1.equals(string2));
System.out.println("string1.equals(string3): "+string1.equals(string3));
System.out.println("string2.equals(string3): "+string2.equals(string3));
---------------------------
number1 > number2: true
number1 < number2: false
number1 == number2: false
number1 != number2: true
abc
abc
abc
string1 == string2: false
string1 == string3: true
string2 == string3: false
string1.equals(string2): true
string1.equals(string2): true
string1.equals(string2): true
'Dev > Java' 카테고리의 다른 글
Java - 출력 ( Print ) (0) | 2020.08.10 |
---|---|
Java - 논리연산자 ( Operator04 ) (0) | 2020.08.10 |
Java - 할당연산자 (Operator 02) (0) | 2020.08.10 |
Java - 연산자 (Operator) (0) | 2020.08.10 |
Java - 상수 ( Constant ) (0) | 2020.08.10 |