저번 시간에는 기본적인 변수를 배웠으므로, 이번엔 강의 커리큘럼에 따라 섹션4의 연산자를 들어갈 것이다. ㅊ씨가 자바를 시작하는 나에게 String 타입의 특징을 이해한다면 자바 공부가 훨씬 쉬워진다며 여러 설명을 가미해주셨는데, 간단히 풀어말하면 int나 char은 원시 자료형으로 따로 이들에서 파생되는 메소드(객체의 함수)가 없다. 그러나 String은 객체로, String.length와 같은 메소드가 지원된다. 아직까진 완전히 이해가 되진 않는다. 이를 보기 좋게 정리해놓은 블로그로는 인파님의 블로그가 있는데, 혹시 모를 문제를 대비해 링크를 따로 삽입하진 않겠다.
연산자란, 더하기 빼기 나누기 곱하기와 같은 계산을 수행하는 기호를 연산자라고 한다. 나는 실무에서 주로 다루는 연산자를 위주로 공부할 것이다. 자바에서의 연산자 종류는 산술 연산자, 증감 연산자, 비교 연산자, 논리 연산자, 대입 연산자, 삼항 연산자가 있다. 이는 다른 언어들과 별다른 차이가 없어보인다. 그럼 코드를 작성해 보겠다.
산술 연산자의 덧셈, 뺄셈, 곱셈, 나눗셈이다. 이때 a에는 5, b에는 2를 할당했는데 왜 나눗셈의 출력값이 2가 나오느냐, 바로 정수형에 나눈 값을 넣고 출력했기 때문이다. int형끼리의 계산은 정수형만 표현이 가능하므로 소숫점의 숫자가 제거된다. 이밖에도 나머지 연산이 있다. 나머지 연산은 '%'기호를 사용하여 계산할 수 있다. 만약 위 코드에서 int mod = a % b;를 쓴 후 mod값을 출력한다면 1이 나올 것이다.
int끼리의 나눗셈에 소수가 삭제된 것을 보고, double로 a와 b를 설정한 뒤 int에 넣어 나누어 보려고 했다. 그러나 사진처럼 오류가 뜨는 것을 보 아마 처음부터 하나의 변수타입만 사용 가능한 것이 아닐까 싶다. 또한 0으로 나누려는 시도 역시 by zero라며 프로그램 오류가 생긴다. 0으로 나누는 것을 수학에서 허용하지 않기 때문에 코딩에서도 허용하지 않는 것이다. 이번엔 문자열과 문자열을 더해보겠다. 자바에서는 특별하게 문자열끼리의 덧셈이 가능하다.
문자열과 숫자 더하기1에서나 문자열과 숫자 더하기2에서나, 아무리 int로 타입을 지정해준다 할지라도 자바는 알아서 문자열과 숫자를 더하는 코드를 읽는 순간 숫자를 문자열로 바꾸어 출력해버린다. 둘이 더해진 새로운 문자열이 생기는 것. 문자열에 더하는 것 전부 문자열이 된다.
연산자 우선순위는 기초수학에서 우선되는 계산이 무엇인지만 알면 굉장히 이해하기 쉽다. 괄호가 가장 높고, 그 다음에 단항(++, --, ! 등), 그리고 산술 연산자가 놓인다. 김영한 강사님의 말씀에 따르면 절대 외우지 말라고 하신다... (딱 두 가지만 기억하라고 한다. 상식선에서 우선순위를 사용하고, 애매하면 괄호()를 사용하자는 것.)
++a와 마찬가지로 값을 하나 감소하고 싶을 땐 --a와 같이 표현하면 된다. 증감 연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 연산이 수행되는 시점이 달라진다. ++a는 증감 연산자를 피연산자 앞에 둔 것으로 전위(prefix) 증감 연산자라고 한다. a++는 증감 연산자를 피연산자 뒤에 둔 것으로 후위(postfix) 증감 연산자라 한다.
증감 연산자를 단독으로 사용하는 경우에는 다른 연산이 없기 때문에, 본인의 값만 증가하여 전위이든 후위이든 같은 결과가 나온다. 이제 비교 연산자에 대하여 알아보자.
비교 연산자는 크게 특별한 게 없다. 다만, 자바에서 문자열이 같은지 비교할 때엔 '=='이 아닌 '.equals()' 메서드를 사용해야 한다.
논리 연산자는 boolean형인 true, false를 비교하는데 사용한다. 코드로 간단히 확인해보자.
마지막으로 대입 연산자를 알아보겠다. 이는 값을 변수에 할당하는 연산자로, 이미 int a = 1 과 같은 예시처럼 사용하고 있었던 연산자이다. 이때, 우리는 산술 연산자와 대입 연산자를 한 번에 축약해서 사용할 수 있다! 이것을 축약(복합) 대입 연산자라고 한다.
축약 연산자의 종류는 다음과 같다: +=, -=, *=, /=, %= 예제 코드를 통해 확인해보겠다.
연산자는 이걸로 끝이다. 연산자에 대한 문제를 풀어보도록 하자. (정말 특별할 게 없는 파트다.)
문제1: 다음과 같은 작업을 수행하는 프로그램을 작성하세요.
클래스 이름은 OperationEx1라고 적어주세요.
1. num1, num2, num3이라는 이름의 세 개의 int변수를 선언하고, 각각 10, 20, 30으로 초기화하세요.
2. 세 변수의 합을 계산하고, 그 결과를 sum이라는 이름의 int 변수에 저장하세요.
3. 세 변수의 평균을 계산하고, 그 결과를 average라는 이름의 int 변수의 저장하세요. 평균 계산 시 소수점 이하의 결과는 버리세요.
4. sum과 average 변수의 값을 출력합니다.
문제3: 다음과 같은 작업을 수행하는 프로그램을 작성하세요.
클래스 이름은 OperationEx3
1. int형 변수 score를 선언하세요.
2. score가 80점 이상이고, 100점 이하면 true를 출력하고 아니면 false를 출력하세요.
이번에도 느낀 거지만 나는 강의를 들을 때보다 직접 문제를 풀 때가 훨씬 더 재밌다. 이론은 항상 지루하고, 마치 다 이해한 것처럼 느껴지기 때문에 강사님께서 말씀하듯 코딩은 정말 실제로 해보는 게 전부인 것 같네. 다음 섹션은 조건문이다.
'Study > Java' 카테고리의 다른 글
자바 스터디 기록 [3] (조건문) (0) | 2025.03.02 |
---|---|
자바 스터디 기록 [1] (헬로우 월드부터 변수까지) (0) | 2025.01.14 |