코딩과 결혼합니다

[Java 문법 종합반] 2주차 : 연산자, 조건문 본문

2세/Java

[Java 문법 종합반] 2주차 : 연산자, 조건문

코딩러버 2023. 5. 24. 00:37
728x90

연산자와 피연산자

연산자 : 덧셈, 뺄셈 처럼 계산할 '기호'

피연산자 : 연산자로 인해 계산되는 '숫자'

 

 

 

연산자의 종류

 

논리 연산자

&&(AND = 피연산자 모두 참), ||(OR = 피연산자 둘중 하나라도 참), !(피연산자의 반대 boolean 값)

 

대입 연산자

- 기본 대입 연산자

- 복합 대입 연산자 

    += 1은 ++과 동일

    -= 1 은  --와 동일

 

형변환 연산자

int intNumber = 93 + (int) 98.8; // 93 + 98

double doubleNumber = (double) 93 + 98.8; // 93.0 + 98.8

int는 정수형으로 0.8을 떼어낸 98을 더해줌

doble은 실수형으로 93을 93.0으로 계산함

 

 

삼항 연산자

: 3가지 피연산자가 존재하여 삼항 연산자 라고 한다.(조건/참결과/거짓결과)

int x = 1;
int y = 9;
boolean b = (x == y) ? true : false;
System.out.println(b); // false

String s = (x != y) ? "정답" : "";
System.out.println(s); //

int max = (x > y) ? x : y;
System.out.println(max); // 9

int min = (x < y) ? x : y;
System.out.println(min); // 1

 

? 뒤에 참이면 왼쪽의 값을 거짓이면 오른쪽의 값을 도출한다.

 

int max를 구할 때에 x가 y보다 크다라는 조건은 사실이 아니므로 오른쪽의 y의 값 '9'가 나온다.

int min을 구할 때는 x가 y보다 작다라는 조건이 참이므로 왼쪽의 x의 값 '1'이 나온다.

 

 

instance of 연산자

: 피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참/ 거짓을 응답해주는 연산자

(객체명) instance of (클래스명)

 

 

연산자 우선순위

산술 > 비교 > 논리 > 대입

 

단, 괄호로 감싸주면 괄호안의 연산이 최우선순위로 계산된다.

int x = 2;
int y = 9;
int z = 10;

boolean result = x < y && y < z; // <,> 비교연산자 계산 후 && 논리 연산자 계산
System.out.println(result); // true

result = x + 10 < y && y < z; // +10 산술연산자 계산 후 <,> 비교연산자 계산 후 && 논리 연산자 계산
System.out.println(result); // false

result = x + 2 * 3 > y; // 산술연산자 곱센 > 덧셈 순으로 계산 후 > 비교연산자 계산
System.out.println(result); // false (8>9)

result = (x + 2) * 3 > y; // 괄호안 덧셈 연산 후 괄호 밖 곱셈 계산 후 > 비교연산자 계산
System.out.println(result); // true (12>9)

 

 

산술변환

:연산 전에 피연산자의 타입을 일치시키는 것(둘중에 저장공간 크기가 더 큰 타입으로 일치)

 

public class Main {

    public static void main(String[] args) {

    short x = 10;
    int y = 20;

    int z = x + y; // 결과값은 더 큰 표현타입인 int 타입의 변수로만 저장할 수 있습니다.

    long lx = 30L;
    long lz = z + lx; // 결과값은 더 큰 표현타입인 long 타입의 변수로만 저장할 수 있습니다.

    float fx = x; // 결과값은 더 큰 표현타입인 float 타입의 변수로만 저장할 수 있습니다.
    float fy = y; // 결과값은 더 큰 표현타입인 float 타입의 변수로만 저장할 수 있습니다.
    float fz = z; // 결과값은 더 큰 표현타입인 float 타입의 변수로만 저장할 수 있습니다.
    System.out.println(lz);  //60
    System.out.println(fx);  //10.0
    System.out.println(fy);  //20.0
    System.out.println(fz);  //30.0
  }

}

 

 

 

 

조건문, 반복문

 

조건문

if 문

if (조건)

boolean flag = true;

if (flag) {
    System.out.println("flag 값은 true 입니다."); // flag 값은 true 입니다. 출력
}

if의 소괄호 안의 조건이 boolean 값 true를 만족하면 중괄호 안의 연산을 수행

 

 

 

