Java Relational Operators
Java 프로그래밍, 비교 연산자 ( Relational Operators )
동등비교 연산자 (==, !=), 대소비교 연산자 (>, >=, <, <=)
동등비교 연산자는 기본형, 참조형에 모두 사용될 수 있고, 대소비교 연산자는 논리형을 제외한 모든 기본형 데이터를 비교하는데 사용될 수 있다
프로그래밍 언어를 처음 공부할 때, 비교연산자와 관련하여 반드시 기억해야 할 점은 동적으로 논리형 데이터를 산출하는 방법은 비교, 논리 연산자를 사용하는 것이라는 점이다. 아래의 예제에서는 Scanner 라는 클래스를 이용하여 키보드로부터 이용자의 입력을 받는 방법도 포함하고 있다
import java.util.Scanner; public class Tutorials { public static void main(String[] args) { // 동등비교 연산자 (==, !=) : 기본형, 참조형 비교에 모두 사용됨 // 대소비교 연산자 (<, <=, >, >=) : 논리형을 제외한 모든 기본형에 사용됨 // 모든 비교연산자, 모든 논리 연산자는 연산결과를 boolean 형으로 리턴한다 System.out.println("100 % 2 == 0 :" + (100 % 2 == 0)); // :true boolean res = 10 != -10; res = 'A' > 'a'; // false System.out.printf("'A' > 'a' : %b %n", res); // 참조형 비교에도 사용되는 ==, != (동등비교연산자, Equality) System.out.println("Hello" != "World"); // true Scanner scanner = new Scanner(System.in); System.out.print("나이를 입력하세요:"); int userAge = scanner.nextInt(); System.out.printf("성인여부 = %b %n", userAge>=20); } }
3항 연산자( Conditional Operator, Ternary Operator)
3항 연산자는 연산항이 3개라서 붙여진 이름이며, 조건 연산자라고도 하는데 조건(true/false)에 따라서 리턴하는 값이 결정되기 때문이다. 다음과 같은 형식으로 사용된다. 사용된 [ ] 는 실제로는 필요없으며 이해를 돕기위해 사용한 것이다.
[true/false] ? [조건이 true일 때 리턴되는 값] : [조건이 false일 때 리턴되는 값]
3항 연산자 사용 예
아래의 예제에서는 Scanner 라는 클래스를 사용하여 키보드로부터 이용자의 입력을 받아서 검사하는 기능과 String 클래스의 equals() 메소드를 사용하여 문자열을 비교하는 기능도 포함하고 있다
import java.util.Scanner; public class Tutorials { public static void main(String[] args) { System.out.print("나이를 입력하세요:"); Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); scanner.nextLine(); // 입력버퍼에 남아 있는 개행문자를 비운다 // 3항 연산자 boolean isAdult = age>=20 ? true : false; System.out.printf("성인여부 = %b %n", isAdult); System.out.print("로그인 (아이디 입력):"); String userId = scanner.nextLine(); // 3항 연산자 String loginResult = userId.equals("SMITH") ? "로그인 성공" : "로그인 실패"; System.out.printf("로그인 결과 : %s %n", loginResult); } }
위의 코드 실행결과 화면
성인여부 = true
로그인 (아이디 입력):SMITH
로그인 결과 : 로그인 성공
instanceof (Type Comparison Operator)
객체의 자료형(클래스)을 비교한다. 객체는 특정 클래스로부터 생성되며 객체가 어떤 클래스로부터 생성되었는지 그 클래스를 확인할 때 사용되는 연산자이다. 객체지향 언어의 3대 특징인 다형성(Polymorphism)이 적용된 참조 변수가 사용될 때 instanceof 연산자가 매우 중요하게 사용된다
public class Tutorials { public static void main(String[] args) { String str = "행복한 삶을 위해"; // str 객체는 String 클래스의 인스턴스인가? 객체의 형을 비교한다 boolean res = str instanceof String; // true System.out.printf("str 객체는 String 클래스의 인스턴스인가? -> %b %n", res); res = str instanceof Object; // true System.out.printf("str 객체는 Object 클래스의 인스턴스인가? -> %b %n", res); } }