반응형

 

연산자 : 연산에 사용되는 표시나 기호

피연산자 : 연산자와 함께 연산되는 데이터

연산식 : 연산 과정 기술

 

 

 

 

연산자

 

피연산자 수에 따라 세 종류의 연산자로 구분된다.

1. 단항 연산자 : 부호, 증감 연산자

2. 이항 연산자 : 산술, 비교, 논리 연산자

3. 삼항 연산자 : 조건 연산자

 

연산자

 

문자열,  부호,  증감,  산술, 비교(관계),  논리, 비트, 대입, 조건(삼항) 연산자가 있다.

 

 

- 연산자 종류

연산자 종류 연산자 기능
문자열 + 두 문자열 연결
부호 +, - 음수와 양수의 부호
증감 ++, -- 1만큼 증가/감소
산술 +, -, *, /, % 사칙연산 및 나머지 계산
비교(관계) ==, !=, >, <, >=, <=, instanceof 값의 비교
논리 !, &, |, &&, || 논리 부정, 논리곱, 논리합
비트 <<, >>, >>> 비트 단위로 논리 연산할 때 사용
대입 =, +=, -=, *=, /=, %= 우변의 값을 좌변의 변수에 대입
조건 (조건식) ? A : B 조건식에 따라 A 또는 B 중 하나 선택

 

 

- 연산의 방향과 우선순위

 

연산의 방향과 우선순위

 

 

 

단항 연산자의 종류

 

1. 부호 연산자

 

+, - 와 같은 부호를 뜻한다.

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class UnaryOperator {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		UnaryOperator obj = new UnaryOperator();
		// 단항 연산자.
		// 1. 부호 연산자
		obj.method1();
	}
	
	public void method1() {
		// 부호 연산자 +, -
		int num = 100;
		int res = - num;
		System.out.println(res);
	}
}

 

 

2. 증감 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class UnaryOperator {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		UnaryOperator obj = new UnaryOperator();
		// 단항 연산자.
		// 2. 증감 연산자
		obj.method2();
	}
	public void method2() {
		// 증감 연산자
		// ++변수 : 다른 연산을 수행하기 전에 1을 증가 시킴
		// 변수++ : 다른 연산을 수행한 후에 1을 증가 시킴
		// --변수 : 다른 연산을 수행하기 전에 1을 감소 시킴
		// 변수-- : 다른 연산을 수행한 후에 1을 감소 시킴
		
		int val = 10;
		int res = ++val;
//		val += 1;
//		int res = val;
		System.out.println("val = " + val);
		System.out.println("res = " + res);
		
		val = 10;
		res = val++;
//		res = val;
//		val += 1;
		System.out.println("val = " + val);
		System.out.println("res = " + res);
		
		val = 10;
		res = --val;
		System.out.println("val = " + val);
		System.out.println("res = " + res);
		
		val = 10;
		res = val--;
		System.out.println("val = " + val);
		System.out.println("res = " + res);
	}
}

 

결과 화면

 

 

 

이항 연산자의 종류

 

1. 산술 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class BinaryOperator {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		BinaryOperator obj = new BinaryOperator();
		// 이항연산자 : 대부분의 연산자.
		// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
		// 1. 산술 연산자 +-/*%
		obj.method1();
	}
	
	public void method1() {
		// 사칙연산과 마찬가지로 /, * 먼저 적용됨.
		int a = 5;
		int b = 3;
		System.out.println("덧셈\t" + (a + b) );
		System.out.println("뺄셈\t" + (a - b) );
		System.out.println("곱셈\t" + (a * b) );
		System.out.println("나눗셈\t" + (a / b) ); // 정수형 데이터끼리 나눌 시 나머지가 나오지 않음
		System.out.println("나머지\t" + (a % b) );
	}
}

 

결과 화면

 

 

2. 관계 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class BinaryOperator {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		BinaryOperator obj = new BinaryOperator();
		// 이항연산자 : 대부분의 연산자.
		// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
        
		// 2. 관계연산자
		obj.method2();
	}
	
	public void method2() {
		// >, <, ==(같다), >=, <=, !=(같지 않다)
		// 참, 거짓을 나타낼 수 있음
		
//		String grade = "";
//		System.out.println("점수를 입력해주세요.");
//		int score = sc.nextInt(); // int 값을 바로 받음
//		System.out.println("score = "+score);
//		
//		if(score >= 90) { // 조건에 맞으면 아래 코드를 진행
//			System.out.println("A 학점");
//		}
//		else if(score >= 80) {
//			System.out.println("B 학점");
//		}
		
		int a = 10;
		int b = 10;
		int c = 15;
		
		if(a == b) {
			System.out.println("같은 값");
		}
		if(a < c) {
			System.out.println("c 값이 a 보다 크다.");
		}
		if(a <= c) {
			System.out.println("c 값이 a 보다 같거나 크다.");
		}
	}
}

 

결과 화면

 

 

