2024-07-12 DAY-03

보히·2024년 7월 12일

오늘은 국비교육 3일차이다.

  1. 비교 연산자
    -같다, 다르다, 크다(초과), 크거나 같다(이상), 작다(미만), 작거나 같다(이하)에 대한 비교를 수행하는 연산자
  • 같다 ==

  • 다르다 !=

  • 초과 >

  • 이상 >=

  • 미만 <

  • 이하 <=

    -주어진 식이 참인지 거짓인지만 판별 가능하므로, 연산 결과는 boolean 값으로 생성된다.

    				int x = 100;
                  int y = 1;
                  x 비교연산자 y;
                  boolean result = x==y;	-> false
                  boolean result2 = x! = y;	->true
                  
                  System.out.println(result);    // false
    		            System.out.println(result2);  // true
                  

package operator;

public class Main02 {

public static void main(String[] args) {
	int num1 = 123;
	int num2 = 456;
	
	// 비교연산자에 대한 결과는 boolean 값이다
    boolean result1 = num1 == num2;
    System.out.println(result1); // false
    
    boolean result2 = num1 != num2;
    System.out.println(result2); // true
    
    boolean result3 = num1 > num2;
    System.out.println(result3); // false
    
    boolean result4 = num1 <= num2;
    System.out.println(result4); // true
    
}

}

  1. 논리 연산자
    2-1. 두 개 이상의 비교 연산자의 결과는 boolean 값에 대해 추가로 AND나 OR 연산을 수행하여 결과를 얻는다.

    2-2. OR의 의미를 갖는 ||

    • || 연산자는 두 개의 boolean 값을 비교하여 둘 중 하나라도 true인 경우 결과가 true이다.

    2-3. AND의 의미를 갖는 &&

    • && 연산자는 두 개의 boolean 값을 비교하여 둘 중 하나라도 false인 경우 결과가 false이다.

package operator;

public class Main03 {

public static void main(String[] args) {
	int a = 100;
	int b = 200;
	int x = 5;
	int y = 3;
	
	// 논리연산에 대한 결과는 boolean 형이다
	boolean result1 = a!=b || a==b; 	// true || false -> true	 
	System.out.println(result1);
	
	boolean result2 = a < b || x > y; 	// true || true  -> true
	boolean result3 = a < b || x < y;   // true || false -> true
	boolean result4 = a > b || x > y;   // false || true -> true
	boolean result5 = a > b || x < y;   // false || false -> false
	
	System.out.println(result2);
	System.out.println(result3);
	System.out.println(result4);
	System.out.println(result5);
	System.out.println("------------------------");
	
	// boolean 값 끼리는 논리연산이 가능하다.
	boolean r1 = a >=b; // r1 : false
	boolean r2 = x >=y; // r2 : true
	boolean result6 = r1 && r2; // false && true -> false
	boolean result7 = r1 || r2; // false || true -> true
	
	System.out.println(result6);
	System.out.println(result7);
	System.out.println("------------------------");
	
	boolean success = true;
	boolean fail = !success;
	System.out.println(fail);
	
	
	
	
}

}

  1. 형변환(Casting)
    3-1. 형변환

    • 변수의 자료형이 변환되는 것을 의미한다.
    • 특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다.
    • 암묵적 형변환과 명시적 형변환의 두 종류가 있다.

    3-2. 암묵적 형변환(upcasting) (데이터 손실이 없다)

    • 서로 다른 자료형을 연산 혹은 대입하는 경우, java 컴파일러가 자료형을 통일한다.
      이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.

      			int a = 100; 	// 정수형
                float b = a; 	// 정수형을 실수형에 대입
         
    • 암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미한다.

    • 암묵적 형변환이 허용되는 범위 : 데이터의 손실이 발생하지 않는 범위 내에서
      즉 작은 범위의 변수에서 큰 범위의 변수로 변환 되는 것을 말한다.

    • double형 데이터를 20.5를 int에 대입하는 경우에는 0.5에 대한 데이터 손실이
      불가피하므로 에러가 발생

package casting;

