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)

+ Recent posts