국비지원 JAVA 풀스택 과정/JAVA

22.09.08 사전수업_2_연산자,제어문

ODaram 2022. 9. 8. 11:10

▶ 연산자 (산술,대입,비교,증감,논리,비트,기타)

 

◈ 산술 연산자 (+, -, *, / ... %)

정수/정수 = 몫 
정수%정수 = 나머지
(double)정수/정수=실수
강제형변환 -자동형변환
    System.out.println("--------산술연산자---------");
    int num1 = 10, num2 = 3;
    int n = 10;
    System.out.println(num1 + num2);
    System.out.println(num1 - num2);
    System.out.println(num1 * num2);
    System.out.println(num1 / num2);
    System.out.println(num1 % num2);

◈ 대입 연산자 (=)

= (대입), == (같다)
n = n + 2; 왼쪽 문장과 오른쪽 문장은 같은 의미 이다.  n += 2;
    System.out.println("--------대입연산자---------");
    System.out.println(n += 3); //13
    System.out.println(n -= 3); //7
    System.out.println(n *= 3); //30
    System.out.println(n /= 3); //3
    System.out.println(n %= 3); //1
    System.out.println(n);
    // +부터 계산된 값이 n에 저장되므로 두번째는 13-3이 됨

◈ 증감 연산자 ( 전위 연산자, 후위 연산자 ) 

      - 전위 연산자 : 한줄에 모든 연산자 중에서 가장 먼저 실행됨
      - 후위 연산자 : 한줄에 모든 연산자 중에서 가장 나중에 실행됨

전위 연산자 : n += 1; 또는 ++n; (1씩 증가), --n; (1씩 감소) 
후위 연산자 : n++; , n--;
연산자 우선순위에 따라 결과값이 달라질 수 있다.
    System.out.println("--------증감연산자---------");
    int result = 0;
    int num = 10;
    result = 3 * (++num);
    System.out.println("전위 연산자 result :"+result+", num :"+num);

    result = 3 * (num--);
    System.out.println("후위 연산자 result :"+result+", num :"+num);

◈ 비교연산자 ( >, <, >=, <=, ==, !=)

> (초과), < (미만), >= (이상), <= (이하), == (같다), != (같지 않다/다르다)
 → 결과값 : true 또는 false (boolean 자료형)
    System.out.println("--------비교연산자---------");
    int num4 = 10, num5 = 3;
    System.out.println(num4 == num5);
    System.out.println(num4 != num5);
    System.out.println(num4 > num5);
    System.out.println(num4 < num5);

◈ 논리연산자 (&&, ||, !)

조건이 2개 이상일 때
and(&&) - 모두 만족해야 true 
or(||) - 하나라도 만족하면 true
not(!) - 결과 반전 (true -> false, false -> true)
    System.out.println("--------논리연산자---------");
    int small = 3, middle = 10, big = 20;
    System.out.println(small > middle && small > big);
    System.out.println(small > middle && middle > big);
    System.out.println(big > small && big > middle);

    // 논리 연산자 예제
    // 변수 height = 118.5 , age =7 값 초기화
    // 키가 120 이상이고 , 나이가 6세 이상이면 true 출력 (and)
    double heigth = 118.5;
    int age =7;
    System.out.println("키가 120 이상이고, 나이가 6세 이상인가? " + (heigth >= 120 && age >= 6));

    // 키가 120 이상이거나 , 나이가 6세 초과이면 true 출력 (or)
    System.out.println("키가 120 이상이거나 , 나이가 6세 초과하는가? " +(heigth >= 120 || age >= 6));

    // not 연산
    System.out.println("and-not연산: " + !(heigth >= 120 && age >= 6));
    System.out.println("or-not연산: " + !(heigth >= 120 || age >= 6));

◈ 비트연산자 (&, |)

· 기계,제품 관련 코딩 시 필요함
· 비트로 풀어서 비트끼리 연산
· &, |, !
· SHIFT 연산 : 비트 자리를 옆으로 한칸씩 이동
  - 2진수이다 보니, 왼쪽 > 2배 증가 / 오른쪽 2배 감소
  - 곱하기 하는 것보다 속도가 빠름
  - 기계에 들어가는 프로그램일 수록 shift 연산 유리할 수도 있음

◈ 기타연산자 (삼항연산자)

