JAVA_03

김민영·2024년 1월 25일

JAVA

목록 보기
4/10
post-thumbnail

연산 : 주어진 식을 계산하여 결과를 얻어내는 과정

피연산자 : 연산자의 작업 대상

  • 예 : 20 + 10 ==> 20, 10 피연산자라고 함

java에서 연산자의 종류

  • 산술연산자
  • 관계연산자
  • 논리연산자
  • 단항연산자 / 삼항연산자
  • 배정연산자 / 단축배정연산자
  • 비트연산자
  • 쉬프트연산자

1. 산술연산자

  • 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)
public class Operator_01 {

	public static void main(String[] args) {
		int su1 = 13, su2 = 4;
		
		//덧셈연산
		System.out.println("덧셈 결과 >>> "+(su1+su2));
		System.out.println(); // 빈 줄 하나가 생김
		
		//뺄셈연산
		System.out.println("뺄셈 결과 >>> "+(su1-su2));
		System.out.println(); 
		
		//곱셈연산
		System.out.println("곱셈 결과 >>> "+(su1*su2));
		System.out.println(); 
		
		//나눗셈연산
		System.out.println("나눗셈 결과(몫) >>> "+(su1/su2));
		System.out.println(); 
		
		//나머지연산 ( 짝수 홀수 배수 판별할 때)
		System.out.println("나머지 결과 >>> "+(su1%su2));
		System.out.println(); 
		
		/*
		 * 나머지(%) 연산자
		 * - 나머지를 구하는 연산자
		 * - 홀수, 짝수를 판별할 때 많이 사용
		 * - 배수 판별 시에도 사용
		 */

	}

}

키보드로 데이터를 입력받는 방법

1. JOptionPane.showInputDialog

import javax.swing.JOptionPane;

public class Operator_02 {

	public static void main(String[] args) {
		
		//키보드로 데이터를 입력받는 방법(첫 번째)
		int num1 = 
				Integer.parseInt(JOptionPane.showInputDialog("첫 번째 숫자 입력하세요"));
		int num2 = 
				Integer.parseInt(JOptionPane.showInputDialog("두 번째 숫자 입력하세요"));

		// 덧셈연산
		System.out.println("덧셈연산 결과 >>> "+(num1+num2));
		System.out.println();
				
		// 뺄셈연산
		System.out.println("뺄셈연산 결과 >>> "+(num1-num2));
		System.out.println();
				
		// 곱셈연산
		System.out.println("곱셈연산 결과 >>> "+(num1*num2));
		System.out.println();
				
		// 나눗셈연산
		System.out.println("나눗셈연산 결과 >>> "+(num1/num2));
		System.out.println();
				
		// 나머지연산
		System.out.println("나머지연산 결과 >>> "+(num1%num2));
		System.out.println();
	}

}

2. args[ ]

public class Operator_03 {

	public static void main(String[] args) {
		
		//키보드로 데이터를 입력받는 방법(두 번째)
		int num1 = Integer.parseInt(args[0]);
				
		int num2 = Integer.parseInt(args[1]);

		// 덧셈연산
		System.out.println("덧셈연산 결과 >>> "+(num1+num2));
		System.out.println();
		
		// 뺄셈연산
		System.out.println("뺄셈연산 결과 >>> "+(num1-num2));
		System.out.println();
		
		// 곱셈연산
		System.out.println("곱셈연산 결과 >>> "+(num1*num2));
		System.out.println();
		
		// 나눗셈연산
		System.out.println("나눗셈연산 결과 >>> "+(num1/num2));
		System.out.println();
		
		// 나머지연산
		System.out.println("나머지연산 결과 >>> "+(num1%num2));
		System.out.println();
	}

}

  • Program arguments에 숫자 입력

3. Scanner sc = new Scanner(System.in);

import java.util.Scanner;

public class Operator_04 {

	public static void main(String[] args) {
		// 1. 키보드로 데이터를 입력받는 방법(세번째)
		// System.in : 표준 입력장치(키보드)
		Scanner sc = new Scanner(System.in);
		
		System.out.print("첫 번째 숫자 입력 : ");
		int num1 = sc.nextInt();
		System.out.print("두 번째 숫자 입력 : ");
		int num2 = sc.nextInt();
		
		// 덧셈연산
		System.out.println("덧셈연산 결과 >>> "+(num1+num2));
		System.out.println();
				
		// 뺄셈연산
		System.out.println("뺄셈연산 결과 >>> "+(num1-num2));
		System.out.println();
				
		// 곱셈연산
		System.out.println("곱셈연산 결과 >>> "+(num1*num2));
		System.out.println();
				
		// 나눗셈연산
		System.out.println("나눗셈연산 결과 >>> "+(num1/num2));
		System.out.println();
				
		// 나머지연산
		System.out.println("나머지연산 결과 >>> "+(num1%num2));
		System.out.println();
		
		sc.close();  // Scanner 닫아줌
				

	}

}

