이전에 데이터 타입에 대한 이야기가 있으나 c언어와 다를바가 없기 때문에 연산자로 바로 넘어왔다.
연산자(Operators)는 총 다섯가지로 나뉜다.
1. 산술 연산자
2. 대입 연산자
3. 비교 연산자
4. 논리 연산자
5. 비트 연산자
이는 한번 실제로 사용해보면서,, 알아가보자
<산술 연산자>
산술 연산자는 익히 아는 사칙연산이다.
public static void main(String[] args) {
int added = 100 + 200;
int subtracted = 500 - 200;
double divided = 100 / 3;
int multiplied = 10 * 20;
System.out.println("덧셈 : 100 + 200 = " + added);
System.out.println("뺄셈 : 500 - 200 = " + subtracted);
System.out.println("나눗셈 : 100 / 3 = " + multiplied);
System.out.println("곱셈 : 10 * 20 = " + divided);
int 몫 = 100 / 3;
int 나머지 = 100 % 3;
System.out.println("몫 : 100 / 3 = " + 몫);
System.out.println("나머지 : 100 / 3 = " + 나머지);
++added;
--subtracted;
System.out.println("증가 : ++added = " + added);
System.out.println("감소 : --subtracted = " + subtracted);
}
덧셈, 뺄셈, 곱셈, 나눗셈과 나머지를 구하는 모듈러(%) 연산자로 구분된다.
++, -- 를 붙이면 값에 1씩 증가, 감소한 값을 확인할 수 있다.
<대입 연산자>
대입 연산자란 변수를 정의할 때 사용한 연산자와 동일하며 어떤 변수에 값을 대입하는 것을 할당이라고 한다.
double v = 100;
v+=3; //덧셈
System.out.println("v += 3: " + v);
v-=3; //뺄셈
System.out.println("v -= 3: " + v);
v*=3; //곱셈
System.out.println("v *= 3: " + v);
v/=3; //나눗셈
System.out.println("v /= 3: " + v);
v%=3; //모듈러
System.out.println("v %= 3: " + v);
처음부터 보자면, +, - 는 오른쪽의 v값에 왼쪽의 3을 더하거나 빼서 오른쪽의 v값에 저장하는 것이고,
*, /, % 연산자는 오른쪽의 값에 왼쪽의 3을 곱하거나 나누거나 나머지값을 v값에 저장하는 방식이다.
<비교 연산자>
두 값이 큰지 작은지 같은지 다른지 등을 비교하는 연산자이다.
int a = 100;
int b = 100;
int c = 200;
int d = 90;
System.out.println("a,b는 같다? " + (a == b));
System.out.println("a,c는 다르다? " + (a != c));
System.out.println("c는 a보다 크다? " + (c > a));
System.out.println("a는 d이상이다? " + (a >= d));
값을 비교한 결과이다.
같은지 비교할 때는 "==" 을 사용하고, 다른지 비교할 때는 "!=" 를 사용하며
이상, 이하를 비교할 시, ">=", "<=" 연산자로 확인할 수 있다.
<논리 연산자>
참, 거짓을 확인할 수 있다.
int num = 4;
boolean isMiddle = 3 < num && num < 5;
boolean isNaturalNumber = num > 0 || num == 0;
boolean isPositive = !( num < 0 );
System.out.println("num은 3보다 크고 5보다 작다? " + isMiddle);
System.out.println("num은 자연수이다? " + isNaturalNumber);
System.out.println("num은 양수이다? " + isPositive);
1. isMiddle의 "&&"연산은 오른쪽 비교와 왼쪽 비교 모두가 맞다면 true값을 내는 AND 연산이다.
2. isNaturalNumber의 "||"연산은 오른쪽과 왼쪽 비교 중 하나라도 맞다면 true값을 내는 OR 연산이다.
3. isPositive의 "!"연산은 맞는 값이라면 faulse를, 틀린 값이라면 true를 역반환하는 연산이다.
<비트 연산자>
비트 연산자에는 여러가지가 있지만 해당 코드에서는 비트 논리 연산자인 &, | 을 보여준다.
int e = 0x0A;
int mask1 = 0x01;
int mask2 = 0x02;
System.out.println("16진수 e의 첫 번째 자리수는? " +(e & mask1));
System.out.println("16진수 e의 두 번째 자리수는? " +(e & mask2));
System.out.println("7 OR 16 = " +(7 | 16));
System.out.println("8 OR 15 = " +(8 | 16));
이를 이해하기 위해서는 2진수, 8진수, 16진수를 먼저 학습할 필요가 있다.
비트 연산은 모든 수를 2진수로 바꿔서 실행된다.
변수 e의 값은 현재 2진수로 1010이고,
mask1은 2진수로 1, mask2는 2진수로 10이다.
&(AND)연산은 두 숫자를 두고 같은 자리에 둘다 1일 때 1로 나오고 나머지는 0으로 나오는 연산이다.
e와 mask1을 AND 연산을 한다면
1010
0001
이므로 0000으로 나오게 되어 10진수로 0이 된다.
e와 mask2을 AND 연산을 한다면
1010
0010
이므로 0010으로 나오게 되어 10진수로 2가 된다.
OR 연산은 0과 0이면 0이 나오고 0과 1이면 1, 1과 1이면 1이 나오는 연산이다.
둘다 0인 경우에만 0이 나온다.
위의 문제에서 7은 2진수로 0111, 16은 10000으로,
00111
10000
이므로 10111으로 나오게 되어 10진수로 23이 된다.
8은 1000으로,
01000
10000
이므로 11000으로 나오게 되어 10진수로 24가 된다.
'java 공부 > 코딩은 처음이라 with 자바' 카테고리의 다른 글
#자바_6.if문_제어문 (0) | 2024.03.08 |
---|---|
#자바_5.for문_제어문 (0) | 2024.03.08 |
#자바_4. 배열_자바 언어 기본 (0) | 2024.03.08 |
#자바_3. 데이터 입출력_자바 언어 기본 (0) | 2024.03.06 |
#자바_1. 변수와 상수_자바 언어 기본 (0) | 2024.02.29 |