프로그래밍

[자바 기초] day01 : 연산자 본문

자바/자바 기초

[자바 기초] day01 : 연산자

시케 2023. 5. 3. 13:29
728x90
반응형

2023.05.02.화

연산자

- 데이터를 처리하여 결과를 산출하는 것을 연산이라고 한다

- 이 연산에 사용되는 표시, 기호를 연산자라고 한다

- 연산되는 데이터는 피연산자라고 한다

 

대입연산자

=, *=, /=, %=, +=, -=

 

변수공간 = 값;
 값을 변수공간에 저장한다
 : 일반적으로 대입 연산자는 우선순위가 낮은편이다.

대입연산자(=)와 비교연산자(==)를 헷갈리지 않도록 주의

 

a*=b는 a=a*b와 같다

a*=b a = a*b
a/=b a = a/b
a%=b a = a%b
a+=b a = a+b
a-=b a = a-b

 

산술연산자

+, -, *, /, %

 

순서대로 더하기, 빼기, 곱하기, 나누기(몫), 나머지

 

/ 는 그냥 나누는 것이 아닌 몫을 구하는 연산자이다

int a = 10;
System.out.println(a/3); //출력값: 3


소수점뒤의 value를 버림하여 3만 저장된다
즉 데이터 손실이 발생할 수 있다
%는 나머지 연산자이다

 

증감연산자

1) 전위 증감연산자
++data;
--data;
우선순위가 매우 높음


2) 후위 증감연산자
data++;
data--;
우선순위가 매우 낮음


모두 1씩 증가/감소 시켜주는 연산자이다

증감을 먼저 하는지 나중에 하는지 차이가 있다

int a = 1;
int b = 7;
res = ++a + b--;
System.out.println(res); //출력값: 9 (2+7 이때 a= 2, b=6)

 

비교연산자

>, <, >=, <=, ==, !=

 


코드에서 ! NOT(부정)
연산자 수행결과를 T/F(진위형,boolean)으로 반환

 

논리연산자

&&, ||, !

 

&&

AND 연산자는 두 조건을 동시에 만족시켜야 한다(둘다 참)

 

||

OR 연산자는 두 조건 중에 하나만 만족시키면 된다(둘 중에 하나는 참)
 

!

NOT(부정) 연산자 붙이면 부정(반대)가 된다

 

 

삼항(조건)연산자

조건 ? 참 : 거짓

 

앞의 조건이 참이면 첫번째 값이 거짓이면 두번째 값이 출력

int a = 10;
int b = 5;
int res = a>b ? a : b;
System.out.println("둘 중 큰 값은 "+res); //출력: 둘 중 큰 값은 10

작성할때 다음과 같이 작성하지 않도록 주의

int a = 10;
int b = 5;
int res = a>b ? b : a;
System.out.println("둘 중 큰 값은 "+res); //출력: 둘 중 큰 값은 5

시프트(shift) 연산자

>>, <<, >>>

 

쉬프트 연산자는 bit 단위의 연산을 하며 오른쪽 또는 왼쪽으로 이동하여 값에 대화를 일으킨다

>> bit값을 오른쪽으로 이동 (빈 자리는 부호값으로 대입) 한다
<< bit값을 왼쪽으로 이동 (빈 자리는 0으로 대입) 한다
>>> bit값을 오른쪽으로 이동 (빈 자리는 0으로 대입) 한다
// 쉬프트 연산자 >>, <<, >>>        
int x = 64;   // -64;
int n = 2;        
System.out.println("x >> n = " + (x >> n)); // 나눗셈, (x / 2^n)
System.out.println("x << n = " + (x << n)); // 곱셈,  (x * 2^n)
System.out.println("x >>> n = " + (x >>> n));

System.out.println("x >> 34 = " + (x >> 34));    // x / 2^(n % 32)
System.out.println("x << 34 = " + (x << 34));
System.out.println("x >>> 34 = " + (x >>> 34));

 

비트(bit) 연산자

&, |, ^, ~

 

연산의 대상이 되는 값들을 내부적으로 bit단위로 변경한 후 연산을 수행하는 연산자이다

& 비트 단위의 AND
| 비트 단위의 OR
^ XOR (배타적 OR)
~ 단항 연산자 이며, 비트를 반전한다. 0은 1로 1은 0으로 만듬

 

x y x | y x & y x ^ y
0 0 0 0 0
0 1 1 0 1
1 0 1 0 1
1 1 1 1 0
// 비트 연산자 &, |, ^, ~
int num = 170;       
System.out.println("num & 15 = " + (num & 15)); // num & 15 = 10 , mask 연산
System.out.println("num | 15 = " + (num | 15)); // num | 15 = 63, 특정 비트를 1로 셋팅
System.out.println("num ^ 15 = " + (num ^ 15)); // num ^ 15 = 58, 특정 비트를 반전시킬 때.
System.out.println("~num = " + (~num)); // ~num , 비트 반전, 1의 보수 표현

연산자 우선순위

보통의 상식과 같은 순서대로 되어있다
에러가 나지 않았고 로직에 문제가 없을 것 같을 때 확인해보는것이 좋다

종류 연산자 우선순위
증감 연산자 ++, -- 1
산술 +, -, *, /, % 2
시프트 >>, <<, >>> 3
비교 >, <. >=, <=, ==, != 4
비트 &, |, ^, ~ ~만 1순위, 나머지는 5순위
논리 &&, ||, ! !만 1순위 나머지는 6순위
조건(삼항)연산자 ?, : 7
대입 =, *=, /=, %=, +=, -= 8

 

깃허브

https://github.com/jihyean/Java/tree/main/day01/src

 

GitHub - jihyean/Java

Contribute to jihyean/Java development by creating an account on GitHub.

github.com

 

 

 

728x90
반응형
Comments