비교 연산자(관계 연산자)
==, !=
- 두 피연산자를 비교하여 결과값으로 true, false 반환
- 피연산자로 모든 자료형 사용 가능
>, >=, <, <=
- 두 피연산자의 값의 크기 비교
- 기본형 boolean, 참조형 제외, 나머지 자료형에 모두 사용 가능
public void method1() {
int nData1 = 0;
int nData2 = 13;
boolean bResult = false;
System.out.printf("nData1(%d) == nData2(%d): %s\n", nData1, nData2, nData1 == nData2);
System.out.printf("nData1(%d) <= nData2(%d): %s\n", nData1, nData2, nData1 <= nData2);
System.out.printf("nData1(%d) >= nData2(%d): %s\n", nData1, nData2, nData1 >= nData2);
System.out.println();
bResult = (nData1 != nData2);
System.out.println("nData1 != nData2: " + bResult);
bResult = ('A' == 65); // 65 == 65 자동 형변환
System.out.println("A == 65: " + bResult);
bResult = (5 == 5.0); // 5.0 == 5.0 자동 형변환
System.out.println("5 == 5.0: " + bResult);
bResult = (0.1 == 0.1f); // 실수형은 부동소수점 오차가 생길 수 있기 때문에 실수형은 비교 연산하지 않는다.
System.out.println("0.1 == 0.1f: " + bResult);
}
결과값
nData1(0) == nData2(13): false
nData1(0) <= nData2(13): true
nData1(0) >= nData2(13): false
nData1 != nData2: true
A == 65: true
5 == 5.0: true
0.1 == 0.1f: false
문자열 비교
equals()
- 문자열 비교는 == 대신 equals() 메소드 사용
- 문자열은 class로 참조형이기 때문에 비교 시 값이 아닌 주소를 비교
equalsIgnoreCase()
- 대소문자 구분하지 않음
equlas() 예제
public void method3() {
String sStr1 = "abcd"; // stack 영역 생성, 같은 데이터는 하나만 생성 후 공유
String sStr2 = "abcd";
String sStr3 = new String("abcd"); // heap 영역 생성, 각기 다른 주소에 저장
String sStr4 = new String("abcd");
System.out.println("sStr1 == sStr2: " + sStr1 == sStr2);
System.out.println("sStr1.equals(sStr2): " + sStr1.equals(sStr2));
System.out.println("sStr3 == sStr4: " + sStr3 == sStr4);
System.out.println("sStr3.equals(sStr4): " + sStr3.equals(sStr4));
}
결과값
true
true
false
true
equalsIgnoreCase() 예제
public void method3() {
String sStr1 = "aBcD"; // stack 영역 생성
String sStr2 = "abcd";
String sStr3 = new String("aBcD"); // heap 영억 생성
String sStr4 = new String("abcd");
System.out.println(sStr1 == sStr2);
System.out.println(sStr1.equalsIgnoreCase(sStr2));
System.out.println(sStr3 == sStr4);
System.out.println(sStr3.equalsIgnoreCase(sStr4));
}
결과값
false
true
false
true
'Developer TABLE > Java' 카테고리의 다른 글
논리 연산자, Short-circuit evaluation (0) | 2021.08.25 |
---|---|
단항 연산자 (0) | 2021.08.25 |
산술 연산자, 반올림(Math.round()) 메소드 (0) | 2021.08.25 |