삼항 연산자
삼항 연산자의 형식 - (조건) ? 참 : 거짓
    System.out.println("----삼항 연산자------");
    int n = 10;
    String txt = (n>10) ? "Yes" : "No";
    System.out.println(n>10);
    System.out.println(txt);
    System.out.println((n>10) ? "Yes" : "No"); // 식을 넣어도됨

▶ 제어문 (if, if else)

    // 금액이 천원 이상이면 사은품 증정 메시지 띄우고, 천원 미만인 경우 다른 문구
    System.out.println("금액이 천원 이상인 경우에만 사은품 증정");
    int total = 500;
    if(total >= 1000) {
        System.out.println("사은품 증정!");
    }else {
        System.out.println("사은품 없음!");
    }

    // 금액에 따라 사은품이 다름
    System.out.println("금액별로 증정하는 사은품이 다른 경우");
    if (total >= 1000) {
        System.out.println("사은품 : 상품권");
    } else if (total >= 500) {
        System.out.println("사은품 : 고무장갑");
    }else if (total >= 300){
        System.out.println("사은품 : 비닐장갑");
    }else {
        System.out.println("사은품 : 없음");
    }

◈ 제어문 예제 1)

    // score에 점수가 들어있다.
    // 90점 이상이면 A, 80점 이상이면 B, 70점 이상이면 C, 이 외에는 f 출력
    System.out.println("socre 점수에 따른 결과값 출력");
    int score = 87;
//		if(score >= 90) {
//			System.out.println("90점 이상입니다. : A");
//		}else if(score >=80) {
//			System.out.println("80점 이상입니다. : B");
//		}else if(score >= 70) {
//			System.out.println("70점 이상입니다. : C");
//		}else {
//			System.out.println("70점 미만입니다. : F");
//		}

// --------------- 좀 더 간단하게 grade에 문자를 받아 출력하는 방법도 있음 ----------------
    char grade;
    if(score >= 90) {
        grade = 'A';
    }else if(score >=80) {
        grade = 'B';
    }else if(score >= 70) {
        grade = 'C';
    }else {
        grade = 'D';
    }
    System.out.println(grade);

◈ 제어문 예제 2)

    // 국어(kor),영어(eng),수학(math) 점수가 있음
    // 합계, 평균 계산하여 출력
    // 평균이 80점 이상이면 "합격" 미만이면 "불합격"
    int kor=97, eng=65, math=79 ;
    int sum =0;
    double avg=0;
    sum = kor+eng+math;
    avg = (double)sum/3;		// SUM이 정수이므로 강제형변환 필요!!
    System.out.println("세 과목의 합계는 "+sum+"입니다.");
    if(avg >= 80) {
        System.out.println("평균 "+avg+" 이므로 합격!");
    }else {
        System.out.println("평균 "+avg+" 이므로 불합격!!");
    }

◈ 제어문 예제 3)

// 3개 정수를 입력받아, 최대값/최소값 찾기
		int num1=97, num2 = 79, num3 = 65;
//		int max = num1;		// 최대값을 지정해두고 시작하는것이 포인트, 
//		int min = num1;		// 지정한 최대값과 다른 값을 비교해 최댓값 자리의 수를 트레이드 시킴
		
//		if (max < num2) {
//			max = num2;
//		}else if(max < num3) {
//			max = num3;
//		}
//		if (min > num2) {
//			min = num2;
//		}else if(min > num3) {
//			min = num3;
//		}
//		System.out.println("최대값 :"+max);
//		System.out.println("최소값 :"+min);
		
	//--------------------위의 코드 더 줄이기 가능------------------------
		int max=num1, min=num1;
		if (max < num2) {max=num2;}
		if (max < num3) {max=num3;}
		
		if (min > num2) {min=num2;}
		if (min > num3) {min=num3;}

◈ 제어문 예제 4)

	// 임의의 알파벳이 대문자? 소문자? 판별하기
        // 아스키 코드 표의 10진수 참고하기
		char ch = '*';
		
		if(ch >= 65 && ch <= 90) {
			System.out.println("대문자");
		}else if (ch >= 97 && ch <= 122){
			System.out.println("소문자");
		}else if(ch >= 33 && ch <= 47) {
			System.out.println("특수문자");
		}else {
			System.out.println("나머지 기호");
		}


http://naver.me/x2kKuilz