[스파르타 코딩] 연산자 - Java

김동현·2022년 8월 21일
0

💡산술연산자

int a = 10; int b = 5;

// 덧셈 연산자
System.out.println(a+b); // 출력값 15

// 뺄셈 연산자
System.out.println(a-b); // 출력값 5

// 곱셈 연산자
System.out.println(a*b); // 출력값 50

// 나누기 연산자
System.out.println(a/b); // 출력값 2

// 나머지 연산자
System.out.println(a%b); // 출력값 0

💡대입연산자

  • 하나의 코드로 생각해 결과 값들을 이어서 작성하였습니다.
int a = 10; int b = 5;

// 덧셈 
a += b; // a = a + b
System.out.println(a); // 출력값 15

// 뺄셈
a -= b; // a = a - b
System.out.println(a); // 출력값 10

// 곱셈
a *= b; // a = a * b
System.out.println(a); // 출력값 50

// 나누기 
a /= b; // a = a / b
System.out.println(a); // 출력값 10

// 나머지 
a %= b; // a = a % b
System.out.println(a); // 출력값 0

💡관계연산자

  • 일반적으로 우리가 수학시간에 배운 부등호로 boolean값을 반환한다.
int a = 10; int b = 5; int c = 10;

System.out.println(a > b); // 출력값 true

System.out.println(a >= b); // 출력값 true

System.out.println(a == b); // 출력값 false

System.out.println(a != b); // 출력값 true

System.out.println(a == c); // 출력값 true

System.out.println(a != c); // 출력값 false

💡논리연산자

연산자의미
&& (AND)둘 다 true이면 true 아니라면 false
ㅣㅣ (OR)둘 중에 하나라도 true이면 true
! (NOT)true에 붙으면 false, false에 붙으면 true
boolean a = true; boolean b = false;

// && (AND)
System.out.println(a && a); // 출력값 true
System.out.println(a && b); // 출력값 false
System.out.println(b && b); // 출력값 false

// || (OR)
System.out.println(a || a); // 출력값 true
System.out.println(a || b); // 출력값 true
System.out.println(b || b); // 출력값 false

// ! (NOT)
System.out.println(!a); // 출력값 false
System.out.println(!b); // 출력값 true

💡증감연산자

연산자의미
x++해당 연산을 수행한 후에 피연산자 값 1 증가
++x피연산자 값 1 증가 후 해당 연산 수행
x--해당 연산을 수행한 후에 피연산자 값 1 감소
--x피연산자 값 1 감소 후 해당 연산 수행
int a = 10;

// x++
// a++이 써있는 줄에서는 원래 a의 값이 출력되고 해당 연산이 끝나고 a의 값은 +1이 된 11이다.
System.out.println(a++) // 출력값 10 
System.out.println(a) // 출력값 11

int b = 10;

// ++x
// ++b가 쓰인 연산에서 +1이 된 채로 출력한다. 
System.out.println(++b) // 출력값 11 

💡비트 연산자

  • 논리 연산자와 연산하는 방법이 매우 비슷하지만 기호가 다르고 ^ (배타적 OR)이 추가된다.
연산자의미
& (AND)두 비트 모두 1일 경우에만 연산 결과가 1
ㅣ (OR)두 비트 중 하나만 1일 경우에만 연산결과가 1
^ (배타적 OR)두 비트중 하나는 1이고 다른 하나가 0일경우에만 연산결과가 1
~ (NOT)비트 반전(보수)

💡시프트(비트 이동)연산자

연산자의미
x<<yx의 각 비트를 y만큼 왼쪽으로 이동시킨다. (빈자리는 0으로 채워진다.)
x>>yx의 각 비트를 y만큼 오른쪽으로 이동시킨다. (빈자리는 x의 최상위 부호비트와 같은 값으로 채워진다.)
x>>>yx의 각 비트를 y만큼 오른쪽으로 이동시킨다. (빈자리는 0으로 채워진다.)

ex)
밑줄은 원래 있던 수, 색칠된 글씨는 추가된 수

2<<3
00000000 00000000 00000000 00000010 -> 2의 이진수
00000000 00000000 00000000 00010000
-> 2의 각 비트를 3만큼 왼쪽으로 이동

16>>3
00000000 00000000 00000000 00010000 -> 16의 이진수
00000000 00000000 00000000 00000010
-> 부호비트는 +를 의미 0(파란색 글씨)은 고정하고 오른쪽으로 세칸 옮겼으니 0 2개(빨간색 글씨) 추가

-16>>>3
11111111 11111111 11111111 11110000 -> -16의 이진수
00011111 11111111 11111111 11111110
-> -16의 부호비트는 1이지만 상관없이 빈자리에 0으로 채움


💡조건(삼항) 연산자

  • 조건식 ? 반환값1 : 반환값2
  • 물음표(?) 앞의 조건식에 따라 결괏값이 참(true)이면 반환값1을 반환하고, 결괏값이 거짓(false)이면 반환값2를 반환한다.
int num1 = 1; int num2 = 5;

// 조건이 거짓이므로 반환값2를 반환
int result = (num1 - num2 > 0) ? num1 : num2; 

System.out.println("두 정수 중 더 큰 수는 " + result + "이다.");
// 출력값 : 두 정수 중 더 큰 수는 5이다.
profile
오늘은 오늘

0개의 댓글