☕ [JAVA입문] Section 3. 연산자

왕햄휘·2024년 10월 31일
post-thumbnail

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음



☕ [실습] Operator1: 산술 연산자

int형 변수 ab를 선언한 뒤, 이를 통하여 +, -, *, /, % 연산을 수행한 결과를 확인하는 코드이다. 여기에서의 %나머지 연산자로, ab를 나눈 나머지의 값을 결괏값으로 출력하는 연산으로써 컴퓨터에서 매우 많이 활용되는 연산자 중 하나이다.

나누기 연산자의 경우, 현재 나누기 결과값을 담는 변수가 int형(정수형)이므로 소수점까지의 값을 담지 못한다. 따라서 5 / 2의 결과값은 2.5가 아닌 2가 된다.

참고로, 나누기 0과 같이 수학적으로 허용되지 않는 연산을 진행할 경우 에러가 발생하며 그대로 프로그램이 멈추게 된다. 예를 들어 위의 코드에서 변수 b의 값을 0으로 지정했을 경우, a / b라는 부분에서 오류가 발생하므로 곱하기 연산까지만 정상 진행되고 그 하단의 코드는 실행되지 않음을 알 수 있다.



☕ [실습] Operator2: 문자열 더하기

문자열과 문자열, 혹은 문자열과 숫자(정수)를 더하는 연산을 진행한 코드이다.

문자열과 문자열을 더한다면 하나의 문자열로써 결과가 출력되고, 문자열과 숫자를 더한다면 해당 숫자가 자동으로 문자열로 형변환되어 전체적인 문자열로 출력된다. 이처럼 문자열과 문자열이 아닌 자료형을 더하게 되면 대개 자동으로 문자열로 형변환되는 것을 알 수 있다.



☕ [실습] Operator3: 연산자 우선순위

컴퓨터의 연산자 우선순위는 실제 수학에서의 연산 순서와 같다고 보면 된다. 기본적으로 곱하기(*)와 나누기(/)가 우선되고, 그 다음으로 더하기(+)와 빼기(-) 순서로 진행된다.

만약 괄호(())를 사용할 경우, 기존의 우선순위보다 해당 연산이 최우선순위가 되어 연산이 진행된다.

💡 연산자 우선순위

  1. 괄호 ()
  2. 단항 연산자 ++, --, !, ~, new, (type)
  3. 산술 연산자 *, /, % 우선, 그 다음 +, -
  4. Shift 연산자 <<, >>, >>>
  5. 비교 연산자 <, <=, >, >=, instanceof
  6. 등식 연산자 ==, !=
  7. 비트 연산자 &, ^, |
  8. 논리 연산자 &&, ||
  9. 삼항 연산자 ? :
  10. 대입 연산자 =, +=, -=, *=, /=, %=



☕ [실습] Operator4: 연산자 우선순위 2

위 코드의 sum3sum4는 결과적으로 동일하고 연산 순서 또한 동일하다. 차이점은 프로그래머가 괄호를 쳤느냐 치지 않았느냐다. 별 거 아닌 것처럼 보이지만, sum3의 식보다는 sum4의 식이 한 눈에 보았을 때 어떤 순서로 연산을 해야하는지 알아보기 쉽다는 장점이 있다.

식이 조금 복잡해지기 시작하거나 한 눈에 알아보기 힘들 때는 이처럼 괄호를 사용하는 등 코드를 조금 추가하여 알아보기 쉽게 처리해두는 것이 좋다.



☕ [실습] OperatorAdd1: 증감 연산자

이미 선언한 변수 a의 값을 바꾸려면, 기존의 a 값을 변경한 후 해당 값을 다시 변수 a에 저장해야 한다. 해당 과정을 코드로 옮기면 a = a + 1이 된다. 새로운 값을 할당하고 싶다면 a = 10처럼 사용해도 괜찮지만, 기존의 값에서 빼거나 더하는 등 값을 바꾸고 싶은 것이라면 위와 같은 과정을 거쳐야 한다.

해당 과정을 증감 연산자를 사용하여 간단하게 표현하면 ++a가 되며, ++aa = a + 1과 같다.



☕ [실습] OperatorAdd2: 전위, 후위 증감 연산자

변수 a를 예로 들었을 때, 전위 증감 연산자는 ++a가 되고 후위 증감 연산자는 a++가 된다. 이것은 기호의 위치에 따라 값을 연산 이전에 증감시킬지 연산 이후에 증감시킬지를 나타낸다.

