Java - 연산자

제훈·2024년 7월 11일

Java

목록 보기
6/34

연산자

연산 : 프로그래밍 중 데이터를 처리하여 결과를 만드는 것
연산자 : 그 연산 과정에서 사용되는 기호 또는 부호
피연산자 : 연산되는 데이터


연산자 종류

종류연산자설명
산술 연산자+, -, *, /, %사칙연산 포함 기타 연산자
대입 연산자=, +=, -=, *=, /=, %== 오른쪽에 있는 값을 왼쪽에 대입하는 연산자
증감 연산자++, --피연산자를 하나만 갖는 단항 연산자
비교 연산자>, <, >=, <=, ==, !=두 피연산자의 상대적인 크기를 비교하는 연산자
논리 연산자&&, or, !, &, ^, ~주어진 논리식을 판단하여 true, false 를 결정하는 연산자
삼항 연산자? :피연산자 항목이 3개인 연산자
비트 연산자&, bit, ^, ~, <<, >>, >>>비트(bit) 단위로 논리 연산을 할 때 사용하는 연산자

표에서 or 자리에는 || 이 들어가야 하고, bit 자리에는 | 이 들어가야 한다.


산술연산자

		int num1 = 20;
        int num2 = 7;

        System.out.println("num1 + num2 = " + (num1 + num2));
        System.out.println("num1 - num2 = " + (num1 - num2));
        System.out.println("num1 * num2 = " + (num1 * num2));
num1 + num2 = 27
num1 - num2 = 13
num1 * num2 = 140

num1, num2 를 더할 때 괄호가 없다면 자동 형변환이 되어 이어붙여진다.

나누기는 소수점이 나올 수도 있어서 실수 자료형이 필요하다.

		double testNum = num1 / (double)num2; 		// 강제 형변환이 필요하다.
        System.out.println("testNum = " + testNum);
testNum = 2.857142857142857
  • 소수점 이하 3자리까지만 나타내보기 (math 사용 X)
        double resultNum = (int)(testNum * 1000)/(double)1000; // 1000으로 나눠줄 때 double형이어야지 뒤 소수점이 생긴다.
        System.out.println("resultNum = " + resultNum);
resultNum = 2.857
  • 나머지
    위에 있던 num1, num2로 나머지 구해보자
		System.out.println("num1 % num2 = " + (num1 % num2));
num1 % num2 = 6

산술연산자의 종류

종류설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더함
-왼쪽의 피연산자에 오른쪽의 피연산자를 뺌
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱함
/왼쪽의 피연산자에 오른쪽의 피연산자를 나눔
%왼쪽의 피연산자에 오른쪽의 피연산자를 나눈 나머지를 반환

대입연산자

대입 연산자 : 변수에 값을 대입할 때 사용하는 이항 연산자

  • 대입연산자
  • 산술 복합 대입 연산자

대입연산자 종류

종류설명
=왼쪽의 피연산자에 오른쪽의 피연산자를 대입함
+=왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입함
-=왼쪽의 피연산자에 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입함
*=왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입함
/=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입함
%=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함
		int num = 12;
        System.out.println("num : " +num);		// 12

        //3증가시
        num = num + 3;							// 15 대입연산자의 오른쪽에는 값, 왼쪽에는 공간의 의미이다.
        System.out.println("num : " + num);

        num += 3;  								// 18 num = num + 3; 과 같은 의미임
        System.out.println("num : " + num);

        num -= 5;  								// 13 num = num - 5;
        System.out.println("num : " + num);

        num *= 2;  								// 26 num값 2배 증가
        System.out.println("num : " + num);

        num /= 2;  								// 13 num값 2배 감소
        System.out.println("num : " + num);

        /* 주의! 산술 복합 대입연산자의 작성 순서에 주의해야 한다. */
        /* 산술 대입 연산자가 아닌 '-5'를 num에 대입한 것이다. */
        num =- 5;
        System.out.println("num : " + num);		// - 5
num : 12
num : 15
num : 18
num : 13
num : 26
num : 13
num : -5

증감연산자

증감 연산자 : 피연산자를 1 증가 or 감소시킬 때 사용하는 연산자

  • 피연산자가 하나이다.

증감연산자 종류

종류설명
++var피연산자의 값을 먼저 1을 증가시킨 후 다른 연산을 진행함
var++다른 연산을 먼저 진행하고 난 뒤 마지막에 피연산자의 값을 1 증가시킴
--var피연산자의 값을 먼저 1 감소 시킨 후 다른 연산을 진행함
var--다른 연산을 먼저 진행하고 난 뒤 마지막에 피연산자의 값을 1 감소시킴

비교 연산자

비교 연산자 : 피연산자 사이에서 상대적인 크기를 판단해 True or False 반환
True or False를 반환하는 연산자는 삼항연산자의 조건식이나 조건절에 많이 사용된다.

비교 연산자 종류