public class Main01 {

public static void main(String[] args) {
	short s = 100;
	int i = s;
	long l = i;
	float f = l;
	double d =f;
	System.out.println("s= "+s);	// 100	
	System.out.println("i= "+i);    // 100
	System.out.println("l= "+l);	// 100
	System.out.println("f= "+f);	// 100.0
	System.out.println("d= "+d);	// 100.0
	System.out.println("-------------------");
	
	int myage1 = 20;
	double myage2 = myage1;
	System.out.println("myage1 : " + myage1);	// 100
	System.out.println("myage2 : " + myage2);	// 100.0
	System.out.println("-------------------");
	
	char c1 = 'a';  // 97
	int num1 = c1;
	System.out.println("num1 = "+ num1);
	
	
	
	
	
}

}

3-3. 명시적 형변환(downcasting)
- 데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태

 					자료형 b = (변환할 자료형)a;
                    
  • 실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버려진다.

    					double a = 3.14d;
                   int b = (int)a;		//결과는 3
                   

package casting;

public class Main02 {

public static void main(String[] args) {
	long l = 100L;
	int i = (int)l;
	short s = (short)i;
	
	System.out.println("l : " + l);
	System.out.println("i : " + i);
	System.out.println("s : " + s);
	System.out.println("------------------");
	
	double pi1 = 3.14D;
	
	// 큰 범위의 변수를 작은 범위의 변수에 대입하는 것은 에러!
	// int pi2 = pi1;
	
	// 명시적 형변환이 필요
	int pi2 = (int)pi1;
	
	System.out.println("pi1 : " + pi1);
	System.out.println("pi2 : " + pi2);
	
	
	
	
}

}

package casting;

public class Main03 {

public static void main(String[] args) {
	double a = 10.5D;
	float b = 20.5F;
	
	/*
	  큰 범위의 변수와 작은 범위의 변수가 연산을 수행하면,
	  작은 범위의 변수가 큰 범위의 데이터형으로
	  암묵적 형변환을 수행한다.
	  그러므로 아래의 a+b는 double형의 변수가 되므로 
	  float형의 값에 대입하는 것은 에러이다.
	 */
	//float f = a + b;
	float f = (float)(a+b);
	System.out.println(f);
	
	double d = a + b;
	System.out.println(d);
	
	
}

}

  1. 조건문
    4-1. 조건문이란?

    • 무조건 실행되는 것이 아니라, 특정 조건이 충족할 경우에만 실행되는 구문

    4-2. 조건문의 종류

    • if문
      -> 주어진 '조건'이 참(true)일 경우에만 실행
    • if~else문
      -> 주어진 '조건'이 참(true)일 경우 if문이 실행되고,
      그렇지 않을 경우 else문이 실행된다.
    • if~else if~else문
      -> 조건을 여러개로 세부화 하여 사용하는 if문
    • switch문
      -> 하나의 '값'에 대하여 여러가지 경우의 수로 나누어 분기한다.

    4-3. if문
    -if문은 주어진 조건이 참일 경우 지정된 구문이 실행
    if(){
    ..실행할 구문..
    }

    • if문의 조건식
      -> 비교식(비교 연산자)
      -> 논리식(논리 연산자)
      -> boolean 값

package condition;

public class Main01 {

public static void main(String[] args) {
	int myage = 19;
	
	if(myage == 19) {
		System.out.println("19살 입니다.");
		
	}
	
	// 만약, myage가 20살이 아니라면,
	// "20살이 아닙니다" 를 출력하시오
	
	if( myage != 20) {
		System.out.println("20살이 아닙니다.");
		
	}
	
	// 만약, myage가 20살 이상이면 
	// "넷플릭스 성인 컨텐츠를 감삼할 수 있습니다"를 출력
	
	// 만약, myage가 19살 이하면
	//"넷플릭스 성인 컨텐츠를 감상할 수 없습니다"를 출력
	
	if(myage >= 20) {
		System.out.println("넷플릭스 성인 컨텐츠를 감삼할 수 있습니다");
		
	}
	
	if(myage <= 19) {
		System.out.println("넷플릭스 성인 컨텐츠를 감삼할 수 없습니다");
	}
	
	
	
}

}

package condition;

public class Main02 {

public static void main(String[] args) {
	int point = 80;
	
	/*
	   1. point가 70 초과이고, 80점 이하이면
	     "c학점 입니다." 출력
	 */

	/*
	   2. point가 70 이하 또는, 80점 초과이면
	     "범위를 벗어났습니다." 출력
	 */
	
	if( point > 70 && point <= 80) {
		System.out.println("c학점 입니다.");
		
	}
	
	if(point <= 70 || point > 80 ) {
		System.out.println("범위를 벗어났습니다.");
	}
	
	
	
	
}

}

