1. 비트 연산자
- 피연산자를 비트단위로 논리 연산
- 비트 : 0과 1을 저장 → 1바이트 = 8비트
- 10진수 / 16진수 / 2진수 변환 참조 (https://reversecore.com/96)
| (OR연산자)
|
피연산자 중 한 쪽의 값이 1이면 1을 결과로 얻는다. 그 외 0
|
& (AND연산자)
|
피연산자 양쪽이 모두 1이어야만 1을 결과로 얻는다. 그 외 0
|
^ (XOR연산자)
|
피연산자 값이 서로 다를 때만 1을 결과로 얻는다. 같을때 0
|
public class Exam011 {
public static void main(String[] args) {
/* 비트 연산자
* 10진수를 2진수로 변경해서 연산하고, 그 후에 10진수로 변환
*/
int a = 15; // 1111
int b = 5; // 0101
System.out.println(a | b); // 1111 -> 15
System.out.println(a & b ); // 0101 -> 5
System.out.println(a ^ b ); // 1010 -> 10
System.out.println(a>>2); // 1111 -> 0011 -> 3
System.out.println(b<<4); // 0101 -> 01010000 -> 80
}
}
2. 제어문 - 조건문
💌 ' 제어문(control statement) ' 프로그램의 흐름(flow)을 바꾸는 역할을 하는 문장들
1) if 문 ; 조건에 따라 다른 문장이 실행
if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
}
- 조건식의 결과는 true 아니면 false
- 연산자들은 조건문에 자주 쓰임.
- 블럭 {} : 여러 문장을 하나의 단위로 묶을 수 있음
💡 블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해서 블럭 안에 속한 문장이라는 것을 알기 쉽게 해주는 것이 좋다
public class Exam015 {
public static void main(String[] args) {
int a = 3;
if (a >= 3) { // if (조건식) 조건식 : 결과값이 boolean
// 조건식이 참일 때 실행
System.out.println("a는 3보다 큽니다");
} // if 구문의 끝
// 조건식과 상관없이 무조건 실행
System.out.println("검사가 끝났습니다.");
}
}
2) if - else 문
'else' 그 밖의 다른 이라는 뜻이므로 조건식의 결과가 참이 아닐 때, 즉 거짓일 때 else 블럭의 문장을 수행하라는 뜻
실행할 명령문이 간단하면 삼항연산자로 변경 가능
public static void main(String[] args) {
int age = 15;
if (age > 19) {
System.out.println("성인입니다");
System.out.println("성인요금이 적용됩니다");
} else { // 위의 조건이 거짓일 때만 실행
System.out.println("청소년입니다.");
System.out.println("청소년요금이 적용됩니다.");
}
System.out.println("결제를 진행해 주세요.");
}
삼항연산자 적용시
public static void main(String[] args) {
/* Exam016을 삼항 연산자를 사용하는 방식으로 변경
* if else 문이고, 실행할 명령문이 간단한 경우 삼항연산자로 변경 가능 */
int age = 15;
System.out.println(age > 19 ? "성인입니다. \n성인요금이 적용됩니다."
: "청소년입니다. \n청소년 요금이 적용됩니다.");
System.out.println("결제를 진행해 주세요.");
}
3) if - else if 문
👾 처리해야 할 경우의 수가 셋 이상인 경우 한 문장에 여러 개의 조건식을 쓸 수 있음
👾 마지막에는 else 블럭으로 끝나며, 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
처리 순서
- 결과가 참인 조건식을 만날 때까지 첫 번째 조건식부터 순서대로 평가한다.
- 참인 조건식을 만나면, 해당 블럭 {}의 문장들을 수행한다.
- if-else if문 전체를 빠져나온다.
public static void main(String[] args) {
/* 놀이공원의 요금 나이 기준
* 성인 : 20세 이상
청소년 : 14 ~ 19
어린이 : 9 ~13
유아 : 0 ~8 */
int age;
Scanner scanner = new Scanner(System.in);
System.out.println("나이를 입력해주세요. >>");
age = scanner.nextInt();
// 조건이 거짓이면 다음 조건으로 넘어감.
// 조건이 참이 되면 다음 조건을 검사하지 않음.
if (age > 19) { // 20 ~
System.out.println("성인입니다.");
System.out.println("성인요금이 적용됩니다.");
}
else if (age > 13) { // 14 ~ 19
System.out.println("청소년입니다.");
System.out.println("청소년요금이 적용됩니다.");
}
else if (age > 8) { // 9 ~13
System.out.println("어린이입니다.");
System.out.println("어린이요금이 적용됩니다.");
}
else { // 0~ 8
System.out.println("유아입니다.");
System.out.println("유아요금이 적용됩니다.");
}
System.out.println("결제를 진행해주세요.");
scanner.close();
}
오름차순으로 나이 적용시
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int age;
System.out.println("나이를 입력해주세요.");
age = scanner.nextInt();
/* 놀이공원의 요금 나이 기준
* 성인 : 20세 이상
* 청소년 : 14 ~ 19
* 어린이 : 9 ~ 13
* 유아 : 0 ~ 8
*/
// 첫번째 조건에 해당 되지 않으면 다음 조건으로 넘어감.
// 그렇기 때문에 두번째 조건에서 첫번째 조건과 겹치는 범위는 적지 않아도 됨.
if (age <= 8) { // 0~8
System.out.println("유아입니다.");
System.out.println("유아요금이 적용됩니다.");
}
else if (age <= 13) { // 9 ~ 13
System.out.println("어린이입니다.");
System.out.println("어린이요금이 적용됩니다.");
}
else if (age <= 19) { // 14 ~ 19
System.out.println("청소년입니다.");
System.out.println("청소년요금이 적용됩니다.");
}
else { // 20 ~
System.out.println("성인입니다.");
System.out.println("성인요금이 적용됩니다.");
}
System.out.println("결제를 진행해주세요.");
// 삼항 연산자를 중첩해서 사용하면 동일한 기능 가능.
System.out.println(age <= 8 ? "유아입니다. \n유아요금이 적용됩니다." :
age <= 13 ? "어린이입니다. \n어린이요금이 적용됩니다." :
age <= 19 ? "청소년입니다. \n청소년요금이 적용됩니다." :
"성인입니다. \n성인요금이 적용됩니다.");
scanner.close();
}
4) 중첩 if문
👾 if 문 블럭 내에 또 다른 if문을 포함시키는 것
👾 내부 if 문은 외부의 if 문보다 안쪽으로 들여쓰기를 해서 두 if 문의 범위가 명확히 구분될 수 있도록 작성
public static void main(String[] args) {
/* 중첩 if문 : if문 안에 if가 있는 경우
아이디, 비밀번호를 입력받아서 로그인 처리.
id : java, pw : 1234
아이디가 맞는 경우에는 비밀번호를 입력 받음.
아이디가 틀린 경우에는 에러메시지 출력.
*/
String id, password;
Scanner scanner = new Scanner(System.in);
System.out.println("아이디를 입력해 주세요:");
id = scanner.nextLine();
if (id.equals("java")) { // 아이디가 맞는 경우 비밀번호를 입력받음
System.out.println("아이디 일치");
System.out.println("비밀번호를 입력해 주세요 : ");
password = scanner.nextLine();
if (password.equals("1234")) {
System.out.println("비밀번호 일치");
System.out.println("로그인 성공");
} else {
System.out.println("비밀번호 불일치");
}
} else {
System.out.println("아이디 불일치");
}
scanner.close();
}
(출처 ; 학원강의 및 java의 정석 3rd)
'Programming Language > JAVA' 카테고리의 다른 글
[Java] while 문 · break문 · continue 문 (0) | 2024.08.09 |
---|---|
[Java] Switch문 · for문 (0) | 2024.05.22 |
[JAVA] 연산자 [단항/복합/대입/비교/논리/삼항] 및 우선순위 (0) | 2024.04.05 |
[JAVA] 형변환 casting & 연산자 operator (0) | 2024.04.01 |
[JAVA] 변수와 변수 기본형, 상수와 리터럴, 문자열 연산 (1) | 2024.04.01 |