종류설명
==왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 true 다르면 false를 반환
!=왼쪽의 피연산자와 오른쪽의 피연산자가 다르면 true 같으면 false를 반환
>왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 true 아니면 false를 반환
>=왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 true 아니면 false를 반환
<왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 true 아니면 false를 반환
<=왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 true 아니면 false를 반환

정수형과 실수형의 비교 연산자는 크게 어려움이 없을 것이고, 문자형에 대해서 다뤄보자.

아스키 코드에서 나타내는 'A', 'a'는 각각 65, 97로 나타내게 돼 숫자로 나타내는 것과 같다.

        char ch1 = 'a';
        char ch2 = 'A';

        System.out.println("ch1과 ch2가 같은지 비교 : " + (ch1 == ch2));
        System.out.println("ch1과 ch2가 같지 않은지 비교 : " + (ch1 != ch2));
        System.out.println("ch1이 ch2보다 큰지 비교 : " + (ch1 > ch2));
        System.out.println("ch1이 ch2보다 크거나 같은지 비교 : " + (ch1 >= ch2));
        System.out.println("ch1이 ch2보다 작은지 비교 : " + (ch1 < ch2));
        System.out.println("ch1이 ch2보다 작은거나 같은지 비교 : " + (ch1 <= ch2));
ch1과 ch2가 같은지 비교 : false
ch1과 ch2가 같지 않은지 비교 : true
ch1이 ch2보다 큰지 비교 : true
ch1이 ch2보다 크거나 같은지 비교 : true
ch1이 ch2보다 작은지 비교 : false
ch1이 ch2보다 작은거나 같은지 비교 : false

논리형은 같은지 아닌지만 비교가 가능하다.


논리 연산자

  • 논리 연결 연산자
  • 논리 부정 연산자

논리 연결 연산자 : 2개의 피연산자를 가지는 이항 연산자, 연산자의 결합 방향은 왼쪽 -> 오른쪽이며 2개의 논리식을 판단해 참, 거짓을 판단한다.

논리 부정 연산자 : 피연산자가 하나인 단항 연산자, 피연산자의 결합 방향은 왼쪽 -> 오른쪽

논리 연산자의 종류

종류설명
&&두 개의 논리식 모두 참 일 경우 참을 반환, 둘 중 한 개라도 거짓인 경우 거짓을 반환하는 연산자이다.(AND)
!논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환한다.(NOT)

AND 연산과 OR 연산의 특징
논리식 && 논리식 : 앞의 결과가 false이면 뒤를 실행 안함
논리식 || 논리식 : 앞의 결과가 true이면 뒤를 실행 안함

        System.out.println(true && true);		// true
        System.out.println(true && false);		// false
        System.out.println(false && true);		// false
        System.out.println(false && false);		// false

        System.out.println(true || true);		// true
        System.out.println(true || false);		// true
        System.out.println(false || true);		// true
        System.out.println(false || false);		// false

        System.out.println(!true);				// false
        System.out.println(!false);				// true

위와 같이 활용하는건 아니고, 논리식과 연산자를 함께 사용한다.

        int num1 = 10;
        int num2 = 20;
        int num3 = 30;
        int num4 = 40;

        System.out.println(num1 < num2 && num3 < num4);     // true && true -> true
        System.out.println(num1 < num2 && num3 > num4);     // true && false -> false
        System.out.println(num1 > num2 && num3 < num4);     // false && true -> false
        System.out.println(num1 > num2 && num3 > num4);     // false && false -> false

삼항 연산자

(조건식) ? 참일 때 사용할 값1 : 거짓일 때 사용할 값2
위와 같은 형태로 반드시 결과가 true or false가 나오게끔 해야 한다.

        int num1 = 10;
        int num2 = 20;
        String result1 = (num1 > 0) ? "양수다." : "양수가 아니다.";
        String result2 = (num2 > 0) ? "양수다." : "양수가 아니다.";

        System.out.println("result1 = " + result1);
        System.out.println("result2 = " + result2);

num1 > 0 이면 "양수다.", num1 <]= 0 이면 "양수가 아니다."와 같이 참일 때 사용할 값, 거짓일 때 사용할 값을 나눠서 조건식을 세울 수 있다.

result1 = 양수다.
result2 = 양수다.

중첩 또한 가능하지만 권장하지는 않는다.

		int num3 = 0;
        int num4 = 1;
        int num5 = -1;
    String result3 = (num3 > 0) ? "양수다" : (num3 == 0) ? "0이다." : "음수다.";
    String result4 = (num4 > 0) ? "양수다" : (num4 == 0) ? "0이다." : "음수다.";
    String result5 = (num5 > 0) ? "양수다" : (num5 == 0) ? "0이다." : "음수다.";

    System.out.println("result3 = " + result3);
    System.out.println("result4 = " + result4);
    System.out.println("result5 = " + result5);
profile
백엔드 개발자 꿈나무

0개의 댓글