4-5. if~else 문
- 그렇지 않으면
- if문이 조건이 참일 경우에 실행되는 구문이라면, if문의 조건과 반대되는 경우에 실행되는
구문이 else문이다.
- else 문은 독립적으로 실행될 수 없고, 반드시 if문의 뒤에 위치해야 한다.

					if(){
                    	...실행할 구문 ...
                    } else {
                    	... 반대경우 실행할 구문 ...
                    }
                      

package condition;

public class Main03 {

public static void main(String[] args) {
	boolean is_korean = false;
	
	if(!is_korean) {
		System.out.println("한국사람 입니다.");
	} else {
		System.out.println("한국사람이 아닙니다.");
	}
	
	
	
	
	
	
}

}

4-6. if ~ else if ~ else
- 여러가지 경우의 수를 분기
- if문과 else문 사이에 else if문으로 두 번째 조건, 세 번째 조건을 나열할 수 있다.
- else if문은 필요한 만큼 나열할 수 있으며, 필요치 않을 경우 else문은 생략 가능

        			if(조건){
	 		              .. 실행할 구문..
		             } else if( 2차 조건 ){
			             .. 실행할 구문 ..

} else if( n차 조건){
..실행할 구문 ..
} else {
..반대 경우 실행할 구문..
}

public class work1 {

public static void main(String[] args) {
/
만약 point가 90점 초과이고, point가 100점 이하이면 -> "A" 출력
만약 point가 80점 초과이고, point가 90점 이하이면 -> "B" 출력
만약 point가 70점 초과이고, point가 80점 이하이면 -> "C" 출력
나머지 -> "F" 출력
/

	int point = 70;
	
	if (point > 90 && point <= 100) {
		System.out.println("A");
		
	}
	else if(point > 80 && point <= 90) {
		System.out.println("B");
			
		}
	else if(point > 70 && point <= 80) {
		System.out.println("C");
	}
	else {
		System.out.println("F");
	}
}

}

4-7. swich 문 (break; 써주는 거 잊지말자)
- switch 문은 하나의 변수(기준값)에 대한 여러가지 case를 정의하는 구문이다.
- if문은 조건에 식(비교식,부등식)이 사용될 수 있지만 switch문은 분기 조건이 반드시
일치하는 "값"에 대해서만 처리 가능하다.

  				switch( 기준값 ){
	            case 값1:
		                ... 실행될 구문 ...
		                break;
	           case 값n:
		               ... 실행될 구문 ...
	                	break;
	           default:
		              .. 모든 경우에 충족되지 않을 경우 실행될 구문 ..
		      break;
	}

public class work1 {

public static void main(String[] args) {
char grade = 'D';

	switch(grade){
	     case 'A' :
	    	 System.out.println("91점과 100점 사이입니다.");
	    	 break;
	     case 'B' :
	    	 System.out.println("81점과 90점 사이입니다.");
	    	 break;
	     case 'C' :
	    	 System.out.println("71점과 80점 사이입니다.");
	    	 break;
	     default :
	    	 System.out.println("70점 이하 입니다.");
	    	 break;
	    	 
	
	}
}

}

public class work1 {

public static void main(String[] args) {
	/*
	   switch-case 문을 사용해서 grade가 A,B,C일때는 "Pass"출력,
	   그렇지 않다면 "Not-Pass"
	 */
	
	char grade = 'D';
	switch(grade) {
		case 'A' :
			System.out.println("Pass");
			break;
		case 'B' :
			System.out.println("Pass");
			break;
		case 'C' :
			System.out.println("Pass");
			break;
		default :
				System.out.println("Not-Pass");
			break;
	
	}
		
	
}

}

더 간단하게

public class work1 {

public static void main(String[] args) {
	/*
	   switch-case 문을 사용해서 grade가 A,B,C일때는 "Pass"출력,
	   그렇지 않다면 "Not-Pass"
	 */
	
	char grade = 'D';
	switch(grade) {
		case 'A' :
		case 'B' :
		case 'C' :
			System.out.println("Pass");
			break;
		default :
				System.out.println("Not-Pass");
			break;
	
	}
		
	
}

}

0개의 댓글