자바 수식 연산자
- 증감: ++ --
- 산술: + - * / %
- 시프트: >> << >>>
- 비교: > < < = <= == !=
- 비트: & | ^ ~
- 논리: && || ^ ~
- 조건: ? :
- 대입: = *= /= += -= &= ^= |= <<= >>= >>>=
자바 연산자 우선순위
- () [] : 괄호 / 대괄호
- ! ~ ++ -- : 부정, 증감연산자
- * / % : 곱셈 / 나눗셈(몫, 나머지) 연산자
- + - : 덧셈 / 뺄셈 연산자
- << >> >>> : 비트 단위의 시프트 연산자
- < <= > >= : 관계 연산자
- == !=
- & : 비트 단위의 논리 연산자
- ^
- |
- && : 논리곱 연산자
- || : 논리합 연산자
- ? : : 조건연산자
- = += -= *= /= %= <<= <<= >>= &= ^= ~= : 대입 / 할당 연산자
public class OperatorSequence {
public static void main(String[] args) {
int b = 19;
int a = b > 2 || b++ <= 5 ? 3 : 5;
System.out.println("a=" + a + " b=" + b);
}
}
// a = 3, b = 19
21(b++) <= 5 => false
21 > 2 => true
따라서 논리합 연산자(둘 중 하나라도 true라면 true반환) => true => a = 3
비트 논리 연산
- & : 논리곱(AND), 두 비트 모두 1일 경우에만 1
- | : 논리합(OR), 두 비트 중 하나라도 1이라면 1
- ^ : 배타적 논리합(XOR) : 두 비트 중 하나만 1일 경우만 1, 즉 서로 같으면 0, 다르면 1
- ~ : 논리 부정(NOT) : 0이면 1이고, 1이면 0
비트시프트 연산
- a << b : a의 비트들을 왼쪽으로 b만큼 이동
- a >> b : a의 비트들을 오른쪽으로 b만큼 이동
- a >>> b : a의 비트들을 오른쪽으로 b만큼 이동시키되, 빈자리를 0으로 채움
public class BitOperator {
public static void main(String[] args) {
short a = (short)0x55ff;
short b = (short)0x00ff;
// 16진수 4자리로 변환, 0xffff
System.out.println("[비트 연산 결과]");
System.out.printf("%04x\\n", (short)(a & b)); // AND
System.out.printf("%04x\\n", (short)(a | b)); // OR
System.out.printf("%04x\\n", (short)(a ^ b)); // XOR
System.out.printf("%04x\\n", (short)(~a)); // NOT
byte c = 20; // 0x14
byte d = -8; // 0xf8
// 비트 시프트 연산
System.out.println("[시프트 연산 결과]");
System.out.println(c <<2); // c를 2비트 왼쪽 시프트
System.out.println(c >>2); // c를 2비트 오른쪽 시프트. 0 삽입
System.out.println(d >>2); // d를 2비트 오른쪽 시프트. 1 삽입
System.out.printf("%x\n", (d >>>2)); // d를 2비트 오른쪽 시프트. 0 삽입
}
}
조건문 if 문 / switch문
if / else if / else
switch문 : 조건식을 case 문의 값과 비교
case의 비교값과 일치하는 것이 없으면 default 문 실행
중첩 if - else 문
// 점수와 학년을 입력 받아, 4학년일 경우 70점 이상, 나머지의 경우 60점 이상일 경우 합격 메시지를 출력하는 프로그램 작성
import java.util.Scanner;
public class NestedIf {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수를 입력하세요요(0~100):");
int score = scanner.nextInt();
System.out.print("학년을 입력하세요(1~4):");
int grade = scanner.nextInt();
if(grade == 4) {
if(score >= 70) {
System.out.print("합격!");
}
else {
System.out.print("불합격!");
}
}
else {
if(score >= 60) {
System.out.print("합격!");
}
else {
System.out.print("불합격!");
}
}
}
}
'Language > JAVA' 카테고리의 다른 글
자바기반응용프로그래밍 - main() 메소드로 인자 전달 (0) | 2022.04.11 |
---|---|
자바기반응용프로그래밍 - 패키지, 접근 지정자, static, final (0) | 2022.04.10 |
자바기반응용프로그래밍 - 메소드, 레퍼런스, 오버로딩, 가비지 컬렉션 (0) | 2022.04.10 |
자바기반응용프로그래밍 - 객체 지향을 위한 클래스와 객체 (0) | 2022.04.09 |
자바기반응용프로그래밍 - 기본구조, 식별자, 데이터타입, 스캐너 (0) | 2022.04.07 |