2. 관계연산자(비교연산자)

크거나 같다 : >= 크다 : > 작거나 같다 : <= 작다 : < 같다 : == 같지 않다 : =!

  • 결과값은 boolean 형으로 나옴 ==> true / false 로 나옴
  • 관계연산자는 제어문(조건문)에서 가장 많이 사용되는 연산자.
public class Operator_05 {

	public static void main(String[] args) {
		int num1 = 10, num2 = 5;
		
		System.out.println("(num1 >= num2) 결과 >>> " + (num1 >= num2));
		System.out.println();
		
		System.out.println("(num1 > num2) 결과 >>> " + (num1 > num2));
		System.out.println();
		
		System.out.println("(num1 <= num2) 결과 >>> " + (num1 <= num2));
		System.out.println();
		
		System.out.println("(num1 < num2) 결과 >>> " + (num1 < num2));
		System.out.println();
		
		System.out.println("(num1 == num2) 결과 >>> " + (num1 == num2));
		System.out.println();
		
		System.out.println("(num1 != num2) 결과 >>> " + (num1 != num2));
		System.out.println();

	}

}

3. 논리연산자

  • 논리곱(&&) : 주어진 조건이 모두 참인 경우에만 결과가 true 가 됨

    • 그 나머지는 모두 false 가 됨 -- AND 연산
  • 논리합(||) : 주어진 조건 중에 어느 하나라도 참이면 결과는 true 가 됨

    • 그 나머지는 모두 false 가 됨 -- OR 연산
  • 부정(!) : true -> false, false -> true 가 됨

  • 관계연산자의 결과값을 가지고 논리연산이 수행됨

public class Operator_06 {

	public static void main(String[] args) {
		int su1 = 10, su2 = 7;
		
		// 논리곱인 경우 ==> true && true => true
		boolean test = (su1 >= su2) && (su2 >= 5); //true
		System.out.println("test 결과 >>> " + test);
		System.out.println();
		
		// 논리곱인 경우 ==> true && false => false
		test = (su1 >= su2) && (su2 <= 5);
		System.out.println("test 결과 >>> " + test); // false
		System.out.println();
		
		// 논리합인 경우 ==> false || true => true
		test = (su1 <= su2) || (su2 >= 5);
		System.out.println("test 결과 >>> " + test); // true
		System.out.println();


	}

}

4. 단항연산자 / 삼항연산자

  • 단항연산자 : 1개의 항을 대상으로 연산을 수행
  • 삼항연산자 : 3개의 항을 대상으로 연산을 수행

단항연산자(++ , --)

  • 전위연산자 : 단항연산자가 변수명 앞에 오는 경우(++su2)
    변수의 값을 하나 증가 또는 감소시킨 후 처리
  • 후위연산자 : 단항연산자가 변수명 뒤에 오는 경우(su1--)
    변수를 처리한 후 값을 하나 증가 또는 감사

삼항연산자

  • 형식) (조건) ? 수식1 : 수식2;

  • ==> 수식1 : 조건이 참이 경우 실행 문장

  • ==> 수식2 : 조건이 거짓인 경우 실행 문장

  • 간단하게 조건문을 대신하여 사용할 수있는 연산자

public class Operator_07 {

	public static void main(String[] args) {
		
		// 단항연산자(++, --)
		int su1 = 10, su2 = 10;
		
		System.out.println("su1++ >>> "+ su1++); // 10 -- su1 값을 먼저 출력 후 +1 계산
		
		System.out.println("++su2 >>> "+ ++su2); // 11 -- su2 값에 +1 
		
		int su3 =10, su4 = 20;
		
		System.out.println(++su3 + su4++); // 11 + 20 = 31
		System.err.println();
		
		System.out.println((++su3 % 3)+(su3 * ++su4)); // 12 %3 = 0 (0 + 12*22) = 264
		System.err.println();
		
		int num1 = 45, num2 = 33;
		String result = (num1 >= num2) ? "num1 값이 크다" : "num2 값이 크다";
		// 두 결과값 비교 - 참이면 문자열 나옴
		System.out.println(result);

	}

}

5. 배정연산자 / 단축배정연산자

- 배정연산자(=)

형식) 변수 = 변수 or 수식 or 값;

  • 좌변에는 항상 변수명이 와야 한다.
  • 우변에는 숫자, 변수명, 수식이 와야 함
  • 단축배정연산자
  • 배정연사자를 간편하게 사용하는 연산자