예를 들어, b = ++a;라는 식은 a = a + 1;, b = a;라는 식으로 대체 가능하고
b = a++;라는 식은 b = a;, a = a + 1;라는 식으로 대체가 가능하다.

따라서 증감 연산자를 전위로 사용하느냐, 후위에 사용하느냐에 따라서 위의 코드처럼 출력값이 달라지는 것을 확인할 수 있다. 다만 b = a++;가 아닌 a++;처럼 증감 연산자가 단독으로 사용되는 경우에는 전위이든 후위이든 값이 동일하게 출력된다는 특징이 있다.



☕ [실습] Comp1: 비교 연산자

==, <, > 등 크기/값을 비교하는 연산자를 비교 연산자라고 하며, 해당 출력값은 항상 boolean 자료형의 값인 falsetrue로 출력된다. 따라서 해당 연산 결과를 위의 코드처럼 boolean 값에 담을 수도 있다.

참고로, =은 대입이고 ==는 같다는 뜻이므로 둘은 다른 연산자다.



☕ [실습] Comp2: 문자열 비교 연산

문자열을 비교할 때는 ==가 아닌 equals() 함수를 사용해야 한다. ==를 사용할 경우 대개 올바른 값이 나오지만, 종종 의도하지 않은 혹은 틀린 결괏값이 나타날 수 있다.

해당 이유에 대해서는 추후 다룬다.



☕ [실습] Logical1: 논리 연산자

  • &&(그리고) : 두 피연산자가 모두 참이면 참, 둘 중 하나라도 거짓이면 거짓 반환

  • ||(또는) : 두 피연산자 중 하나라도 참이면 참, 둘 다 거짓이면 거짓 반환

  • !(부정) : 피연산자의 논리적 부정을 반환, 즉 참이면 거짓을, 거짓이면 참을 반환



☕ [실습] Logical2: 논리 연산자 활용

위와 같은 방법으로 논리 연산자를 활용할 수 있다.
참고로 a > 10으로 표기하든 10 < a으로 표기하든 상관없다.



☕ [실습] Assign1: 축약(복합) 대입 연산자

축약(복합) 대입 연산자란 연산과 대입을 한 번에 축약해서 처리하는 것으로, 종류로는 +=, -=, *=, /=, %= 등이 있다.

i = i + 3i += 3
i = i * 4i *= 4



🥐 [문제풀이] OperationEx1: int와 평균

다음과 같은 작업을 수행하는 프로그램을 작성하세요.

  1. num1, num2, num3라는 이름의 세 개의 int 변수를 선언하고, 각각 10, 20, 30으로 초기화하세요.
  2. 세 변수의 합을 계산하고, 그 결과를 sum이라는 이름의 int 변수에 저장하세요.
  3. 세 변수의 평균을 계산하고, 그 결과를 average라는 이름의 int 변수에 저장하세요. 평균 계산 시 소수점 이하의 결과는 버림하세요.
  4. sumaverage 변수의 값을 출력하세요.

int형 변수 num1num2, num3을 한 번에 선언 및 초기화하고 이어서 바로 sumaverage 변수 또한 선언 및 초기화하였다. JAVA에서는 int형 변수라면 소수점 이하의 결과값은 자동으로 버림 처리하기에 별도의 과정을 따로 구현하진 않았다. (추가적으로 해당 값의 평균에서는 소수점이 나오지 않는다.)

최종적으로 System.out.println() 함수를 이용하여 sumaverage 값을 출력한다.



🥐 [문제풀이] OperationEx2: double과 평균

다음 double 변수들을 선언하고 그 합과 평균을 출력하는 프로그램을 작성하세요.

double val1 = 1.5;
double val2 = 2.5;
double val3 = 3.5;

OperationEx1 문제와 동일하며, 자료형만 double로 바꿔주면 되는 문제이다.



🥐 [문제풀이] OperationEx3: 합격 범위

  • int형 변수 score를 선언하세요.
  • score가 80점 이상이고, 100점 이하이면 true를 출력하고, 아니면 false를 출력하세요.

값을 입력받는 함수는 따로 학습하지 않았기에 score 변수를 임의의 값으로 초기화한 뒤 문제 풀이를 진행하였다.

아직 조건문을 배우지 않았기에 boolean형 변수를 선언하여 해당 변수에서 score의 값의 범위를 판단하여 true 혹은 false를 결괏값으로 도출하도록 프로그램을 작성하였다.



🐾 여담 . . .


참 현생이 뜻대로 되는거 하나 없내요

profile
✏ 코딱지 (개발)자(였던것)의 우당탕탕 성장일지

0개의 댓글