오늘은 국비교육 3일차이다.
같다 ==
다르다 !=
초과 >
이상 >=
미만 <
이하 <=
-주어진 식이 참인지 거짓인지만 판별 가능하므로, 연산 결과는 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
}
}
논리 연산자
2-1. 두 개 이상의 비교 연산자의 결과는 boolean 값에 대해 추가로 AND나 OR 연산을 수행하여 결과를 얻는다.
2-2. OR의 의미를 갖는 ||
2-3. AND의 의미를 갖는 &&
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);
}
}
형변환(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);
}
}
조건문
4-1. 조건문이란?
4-2. 조건문의 종류
4-3. if문
-if문은 주어진 조건이 참일 경우 지정된 구문이 실행
if(){
..실행할 구문..
}
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;
}
}
}