public class Operator_08 {

	public static void main(String[] args) {
		
		// 배정연산자
		// 형식) 변수명 = 값(데이터)
		int su1 = 10, su2 = 28, result =0;
		
		// 형식) 변수명 = 변수명
		su1 = su2;
		
		// 형식) 변수명 = 수식
		su1 = su2 + 27;
		
		System.out.println("su1 >>> " + su1); // 55
		System.out.println();
		
		System.out.println("su2 >>> " + su2); // 28
		System.out.println();
		
		// 단축배정연산자
		// result = result + 10;
		result += 10; // 10  (변수가 같을 때 사용 가능) 
		result += 10; // 20 
		
		System.out.println("result >>> " + result); // 28
		System.out.println();
		
		int su = 15;
		
		su += 5; // su = su += 5;
		System.out.println("su >>> " + su); // 20
		System.out.println();
		
		su -= 5; // su = su -= 5;
		System.out.println("su >>> " + su); // 15
		System.out.println();
		
		su *= 5; // su = su *= 5;
		System.out.println("su >>> " + su); // 75
		System.out.println();
		
		su /= 5; // su = su /= 5;
		System.out.println("su >>> " + su); // 15
		System.out.println();
		
		su %= 5; // su = su %= 5;
		System.out.println("su >>> " + su); // 0
		System.out.println();
		
		
		// 누적 변수 - 값이 누적이 되는 변수 ==> 반복문을 사용하여 간결하게 계산할 수 있음
		

	}

}

6. 비트연산자

  • 비트(0,1)를 이용하여 연산한는 연산자

  • %(and) : 두 비트의 조건이 참(1)인 경우 1을 반환
    그 외에는 0을 반환

  • |(or) : 두 비트 중 하나만 조건이 참(1)인 경우 1을 반환
    그 외에는 0을 반환

  • ^(xor) : 두 비트 중 서로 다른 경우에만 참(1)을 반환
    그 외에는 0을 반환

※ 비트 연산을 하기 위해서는 십진수를 이진수로 변환하는 과정이 필요함

public class Operator_09 {

	public static void main(String[] args) {
		
		int num1 = 10, num2 = 5, result;
		
		// 비트연산을 하기 위해서는 우선적으로 십진수를 이진수로 변환
		// num1 = 1010 , num2 = 0101
		
		// and 연산
		result = num1 & num2; // 1010 & 0101 ==> 0000
		System.out.println("and result >>> " + result); // 0
		System.out.println();
		
		// or 연산
		result = num1 | num2; // 1010 | 0101 ==> 1111
		System.out.println("or result >>> " + result); // 15
		System.out.println();
		
		// xor 연산
		result = num1 ^ num2; // 1010 ^ 0101 ==> 1111
		System.out.println("xor result >>> " + result); // 15
		System.out.println();


	}

}

7. 쉬프트연산자(비트 이동 연산자)

  • 비트를 대상으로 왼쪽 / 오른쪽으로 비트를 밀어서 연산을 수행하는 연산자
  • 왼쪽 쉬프트(<<) : 왼쪽으로 비트수만큼 이동하는 연산자 오른쪽에 비어 있는 빈 칸(비트)은 0으로 채워짐
  • 부호 있는 오른쪽 쉬프트(>>) : 오른쪽으로 비트 수만큼 이동하는 연산자 왼쪽에 비어있는 빈칸(비트)은 부호비트로 채워짐
  • 부호 없는 오른쪽 쉬프트(>>) : 오른쪽으로 비트 수만큼 이동하는 연산자 왼쪽에 비어있는 빈칸(비트)은 무조건 0으로 채워짐
  • 부호 비트 : 양수(0), 음수(1)
public class Operator_10 {

	public static void main(String[] args) {
		int num1 = 10, num2 = 5;
		
		// 비트 이동이 있기 때문에 십진수를 이진수로 변환하는 과정이 필요함
		// num1 = 1010, num2 = 0101;
		
		// 왼쪽 쉬프트(<<)
		System.out.println("왼쪽 쉬프트 >>> " + (num1 << 2)); // 40
		// 왼쪽 방향으로 2비트 이동 > 두 칸 이동된 빈 칸에는 0
		System.out.println();
		
		// 오른쪽 쉬프트(>>)
		System.out.println("오른쪽 쉬프트 >>> " + (num1 >> 1)); // 5
		
		System.out.println("오른쪽 쉬프트 >>> " + (num2 >> 1)); // 2
		System.out.println();
	}

}

profile
나다

0개의 댓글