● 연산자
- 기능이 있는 특수문자
● 연산자의 우선순위
- 최우선 연산자
- 단항 연산자
- 산술 연산자
- 쉬프트 연산자
- 관계 연산자
- 논리 연산자
- 삼항 연산자
- 대입 연산자
● 연산자의 결합성
- 하나의 수식에 동일한 연산자가 여러 개 사용되면 알맞은 방향으로 결합되어 연산되는 성질
● 비트 연산
1. 논리 연산자
- & (AND, 논리곱) : A & B, 두 비트 모두 1이면 1
- | (OR, 논리합) : A | B, 두 비트 중 하나라도 1이면 1
- ^ (XOR, 배타논리합) : A ^ B, 두 비트가 서로 다르면 1
2. 단항 연산자
- ~ (NOT, 논리부정) : ~A, 0을 1로, 1을 0으로 변경, ~a = -a - 1
※ 부호비트
- 비트의 최상위 비트를 부호비트로 사용하고, 0은 양수, 1은 음수를 의미한다.
3. 쉬프트 연산자
- << (LEFT SHIFT, 좌쉬프트) : A << B, A를 B만큼 좌로 이동
- >> (RIGHT SHIFT, 우쉬프트) : A >> B, A를 B만큼 우로 이동
※ 비트가 넘어가면 잘리고, 빈 칸은 0으로 채워진다.(음수는 1로 채워진다.)
● 조건식
- 결과가 참 또는 거짓, 둘 중 하나가 나오는 식
- 참 또는 거짓 값
● 참과 거짓 값
- 참 : true
- 거짓 : false
● 논리형
![](https://blog.kakaocdn.net/dn/c36nXR/btrtH0FfhqD/KbYuLDrbgnGs7cDomijUW1/img.png)
● 조건식에서 사용되는 연산자
1. 관계 연산자
- == : 같다
- != : 같지 않다
- >, < : 초과, 미만
- >=, <= : 이상, 이하
2. 논리 연산자
- 두 개 이상의 조건식을 연결해줄 때 사용한다.
- && (AND) : A && B, 두 조건식이 모두 참일 때 참
- || (OR) : A || B, 두 조건식 중 하나라도 참이면 참
3. 단항 연산자
- ! (NOT) : !A, 조건식이 참이면 거짓으로, 거짓이면 참으로 변경
4. 삼항 연산자
- 조건식 ? 참 : 거짓
(ex) int result = 10 ? 10 > 9 : 10 < 9;
→ 단, 참과 거짓 자리에는 값만 작성할 수 있다.
● 삼항 연산자를 사용하는 이유
- 하나의 조건식의 참, 거짓의 판별을 위해 사용한다.
실습(입력)
1. 한 번에 두 개의 정수를 입력받아 예시와 같이 출력한 후 곱한 값 출력하기
※ 예시
입력 예) 1 2
출력 예) 1 * 2 = 2
- 코드
import java.util.Scanner;
public class InputTask {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String msg = "두 정수를 예시와 같이 입력하세요\n 예)13 24";
String format = "%d * %d = %d";
int num1 = 0, num2 = 0, result = 0;
System.out.println(msg);
// 값을 한 번에 입력 받을 때에는 next~()를 입력받을 값의 수 만큼 써준다.
num1 = sc.nextInt(); //nextInt() : 사용자가 입력한 정수값
num2 = sc.nextInt();
result = num1 * num2; // 입력받은 값을 곱한 결과
System.out.printf(format, num1, num2, result); // format = "%d * %d = %d"
}
}
![](https://blog.kakaocdn.net/dn/bPcidd/btrtGhAIFBx/YmFqadkitO8G7rIa2qayZ0/img.png)
실습(연산자)
1. 논리 연산자
public class BitOper {
public static void main(String[] args) {
System.out.println(10 & 11);
System.out.println(10 | 11);
System.out.println(10 ^ 11);
}
}
![](https://blog.kakaocdn.net/dn/b8eqmY/btrtLz0HXbO/aiapfm1VcNwKKkYVF2fH41/img.png)
2. 단항 연산자
public class BitOper {
public static void main(String[] args) {
System.out.println(~10); // (-10) - 1
}
}
![](https://blog.kakaocdn.net/dn/c8bhuu/btrtJC4FFP6/UF3F8Sed1AesGUkhyuocP0/img.png)
3. 쉬프트 연산자
public class BitOper {
public static void main(String[] args) {
System.out.println(10 << 1); // 1010 << 1 : 0001 0100(20)
System.out.println(10 >> 1); // 1010 >> 1 : 0101(5)
}
}
![](https://blog.kakaocdn.net/dn/46y1Z/btrtHCdBgSd/mkj1leDTddkLaGvFvhzZn1/img.png)
실습(조건식에서 사용되는 연산자)
1. 관계 연산자
public class Oper1 {
public static void main(String[] args) {
boolean check = 10 > 9; // true
System.out.println(10 == 11);
System.out.println(10 != 11);
System.out.println(check);
}
}
![](https://blog.kakaocdn.net/dn/DfMfu/btrtHCkjgfG/fwHaEf59vtCBT6ey52Ebx0/img.png)
2. 논리 연산자
public class Oper1 {
public static void main(String[] args) {
boolean check = 10 > 9; // true
System.out.println(check && 10 == 11); // true && false (둘 모두 true일 때 true)
System.out.println(check || 10 == 11); // true || false (둘 중 하나라도 true일 때 true)
}
}
![](https://blog.kakaocdn.net/dn/pbf7o/btrtLz0HXb0/hyaSAgKP5o5FXoKKdFxag0/img.png)
3. 단항 연산자
public class Oper1 {
public static void main(String[] args) {
boolean check = 10 > 9; // true
System.out.println(check && !(10 == 11)); // true && !(false) → true && true
}
}
![](https://blog.kakaocdn.net/dn/cB2UwP/btrtNR7B63W/e05zOk6EvJT41sSXOcHOq0/img.png)
실습(삼항 연산자)
1. 사용자에게 키를 입력받고 정수면 정수로 출력, 실수면 실수로 출력하기(삼항 연산자 사용)
※ 예시
183 --> 183 출력
183.5 --> 183.5 출력
- 코드
import java.util.Scanner;
public class Oper4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double height = 0.0; // 키를 저장하는 변수(double 8byte)
String msg = "키 >> ";
String format = ""; // 서식문자를 담아주는 변수
boolean check = false; //실수인지 정수인지를 담아주는 변수(boolean lbyte)
System.out.print(msg);
height = sc.nextDouble(); //사용자에게 실수를 입력받고 height에 담아주기
check = height - (int)height == 0; // 실수 - 정수 == 0 이다
format = check ? "%.0fcm" : "%.1fcm"; // 실수 - 정수 == 0 이면 ? 정수로 출력 : 소수점 첫째자리까지만(실수) 출력
System.out.printf(format, height);
}
}
![](https://blog.kakaocdn.net/dn/IJJ9v/btrtHCYTT0e/qebNO0RCIRwaeRZX5vRBKk/img.png)
![](https://blog.kakaocdn.net/dn/DTUBp/btrtMIXoRMw/4Pfhn4LmkeM5DzMIVUbnxK/img.png)
'웹 개발 > Java' 카테고리의 다른 글
[Web_JAVA] 07 (0) | 2022.02.21 |
---|---|
[Web_JAVA] 06 (0) | 2022.02.20 |
[Web_JAVA] 04 (0) | 2022.02.18 |
[Web_JAVA] 03 (0) | 2022.02.17 |
[Web_JAVA] 02 (0) | 2022.02.16 |