Java SE Tutorials/Relational Operators

Java Relational Operators

Soul-Learner 2016. 11. 30. 13:53

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);
	}
}

위의 코드 실행결과 화면

나이를 입력하세요:20
성인여부 = 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);
	}
}