JAVA

23-01-11 수업내용 정리

모건이삼촌 2023. 1. 13. 23:57

2023-01-11 09:30 ~ 18:30 수업진행

 

※ 수업내용

 

1. 삼항연산

삼항연산은 3개의 항으로 이루어진 연산이다.

특정 조건식에 따라 조건이 참이나 거짓이냐에 따라 다르게 실행할 수 있는 연산으로 if문을 이용한 조건문과 동일한 역할을 하며 if문으로도 구현이 가능해 사용빈도가 높진않다.

짧은코드로 간단하게 조건식을 구현할 때 종종 사용된다.

아래 표를 보자

 

삼항연산의 구조

조건식이 참(true)이면 값1 또는 연산식이 실행되며, 그렇지 않으면(false) 값2가 실행된다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
package chapter4;
 
public class OpEx7 {
    
 
    public static void main(String[] args) {
        
        int score = 80;
        String pass = score >= 60 ? "합격" : "불합격";
        System.out.println(pass);
        
    }
}
cs

 

실행 결과

 

2. 문자열 연산

문자열 연산은 + 연산자만 사용 가능하며, 문자열과 문자열을 연결해 주는 연산이다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package chapter4;
 
public class OpEx8 {
    public static void main(String[] args) {
        
//        문자열은 +연산자만 사용 가능
 
        
        String name = "홍길동";
        System.out.println("안녕하세요 " + name + " 입니다.");
        
        int height = 180 ;
        System.out.println("저의 키는 " + height + "cm입니다.");
//        height를 문자열로바꿔서 결합
        
        
        //String weight = 75.5; //에러발생 (문자자료형 변수에는 숫자 대입 못함)
        String weight = 75.5 + "";
//        weight를 문자열로 바꿔서 결합하기 때문에 75.5이 그대로 출력된다.
        System.out.println("제 몸무게는 " + weight + "kg입니다.");
        
        int ageInt = 30;        //정수
        String ageStr = "30";    //문자열
        
        
        String str = 7 + 7 + "7";
        System.out.println(str);
//        숫자7과 숫자7을 더해 14가 되고 숫자 14와 문자열 7을 더해 문자열 147이 된다.
        
        String str2 = "7" + 7 + 7;
        System.out.println(str2);
//        문자열7과 숫자7을 결합하면 77이 되고 다시 문자열77과 숫자 7을 한번 더 결합하면 777이 된다.
        
        
        
    }
 
}
 
cs

실행 결과

3. 문자열 우선순위

연산자 우선순위 표

★제어문

 

1. 프로그램 실행제어 

main메서드가 선언되면 그 main메서드에서 위에서부터 차례대로 실행된다.

 가. 변수 선언

 나. 변수 대입

 다. 변수 연산

 라. 변수 출력

위와 같은 프로그램을 만들었다면 1번부터 4번까지 차례대로 실행되는 것이다.

만약 3번의 변수연산을 특정 경우에만 실행되게 한다면 이 프로그램은 3번을 건너 뛰고 1,2,4번 순으로 실행되게 될 것 이다.

또한 3번 변수 연산을 여러번 반복 실행되게 할 수도 있는 것이다.

이렇게 개발자가 직접 프로그램의 실행 순선를 제어할 수 있으며, 이 실행순서를 제어하는 구문을 제어문이라고 부른다.

아래 예시를 보자

플로우 차트

A회사에 입사지원하면 면접을 보게 되는데, 면접결과에 대한 조건이 발생한다.

이 조건이 만족될 경우 입사라는 부분이 실행될 것이고,

만족하지 않으면 다음 프로그램은 실행되지않는다. 

 

제어문은 조건문과 반복문이 있다.

 

2. 조건문

조건문은 if문과 swich문이 있으며 if문에 대해 알아보자.

 

1) if문

if문은 구조에 따라 세가지로 구분할 수 있으며, if문, if~else문, if~else if문으로 나눌 수 있다.

프로그램의 실행 중에 if문을 만나면 조건을 확인한다.

if라는 영어 단어는 우리말로 만약 ~라면 이라는 뜻을 가지고 있는데, 프로그램에서도 "만약 조건식이 참이라면" 이라고 생각하면 외우기 쉽다,

if 뒤에 괄호안에 있는 조건식을 확인해서 이 조건식이 참(true)이라면 중괄호{} 블록 안의 실행문이 실행되고 그렇지 않다면 (false) if문의 블럭 밑으로 넘어가며 다음 프로그램으로 실행되게 된다.

실행문이 한줄 이라면 중괄호를 생략해도 되지만, 코드의 가독성을 위해 중괄호를 생략하지 않고 코딩하도록 하자.

if문의 괄호안에는 조건식이 오는데, 이 조건식의 판단결과는 true 아니면 false의 결과를 갖는다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package chapter5;
 
public class IfEx {
    