if(조건)-else

boolean flag = false;

if (flag) {
    System.out.println("flag 값은 true 입니다."); // 미출력
} else {
    System.out.println("flag 값은 false 입니다."); // flag 값은 false 입니다. 출력
}

if문 조건이 거짓일 경우에 따른 연산을 수행하기 위해 else{연산} 형태로 사용

if의 소괄호 안의 조건이 boolean 값 false를 만족하면 else의 중괄호 안의 연산을 수행

 

 

 

if(조건)-else if(조건)

int number = 2;

if (number == 1) {
    System.out.println("number 값은 1 입니다."); // 미출력
} else if (number == 2) {
    System.out.println("number 값은 2 입니다."); // number 값은 2 입니다. 출력
} else {
    System.out.println("number 값은 모르는 값입니다."); // 미출력
}

if문 조건이 거짓일 경우에 다시 한번 다른 조건으로 체크해서 참일 결우에 연산을 수행

 

 

 

중첩 if(조건)

boolean flag = true;
int number = 2;

if (flag) {
   if (number == 1) {
      System.out.println("flag 값은 true, number 값은 1 입니다."); // 미출력
   } else if (number == 2) {
      System.out.println("flag 값은 true, number 값은 2 입니다."); // flag 값은 true, number 값은 2 입니다. 출력
   }
} else {
   if (number == 1) {
     System.out.println("flag 값은 false, number 값은 1 입니다."); // 미출력
   } else if (number == 2) {
     System.out.println("flag 값은 false, number 값은 2 입니다."); // 미출력
   }
}

 

 

 

switch(피연산자) / case(조건)

switch(피연산자) { case(조건) : (연산)  }

switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행

** 각 case의 연산문 마지막에는 break;를 꼭 넣어줘야 함!!

 

if 문과 switch문의 차이점

1. 복합조건

 : if 문은 복합조건을 지원하지만 switch 문은 피연산자 한개에 대한 조건만 지원

2. 코드중복

 : if문은 상대적으로 코드 중복이 많고, switch 문은 코드 중복이 적다.

 

 

 

반복문

for문

for(초기값; 조건문; 증가연산) { (연산) }

for(int i=0; i < 4; i++) { // 변수 i 값은 0 ~ 3 까지 반복
     System.out.println(i + "번째 출력"); // i 변수와 문자열 합치기
}

// 출력
0번째 출력
1번째 출력
2번째 출력
3번째 출력

 

 

 

향상된 for 문

 

for(변수 타입 변수 명 : 목록변수) { (연산) }

변수 목록을 출력할때 쓴다.

int[] numbers = {3,6,9,12,15};
for(int number: numbers) {
       System.out.print(number + " ");
}

// 출력
3 6 9 12 15

 

 

 

while 문, do-while 문

 

while (조건){ 증감 연산을 꼭 넣어줘야 한다! }

// while
int number = 0;
while (number < 3) {
       number++;
       System.out.println(number + "출력!");
}

 

 

do 안에 있는 로직을 먼저 수행한 후에 while문

//do ~ while
int number = 4;
do{
         System.out.println(number + "출력!");
} while (number < 3);

number가 4이므로 while문 까지 가지 않고 바로 출력 되고 끝남.

* 조건이 최초에 만족하지 않더라도 어떤 작업은 무조건 선행해야 된다라고 한다면 do-while 수행

 

 

 

break

 

: 가장 가가운 블록의 for문 또는 while, switch 문을 중단

int number = 0;
while (number < 2){
       number++;
       if (number ==2 ){
                 break;
       }
       System.out.println(number + "출력!");
}
더보기

//1 출력!

 

 

for (int i=0; i<10; i++){
       System.out.println("i: " +i);
       if (i == 2){
            break;
       }
       for(int j=0; j<10; j++){
            System.out.println("j: " +j);
            if(j==2){
                break;
            }
       }
}
더보기

i: 0
j: 0
j: 1
j: 2
i: 1
j: 0
j: 1
j: 2
i: 2

 

 

 

 

continue

 

continue를 만나면 바로 그 다음 반복문으로 넘어가게 된다.(하위 로직은 그냥 지나침)

int number = 0;
while (number < 3){
        number++;
        if(number == 2){
               continue;
        }
        System.out.println(number + "출력");
}
더보기

1출력
3출력