티스토리 뷰
반응형
1. 연산자 우선순위
- 식에 여러 개의 연산자가 있는 경우 우선순위가 높은 연산자를 먼저 처리한다.
- 우선순위가 동일하면 왼쪽에서 오른쪽으로 처리한다.
높음 | | | | | | | | | | | | | | V 낮음 |
++(postfix), --(postfix) | 증감 연산자(후위형) |
+(양수부호), -(음수부호), (prefix)++, (prefix)--, ~, ! | 양수부호, 음수부호, 증감 연산자(전위형), 부정, | |
형변환(type casting) | ||
*, /, % | 곱셈, 나눗셈, 나머지 | |
+(덧셈), -(뺄셈) | 덧셈, 뺄셈 | |
<<, >>, >>> | 비트단위 쉬프트 연산자 | |
<>, <=, >=, instanceof | 관계연산자 | |
& (비트 AND) | 비트 연산자 | |
^ (비트 XOR) | 비트 연산자 | |
&& (논리 AND) | 논리곱 연산자 | |
|| (논리OR) | 논리합 연산자 | |
? : (조건) | 조건 연산자 | |
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= | 대입연산자, 할당 연산자 |
2. 산술연산자
- +(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %(나머지)
- 나머지는 홀수인지 짝수인지 구분할 때 유용하게 사용
연산자 | 의미 | 예 | 결과 |
+ | 더하기 | 25.1 + 3.8 | 28.9 |
- | 빼기 | 3 - 5 | -2 |
* | 곱하기 | 3.5 * 4.0 | 14.0 |
/ | 나누기 | 5/2 | 2 |
% | 나머지 | 5%2 | 1 |
산술연산자 예제
import java.util.Scanner;
public class Ex01 {
public static void main(String[] args) {
int num1 = 10;
int num2 = 7;
System.out.println(num1 / (double)num2);
System.out.println(1.0 * num1 / num2);
}
}
3. 증감연산자
- 피연산자의 앞 또는 뒤에 붙어 값을 1 증가시키거나 1 감소시킨다.
- 연산자가 변수 앞에 붙을 때 전위(prefix) 연산자라 부르고,
연산자가 변수 뒤에 붙을 때 후위(postfix) 연산자라 부른다.
연산자 | 내용 | 연산자 | 내용 |
a++ | a를 1증가하고 증가 전의 값 반환 | ++a | a를 1증가하고 증가된 값 반환 |
a-- | a를 1감소하고 감소 전의 값 반환 | --a | a를 1감소하고 감소된 값 반환 |
증간연산자 예제
public class Ex02 {
public static void main(String[] args) {
//증감연산자 예제
System.out.println("==== 증감연산자 =====");
int cnt = 10;
System.out.println(cnt); //10
cnt++;
System.out.println(cnt); //11
cnt--;
System.out.println(cnt); //10
System.out.println(cnt++); //10
System.out.println(cnt); //11
System.out.println(++cnt); //12
}
}
public class Ex02 {
public static void main(String[] args) {
//증감연산자 예제2
System.out.println("==== 증감연산자 =====");
int i = 3;
System.out.println(++i);
System.out.println(i++);
System.out.println(i);
}
}
public class Ex02 {
public static void main(String[] args) {
//증감연산자 예제
System.out.println("==== 증감연산자 =====");
int hap = 0, j = 0, k = 0, l = 0;
hap = ++j + k++ + ++l;
System.out.println(hap + "," + j + "," + k + "," + l);
}
}
4. 대입연산자
- 연산자의 오른쪽 식의 결과를 변수에 대입한다
대입 연산자 | 내용 | 대입 연산자 | 내용 |
a = b | b의 값을 a에 대입 | 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와 동일 | 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와 동일 |
대입연산자 예제
public class Ex03 {
public static void main(String[] args) {
// 대입 연산자 예제
int a = 3, b = 3, c = 3;
a += 3; // a = a+3 =6
b *= 3; // b = b*3 =6
c %= 2; // c = c%2 =6
System.out.println("a=" + a + ", b=" + b + ", c=" + c);
}
}
증감연산자와 대입연산자 예제
public class Ex03 {
public static void main(String[] args) {
int a = 3, b = 4, c = 5, d = 5;
a += 6 + --b;
d *= 7 - c++;
System.out.println("a=" + a + ", b=" + b +", c=" + c + ", d=" + d);
}
}
5. 비교연산자와 논리연산자
- 비교연산자는 두 개의 피연산자를 비교하여 true 또는 false의 논리 값을 내는 연산자
- 논리연산자는 논리 값을 대상으로 AND, OR, XOR, NOT의 논리 연산을 하여 true 또는 false의 논리 값을 내는 연산자
연산자 | 내용 | 예제 | 결과 |
a < b | a가 b보다 작으면 true | 3<5 | ture |
a > b | a가 b보다 크면 true | 3>5 | false |
a <= b | a가 b보다 작거나 같으면 true | 1<=0 | false |
a >= b | a가 b보다 크거나 같으면true | 10>=10 | ture |
a == b | a가 b보다 같으면 true | 1==3 | false |
a != b | a가 b보다 같지 않으면 true | 1!=3 | ture |
연산자 | 내용 | 예제 | 결과 |
!a | a가 true 이면 false, false이면 true | !(3<5) | false |
a || b | a와 b의 OR 연산 a와 b 모두 false인 경우에만 false |
(3>5)||(1==1) | true |
a && b | a와 b의 AND 연산 a와 b 모두 true인 경우에만 true |
(3<5)&&(1==1) | true |
a ^ b | a와 b의 XOR 연산 a와 b 가 서로 다를 때 true |
(3>5)^(1==1) | true |
6. 삼항연산자
condition ? opr1 : opr2
(조건문)?(실행문1):(실행문2)
- 3개의 피 연산자로 구성되어 삼항연산자라한다.
- 앞의 조건문이 true이면 첫번째 결과값(opr1)이 되고, false이면 두번째 결과 값(opr2)이 된다.
삼항연산자 예제
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
//두 수의 차 구하기
Scanner scan = new Scanner(System.in);
System.out.println("첫 번째 정수 입력 : ");
int num1 = scan.nextInt();
System.out.println("두 번째 정수 입력 : ");
int num2 = scan.nextInt();
int result = num1<num2 ? num2 - num1 : num1 - num2;
System.out.println("두 수의 차 : " + result);
}
}
7. 비트연산자
비트란?
- 2진수의 한자리를 비트(bit)라 하고, 8개의 비트를 바이트(byte)라 한다.
- 예를 들어, 십진수 10을 바이트로 표현하면 00001010이다.
0 0 0 0 1 0 1 0 ⇒ 바이트
↑
비트
비트 논리연산
- 피연산자의 각 비트끼리 AND, OR, XOR, NOR의 논리연산을 한다.
연산자 | 별칭 | 내용 | 예제 |
|
a & b |
AND 연산 | 두 비트 모두 1이면 1, 그렇지 않으면 0 | & | 01101010 11001101 |
결과 | 01001000 | |||
a | b |
OR 연산 | 두 비트 모두 0이면 0, 그렇지 않으면 1 | | | 01101010 11001101 |
결과 | 11101111 | |||
a ^ b |
XOR 연산 | 두 비트가 다르면 1, 같으면 0 | ^ | 01101010 11001101 |
결과 | 10100111 | |||
~ a |
NOT 연산 | 1을 0으로, 0을 1로 변환 | ~ | 01101010 |
결과 | 10010101 |
비트 시프트연산
- 새로운 비트를 오른쪽이나 왼쪽 끝에 삽입하면서 비트의 자리를 이동시키는 연산
시프트 연산자 | 내용 |
a >> b | a의 각 비트를 오른쪽으로 b번 시프트한다. 최상위 비트의 빈자리는 시프트 전의 최상위 비트로 다시 채운다. |
a >>> b | a의 각 비트를 오른쪽으로 b번 시프트한다. 최상위 비트의 빈자리는 항상 0으로 채운다 |
a << b | a의 각 비트를 왼쪽으로 b번 시프트한다. 최하위 비트의 빈자리는 항상 0으로 채운다. |
- 비트 시프트연산 예제
byte a = 20; //20
byte b = (byte)(a >> 2); //5
a | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 최상위 비트로 채움 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | |
b | 0 최상위 비트로 채움 |
0 | 0 | 0 | 0 | 1 | 0 | 1 |
byte a = 20; //20
byte b = (byte)(a >>> 2); //5
a | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 빈자리는 0으로 채움 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | |
b | 0 빈자리는 0으로 채움 |
0 | 0 | 0 | 0 | 1 | 0 | 1 |
byte a = 5; //5
byte b = (byte)(a<<2); //20
a | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 빈자리는 0으로 채움 |
|
b | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 빈자리는 0으로 채움 |
반응형
'JAVA' 카테고리의 다른 글
[Java] 반복문(for문, while문, do-while문) (0) | 2022.03.12 |
---|---|
[Java] 조건문(if문, if-else, switch-case) (0) | 2022.03.11 |
[Java] Scanner를 이용한 키 입력 (0) | 2022.03.08 |
[Java] 변수와 자료형, 형변환 (0) | 2022.03.07 |
[Java]자바 소스 코드와 컴파일 (0) | 2022.03.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- linux
- MSA
- msa전환
- jdk설치
- git계정여러개
- 오블완
- smart tomcat
- 파이썬
- 객체
- java
- ssh-key
- 메소드
- 폴더개수
- 리눅스
- amazon eventbridge
- 티스토리챌린지
- 오버로딩
- 멀티계정
- the given id must not be null
- 다형성
- 자바
- git계정
- 명령어
- spring
- springboot
- eclipse
- 이클립스
- 생성자
- 모놀리식vsmsa
- 상속
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함