[Study #03] 연산자의 종류, IF문, FOR문

    반응형

     

    01. 연산자

    • 연산자란 계산할 때 사용하는 기호 (ex. + - / *)
    • 모든 프로그램에서 데이터의 계산을 위해 연산자를 사용

     

    02. 연산자의 연산 순서

     

    01) 최우선 연산자

    • . (점) 클래스 또는 객체 소유의 변수, 메서드 등을 호출
    • [] 배열
    • () 괄호

    02) 단항 연산자

    • ! 논리 부정
    • ~ 비트 반전
    • + / - 부호 연산
    • ++ / -- 선행증감 (어디 붙느냐에 따라 순서가 달라짐)

    [ 예시 ]

    int num = 1;
    int num2 = ++num;
    //       2  1   ; 계산순서
    //num = 2, num2 = 2
    
    int num3 = ++num + ++num2;
    //       3 1     2  1    ; 계산순서
    //num = 3, num2 = 3, num3 = 6
    
    num3 = --num + ++num2;
    //   3 1     2 1     ; 계산순서
    //num = 2, num2 = 4, num3 = 6
    
    // 비트 반전 ~ -> 0을 1로, 1을 0으로 변경
    System.out.println(Integer.toBinaryString(2)); //00000000000000000000000000000010 (0을 생략)
    System.out.println(Integer.toBinaryString(~2));//11111111111111111111111111111101 (비트반전)
    System.out.println(~2);//-3
    
    System.out.println(Integer.toBinaryString(-5));  //11111111111111111111111111111011
     System.out.println(Integer.toBinaryString(~-5));//00000000000000000000000000000100
    System.out.println(Integer.toBinaryString(~-5));//4

     

    03) 산술 연산자

    • + (덧셈)     - (뺄셈)     / (나눗셈)     * (곱셈)     % (모듈러 : 나머지 값)

    [ 예시 ]

    System.out.println(2 % 2);//0 나눈 후 나머지 값
    System.out.println(3 % 2);//1
    System.out.println(4 % 2);//0
    
    System.out.println(1 % 4);//1 나눌 숫자가 작으면 그대로 반환
    System.out.println(2 % 4);//2
    System.out.println(3 % 4);//3
    System.out.println(4 % 4);//0
    System.out.println(5 % 4);//1

     

    [ 활용 ] 주민번호를 보고 여자인지 남자인지 판별하기

    int ssnCode = 2;
    int result = ssnCode % 2;
    		
    if(result == 0) {
    	System.out.println("당신은 여자입니다.");
        } else {
            System.out.println("당신은 남자입니다.");
        }

     

    04) 쉬프트 연산자

    • <<      >>     >>>   : 이진법의 자릿수 이동

     

     

     

    05) 관계 연산자

    • <   >   <=   >=   ==(같다)   !=(같지 않다)
    boolean check = false;
    check = 1 + 2 != 4;
    //    3   1    2  ; 계산순서
    System.out.println(check);//true
    
    check = 1 == 2;
    //    2    1  ; 계산순서
    System.out.println(check);//false

     

    06) 비트 연산자

    • &(and) : 이진법으로 변환했을 때, 둘 다 1일 때 1, 그 외에는 다 0
    •  |(or) : 이진법으로 변환했을 때, 하나라도 1이 있으면 1, 둘 다 0일 땐 0
    •  ^(xor) : 이진법으로 변환했을 때, 값이 다르면 1, 같으면 0
    System.out.println(10 & 11);//10
    System.out.println(10 | 11);//11
    System.out.println(10 ^ 11);//1
    
    int number = 2;
    int num2 = 11;
    int num3 = number ^ num2;
    System.out.println(num3);//9

     

    07) 논리 연산자

    • && (and) 둘 다 참일 때 참
    • || (or) 둘 중 하나라도 참이면 참
    System.out.println( 1 + 2 == 4 && 1 + 3 == 4 );//false
    //                     false   &&     true
    System.out.println( true && !false );//true
    //                  true &&  true
    System.out.println( !true && false );//false
    //                  false && false
    
    System.out.println( true || false );//true
    System.out.println( false || false );//false
    System.out.println( !false || true );//true
    System.out.println( false || false );//false

     

    08) 삼항 연산자

    • 조건식 ? 참일 때 : 거짓일 때; (조건은 하나씩만 실행할 수 있음)
    number = 1;
    System.out.println(number == 1 ? "1입니다" : "2입니다");//1입니다
    //number == 1은 참
    
    boolean = check;
    check = number > 1 || number == 1 ? true : false ;
    //          false  ||       true  = true
    System.out.println(check);//true

     

    09) 배정대입(대입기호)

    • =   +=   -=   %=   /=   등
    int num = 0;
    
    num += 1;
    //+=은 +1해서 대입하다 (num += 1 == num + 1 == ++num == num++)
    num -= 1; //num값에서 -1
    num %= 2;//모듈러 : 나머지 값
    
    int num2 += --number; 
    //에러나는 이유 : num2는 선언만 되어있음 (초기화x)

     

    10) 후행증감

    • ++ / -- 후행증감 (뒤에 붙었을 때)

    [ 예시 ]

    int number = 1;
    int number1 = number--;
    //          1        2; 계산순서
    //number = 0, number1 = 1
    
    int number1 = number-- + --number;
    //        3       4  2  1
    //number = -2, number1 = -1
    
    int num = 2, num2 = 4, num3 = 6;
    num3 = num-- - num2--;
    //   2     3 1      3; 계산순서
    //num = 1, num2 = 3, num3 = -2
    
    num3 = num-- + num2--;
    //   2     3 1     3 ; 계산순서
    //num = 0, num2 = 2, num3 = 4
    
    num3 = num-- + --num2;
    //   3    4  2  1    ; 계산순서
    //num = -1, num2 = 1, num3 = 1

     

    03. 자바의 제어문

    • 조건문 : 조건에 따라 분기되는 문장
      (ex. if, switch)
    • 반복문 : 특정 명령어를 반복적으로 수행하는 문장
      (ex. for, while, do~while)

    1) IF문

    • 조건식이 들어갈 수 있는 것들 :결과가 참 또는 거짓이 되는 문장
      (ex. boolean, 부등호, 1 == 2, 1 + 2 == 4 등)

    [ 기본 형식 ]

    if(조건식){
    		조건식이 참일 때 실행할 명령;
    	}	
    	
    	if(조건식){
    		조건식이 참일 때 실행할 명령;
    	} else {
    		조건식이 거짓일 때 실행할 명령;
    	}
    	
    	if(조건식){
    		조건식이 참일 때 실행할 명령;
    	} else if {
    		조건식이 참일 때 실행할 명령;
    	} else {
    		조건식이 거짓일 때 실행할 명령;
    	}

    [ 활용 1 ]

    boolean ch = !true;
    int number = 10;
    
    if ( number > 5 && ch) {//조건이 참일 때 실행
        System.out.println("ch가 참입니다.");
    } else {//조건이 거짓일 때 실행
        System.out.println("ch가 거짓입니다.");
    }//ch가 거짓입니다.
    
    
    int number1 = 5;
    
    if (number1 == 5) {//조건식1 (조건이 많이 걸릴 것을 위에 위치하는 게 좋음)
        System.out.println("조건식1이 참입니다.");//참일 때만 실행
    } else if (number1 == 4) {//조건식2 else if는 무제한으로 늘어날 수 있음
        System.out.println("조건식2가 참입니다.");//참일 때만 실행
    } else if (number1 == 3) {//조건식3
        System.out.println("조건식3가 참입니다.");//참일 때만 실행
    } else {
        System.out.println("조건식1, 2, 3 모두 거짓.");//조건식 모두 거짓일 때 실행
    }//조건식1이 참입니다.
    
    
    int number2 = 1;
    
    if (number2 == 5) {//조건식1 (조건이 많이 걸릴 것을 위에 위치하는 게 좋음)
        System.out.println("조건식1이 참입니다.");//참일 때만 실행
    } else if (number2 == 4) {//조건식2 else if는 무제한으로 늘어날 수 있음
        System.out.println("조건식2가 참입니다.");//참일 때만 실행
    } else if (number2 == 3) {//조건식3
        System.out.println("조건식3가 참입니다.");//참일 때만 실행
    }//화면엔 아무것도 안 뜸 (다 거짓이라서)

    [ 활용 2 ] 사용자가 입력한 숫자가 무엇인지 판별하기

    System.out.println("0~9 중 하나만 입력하세요.");
    System.out.print("입력 : ");
    
    int input = System.in.read() - 48;
    //입력대기(사용자가 입력할 때까지 기다립니다) 한 글자만 가져옴
    // read() 메서드는 int 형태로 문자의 아스키 코드 값을 반환
    // 아스키 코드에서 숫자 '0'은 48에 해당하므로, '0'을 뺌으로써 문자를 해당하는 숫자 값으로 변환
    
    System.out.print("당신이 입력한 숫자는 " + input + ",");
    
    if ( input % 2 == 0 ) {// 나머지 값이 0일 경우
        System.out.println(" 짝수입니다.");
    } else {
        System.out.println(" 홀수입니다");}

    [ 활용 3 ] 

    System.out.print("숫자를 입력하세요\n입력 : ");
    //\n 줄바꿈 \t tab키
    Scanner sc = new Scanner(System.in);
    
    int input = sc.nextInt();
    //            .은 소유변수 nextInt는 메서드명
    
    if (input > 5) {
        System.out.println("5보다 큽니다.");
    } else if (input == 0) {
        System.out.println("0입니다.");
    } else if (input == 1) {
        System.out.println("1입니다.");
    } else if (input == 2) {
        System.out.println("2입니다.");
    } else if (input == 3) {
        System.out.println("3입니다.");
    } else if (input == 4) {
        System.out.println("4입니다.");
    } else if (input == 5) {
        System.out.println("5입니다.");
    }

     

    2) FOR문

    • 특정 명령을 반복적으로 실행해야 할 때 사용

    [ 기본 ]

    for(변수 초기화; 변수 조건문; 변수 증감식){
    //    int i=0    i < 10 (참,거짓)
        변수 조건문이 참일 때 실행할 반복문;
    }

    [ 활용 ]

    for (int i = 0; i < 5; i++) {
    //i가 0일 때, 5보다 작을 때까지, i+1하기
        System.out.println(i + " ");//i값 출력
    }// 0 1 2 3 4
    
    for (int i = 10; i >= 0; i--) {
    //i가 10일 때, 0보다 크거나 같을 때까지, i-1하기
        System.out.println(i + " ");
    }// 10 9 8 7 6 5 4 3 2 1 0
    
    for (int i=2 ; i <= 10 ; i++) {
    //i가 2일 때, 10보다 작거나 같을 때까지, i+1하기
        if (i % 2 == 0)//i가 2로 나누었을 때 0일 경우 = 짝수
        System.out.print(i + " ");
    }// 2 4 6 8 10
    
    for (int i=1 ; i < 6 ; i++) {
    //i가 1일 때, 6보다 작을 때까지, i+1하기
        System.out.print(i*2 + " ");//i*2 출력
    }2 4 6 8 10
    
    for (int i=2; i <=10 ; i+=2) {
    //i가 2일 때, 10보다 작거나 같을 때까지, i+2하기
        System.out.print(i + " ");
    }//2 4 6 8 10

     

     

    참고자료
    신용권, '혼자 공부하는 자바'

     

    반응형

    댓글