    public static void main(String[] args) {
 
    int score = 50 ;
   
    System.out.println("시험 시작");
    if (score >= 60
//    예제문 뒤에는 항상 괄호가 쓰여야 하며, 괄호 안에는 boolean 자료형이 쓰인다.
 
        System.out.println("합격입니다");
//        조건식에 만족 해야만 출력함
 
     else 
//        else는 단독으로 사용할 수 없으며 항상 if문에 종속되어 쓰인다.
 
        System.out.println("불합격 입니다");
//        조건식에 만족하지못할시 출력된다.
    
    System.out.println("시험 끝");
    
    
//    예제문이 한줄이라면 블럭을 쓰지 않아도 되지만 가독성을 위해 작성하는게 좋다.
    
    }
 
}
cs

실행 결과

위의 예제에서 else문이 추가됐는데, else문 역시 중괄호 블럭을 가지고 있다.

if문의 조건식이 참이면 다음 실행문1("합격입니다.")이 실행되고 거짓이면 else블록의 실행문2(불합격입니다.)가 실행후 "시험 끝" 이라는 문자열이 출력된다.

 

이제 else if를 알아보자.

프로그램의 실행 순서의 이해 처음 if문의 조건식1을 만나 해당 조건식이 참이면 실행문1을 실행하고, 거짓이면 두번째 else if문의 조건식2를 만나 조건을 확인하여 참이면 실행문2를 실행하는데, 이 조건식2도 거짓이라면 마지막 else문의 블록안에 실행문 3이 실행된다.

else if문은 몇 개라도 추가될 수 있으며, 아무리 추가되도 전체 조건 중 하나라도 만족하면 if문 자체가 종료된다.

이제 else if가 추가된 예제를 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package chapter5;
 
public class IfEx2 {
 
    public static void main(String[] args) {
        
        int score =  80;
        String grade = "";
        
        System.out.println("학점부여 시작");
        if (score >= 95) {
            grade = "A+";
        } else if (score >= 90) {
            grade = "A";
        } else if (score >= 85) {
            grade = "B+";
        } else if (score >= 80) {
            grade = "B";
        } else if (score >= 70) {
            grade = "C";
        } else if (score >= 60) {
            grade = "D";
        } else  {
            grade = "F";
        }
        System.out.println("당신의 학점은 "+grade+"입니다.");
        System.out.println("학점부여 끝");
    }
 
}
 
cs

실행 결과

2) 중첩 if문

if문의 중괄호 블록안에 또 다른 if문이 포함되는것을 중첩if문이라고 한다.

안쪽의 if문은 바깥쪽의 if문의 조건식이 참일경우에만 실행된다.

안쪽 if문의 실행문은 안쪽, 바깥쪽 if문이 모두 참일경우에만 실행된다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package chapter5;
 
public class IfEx3 {
    
    public static void main(String[] args) {
        
        int math = 60 ;
        int eng = 55 ;
 
        if (math >= 60) {
            if (eng >= 60) {
                System.out.println("통과");
            }
            else {
                System.out.println("탈락");
            }
        }
        
        
        // 논리연산 적용
        if (math >= 60 && eng >= 60) {
        System.out.println("통과");
            
        } else {
            System.out.println("탈락");
        }
 
    }
                
 
}
 
cs

실행 결과

3. swich문

swich문은 if문과 다르게 조건식의 결과 (true / false)여부에 따라 중괄호 블록 내부의 실행문이 실행되는 것이 아니라, 변수의 값에 따라 실행문을 선택하게 되는 구문이다.

swich문의 싱행순서는 swich 괄호안에 변수를 넣어 각 case의 값과 비교해서 같은 값을 갖는 case구문의 실행문을 실행하고, break를 만나 전체 swich문을 종료하고 빠져나오게 된다.

같은 값을 갖는 case가 없다면 default 구문의 실행문이 실행된다.

주의할 점은 break를 쓰지 않으면, break를 만날 때까지 또는 break가 없으면 모든 case가 계속 실행되므로 반드시 각 case마다 실행문 밑에 break를 넣어줘야 한다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package chapter5;
 
public class SwichEx {
 
    public static void main(String[] args) {
        
        int number = 2;
                
        switch (number) {
            case 1 :
                System.out.println("1번");
                break;
            case 2 :
                System.out.println("2번");
                break;
            case 3 :
                System.out.println("3번");
                break;
            case 4 :
                System.out.println("4번");
                break;
            case 5 :
                System.out.println("5번");
                break;
            default :
                System.out.println("6번");
                
        }
    }
 
}
 
cs

 

실행 결과

number 변수에 정수 2을 대입하고 이 변수를 swich 괄호 안에 넣어 각 case로 비교한다.

case 2 : 에 해당되므로 "2번"이 출력되고 15번 라인의 break를 만나 swich문이 종료된다.

 

다음 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package chapter5;
 
import java.util.Scanner;
 
public class SwitchEx2 {
    
    public static void main(String[] args) {
        
        System.out.println("점수를 입력하세요.");
        Scanner scan = new Scanner(System.in);
                
        int score = scan.nextInt();
        String grade = "";
        switch (score / 10 ) {
            case 10:
            case 9 :
                grade = "A";
                break;
            case 8 :
                grade = "B";
                break;
            case 7 :
                grade = "C";
                break;
            case 6 :
                grade = "D";
                break;
            default :
                grade = "F";
        }
        System.out.println("학점 : "+grade);
        
        Scanner close;
        
        
        
    }
 
}
cs