3. 논리 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class BinaryOperator {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		BinaryOperator obj = new BinaryOperator();
		// 이항연산자 : 대부분의 연산자.
		// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
        
		// 3. 논리연산자
		obj.method3();
		
		// 3. 논리연산자2
		obj.method4();
	}
	public void method3() {
		// 논리 연산자 : &&, ||, !
		
		// A&&B A,B 둘다 참이여야 참 (= 곱연산)
		// A 1 -> 1 | 0 -> 0 | 1 -> 0 | 0 -> 0 
		// B 1      | 1      | 0      | 0
		
		// A||B A,B 둘 중 하나라도 참이면 참 (= 합연산)
		// A 1 -> 1 | 0 -> 1 | 1 -> 1 | 0 -> 0 
		// B 1      | 1      | 0      | 0		
		
		boolean a = true;
		boolean b = false;
		System.out.println(a&&!b);
		System.out.println(a||b);
	}
	
	public void method4() {
		// 논리 연산자.
		// & | ^ ~
		/*
		 *      &(and)
		 * 45 = 00101101
		 * 25 = 00011001
		 * 	00001001 => 9
		 * 
		 *       |(or)
		 * 45 = 00101101
		 * 25 = 00011001
		 * 	00111101 => 61
		 * 
		 *       ^(xor)
		 * 45 = 00101101
		 * 25 = 00011001
		 * 	00110100 => 52
		 * 
		 *       ~(not)
		 * 45 = 00101101
		 * 	11010010 => 52
		 */
		int a = 45;
		int b = 25;
		System.out.println(a&b);
		System.out.println(a|b);
		System.out.println(a^b);
		System.out.println(~a);
	}
}

 

결과 화면

 

 

4. 비트 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class BinaryOperator {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		BinaryOperator obj = new BinaryOperator();
		// 이항연산자 : 대부분의 연산자.
		// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
		
		// 4. 비트연산자
		obj.method5();
	}
    
	public void method5() {
		// 비트 연산자
		// shift operator
		// >> << >>>
		// 숫자 >> 정수  => 숫자를 정수만큼 오른쪽으로 평행이동
		//		=> 숫자를 2^정수로 나눈 몫이 됨.
		// 가장 속도가 빠름.
		
		int i1 = 12;
		System.out.println(i1 >> 2);
		System.out.println(i1 << 2);
	}
}

 

결과 화면

 

 

5. 대입 연산자

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class BinaryOperator {
	Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		BinaryOperator obj = new BinaryOperator();
		// 이항연산자 : 대부분의 연산자.
		// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
        
		// 5. 대입연산자
		obj.method6();
	}
	
	public void method6() {
		// = : '=' 오른쪽 값을 '=' 왼쪽에 저장 우선 순위가 가장 놎다.
		// '=' 과 다른 연산자와 결합
		// a = a + b -> a+=b;
		// a = a - b -> a-=b;
		// a = a * b -> a*=b;
		// a = a / b -> a/=b;
		// a = a % b -> a%=b;
		
		int a = 10;
		int b = 4;
		System.out.println("a=a+b -> a+=b : " + (a+=b));
		System.out.println("a=a-b -> a-=b : " + (a-=b));
		System.out.println("a=a/b -> a/=b : " + (a/=b));
		System.out.println("a=a*b -> a*=b : " + (a*=b));
		System.out.println("a=a%b -> a%=b : " + (a%=b));
	}
}

 

결과 화면

 

 

 

삼항 연산자의 종류

 

삼항 연산자란 3개의 피연산자를 필요로 하는 연산을 말한다.

(조건식) ? A : B 로 구성된다.

A는 조건식이 참일 때 진행되며

B는 조건식이 거짓일 때 진행된다.

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class TrinomialOperator {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		TrinomialOperator obj = new TrinomialOperator();
	}
	
	public void method1() {
		/*
		 * 삼항연산자 : 3개의 피연산자를 필요로 하는 연산
		 * 			삼항연산자는 ? 앞의 조건식의 결과에 따라 콜론 앞뒤의
		 * 			피연산자가 선택 조건 연산식이라고도 함.
		 * 조건식 ? 참일 때의 값 : 거짓일 때의 값
		 */
		String str = true ? "참" : "거짓";
		System.out.println(str);
	}
}

 

 

- 응용 문제 1

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class TrinomialOperator {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		TrinomialOperator obj = new TrinomialOperator();
		obj.method2();
	}
    
	public void method2() {
		/*
		 * 숫자를 1 입력 받으면 더하기
		 * 		 나머지 숫자를 입력 받으면 곱하기
		 */
		int a = 10;
		int b = 7;
		
		int select = sc.nextInt();
		int result = (select == 1) ? a+b : a*b;
		System.out.println(result);
	}
}

 

1을 입력했을 때

 

2를 입력했을 때

 

 

- 응용 문제 2

 

package kr.or.ddit.study03;

import java.util.Scanner;

public class TrinomialOperator {
	Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {
		TrinomialOperator obj = new TrinomialOperator();
		obj.method3();
	}
    
	public void method3() {
		/*
		 * 나이를 입력 받아서
		 * 18세 이상이면 성년 아닐 경우 미성년을 출력 할 것.
		 */
		System.out.print("나이 : ");
		int age = sc.nextInt();
		String result = (age >= 18) ? "성년" : "미성년";
		System.out.println(result + "입니다.");
	}
}

 

결과 화면

 

반응형

'자바' 카테고리의 다른 글

[Java 초급] 5.5.2장 테스트2  (2) 2023.12.07
[Java 초급] 5.5.1장 테스트  (0) 2023.12.06
[Java 초급] 4.5장 테스트  (2) 2023.12.06
[Java 초급] 4장 Scanner 이용과 타입 변환  (0) 2023.12.05
[Java 초급] 3.5장 테스트  (0) 2023.12.05