실행 결과

위 예제는 콘솔에서 점수를 입력받아 학점을 출력하는 프로그램이다.

 

swich문의 괄호안에 값에 올수 있는 자료형은 byte, short, int, char, String 만 가능하다.

이 중 String 은 자바 1.7이상에서만 가능하므로 참고하자.

 

4. 반복문

반복문은 주어진 조건이 true인 동안 반복문의 중괄호 블록의 실행문을 반복적으로 실행하고자 할 때 사용한다.

모든 반복문은 조건문이 포함되어 있으며, 반복문의 종류는 for문, while문, do~while문이 있다.

 

 1) for문

for문은 조건식이 true인 동안 반복되는 것이다. 아래 for문의 구조를 보자

for문의 구조

for문의 구조에는 괄호안에 초기화식, 조건식, 증감식이 존재한다.

초기화식은 말 그대로 변수를 초기화 하는 식이,

조건식은 비교연산 또는 논리연산이,

증감식은 1증가, 1감소하는 식이 오게된다.

for문의 흐름을 보면 1번 초기화식이 실행되고,

2번 조건식을 확인해서 true면

중괄호 블록 내의 실행문이 실행되고,

증감식이 오게된다.

그 후 2 -> 3 -> 4가 반복되면서 조건식이 true인 경우는 계속 반복실행, false일 때 for문을 빠져나가고 종료된다.

아래 예제를 보자

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package chapter5;
 
public class ForEx {
 
    public static void main(String[] args) {
        //    1초기화     2조건      4증감
        for (int i=0; i < 10; i++) {
        //            3실행
            System.out.println("i = "+i);
        }
    }
 
}
 
cs

실행결과

위 예제에서 정수타입의 변수 i는 0으로 초기화 하고,

i는 10보다 작다는 비교연산의 조건을 걸고,

조건이 만족할 때 실행문이 실행되고

마지막에 1씩 증가하는 i++의 증감식이 실행된다.

위 조건이 10이 될때까지 실행문이 반복되며

10이 되는 순간 조건문의 조건이 만족(false)하지않아 for문은 종료된다.

 

2) while문

 while문은 for문에 비해 간단하다.

while문은 괄호안에 조건식만 넣고 조건식이 true 인 경우에만 실행문이 실행된다.

 

3) do~while문

while문과 비슷하지만 앞에 do가 추가됐다.

do~는 하다 라는 의미로 생각해보면 while문의 조건 확인전에 일단 "실행문을 실행한다." 라고 이해하자

그래서 최소한 무조건 한번은 실행되게 된다.

 

4) 중첩 반복문

중첩 반복문은 반복문 블록 안에 반복문이 존재하는 경우이다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package chapter5;
 
public class Gugu {
    
    public static void main(String[] args) {
        
        for (int j=2; j<5; j++) {
            for (int i=1; i<5; i++) {
                System.out.println("j = "+j+" , i="+i);
            }
        }
    }
 
}
 
cs

실행 결과

위의 실행결과를 보면 처음에 j가 2,3,4로 변할 때 j는 계속 2이고, 다음 반복 3이 되면 다시 i가 2,3,4로 반복된다.

 

5) 반복문의 중지 

반복문이 실행되는 도중 특정 조건에 따라 반복이 중지되도록 해야되는 경우가 발생할 수 있는데, 이때 break와 continue를 사용한다.

break문은 이름 그대로 반복문을 아예 중지할때 사용한다.

반복중에 break를 만나면 반복문이 멈추고, 빠져나오게 된다.

반복문은 보통 if문과 함께 사용되는 경우가 많으며 해당 조건에 따라 반복을 중지해야 되는 경우 쓰인다.

아래 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package chapter5;
 
public class BreakEx {
 
    public static void main(String[] args) {
        
        for (int i=0; i<10; i++) {
            if (i == 5) {
                break;
            }
            System.out.println(i);
        }
        
        
        for (int i=0; ; i++) {
//            조건식이 삭제되어도 true로 인식한다.
            if (i == 5) {
                break;
            }
            System.out.println(i);
        }
 
    }
    
}
 
cs

실행 결과

위 예제는 for문을 통해 i가 0.부터 9까지 10번 반복되며 출력되는 코드인데,

if문 조건으로 i == 5 이면 break문이 실행된다.

i가 4일때까지는 출력문이 실행되는데, i가 5가되면 for문이 중지되기 때문에 break 아래쪽 11라인은 실행되지 않는다.

즉 4까지만 출력되고 종료되는 것이다.

 

반복문의 중지를 끝으로 23-01-11 수업내용 정리를 마치겠다.

'JAVA' 카테고리의 다른 글

23-01-16 수업내용 정리  (0) 2023.01.16
23-01-12 수업내용 정리  (0) 2023.01.15
23-01-13 수업내용 정리  (0) 2023.01.15
23-01-10 수업내용 정리  (0) 2023.01.13
23-01-09 수업내용 정리  (0) 2023.01.12