프로그래밍공부노트

Day 7 - JAVA(if-else, while, do-while, break, continue) 본문

JAVA

Day 7 - JAVA(if-else, while, do-while, break, continue)

SANGJIN-YU 2021. 2. 18. 20:25
반응형

21 - 2. 기본타입의 초기화 값 vs 참조타입의 초기화 값

 1) 기본타입은 각 타입의 default값을 입력한다.

    -> local variable이 아니라 instatance variable로 생성되는 member field의 경우

         member field는 class가 instance가 되었을 때 사용가능한 변수 => instance variable (new)

 2) 참조타입은 reference를 가지고 있음 객체명

    -> 기본타입은 각 타입의 default값을 가지고 있지만 참조타입은 기능과 정의가 다 다르기 때문에 동일한 특정한

        주소를 가질 수 없다

    -> 선언한 참조타입은 heap에 객체가 없다 표기(heap에 주소를 연결하지 못했다)

 

 21 - 3. 메소드의 호출

 1) 객체를 생성하는 호출 

    ex) A a = new A();

            a.make()

 2) static 호출

    ex) A.make();

    **메소드를 호출했다면 반드시 반환타입을 확인하세요.

 

 21 - 4. 객체의 생성

 1) 기본타입이 아닌 것은 모두 다 객체

 2) heap 영역

 3) reference hashcode가 new를 통해 인스턴스화할 때 부여됨

 4) invocation reflection

 

 21 - 5. 증감 연산자(++,--)

 1) ++a, --a : 선증가(감소) 후 처리

 2) a++, a-- : 선처리 후 증가(감소)

 

 특징 : 1씩 증가

    a = a + 1;

    a += 1; / a = +1  a + 1 = a

    a++; ++a;

 

	public static void main(String[] args) {
		
		int a = 1;
//		a = a + 1;
//		a += 1; // ++a;
		
		System.out.println(a++); // 1 -> 1출력 -> 2
		System.out.println(a++); // 2 -> 2출력 -> 3
		System.out.println(++a); // 3 -> 4로 증가  -> 4출력 -> 4
		System.out.println(a--); // 4 -> 4출력 -> 3
		System.out.println(--a); // 3 -> 2감소 -> 2출력 -> 2
		System.out.println(a--); // 2 -> 2출력 -> 1
		System.out.println(a); // 1
	}
}

 21 - 6. iteration 반복문

 1) for문 : 초기값 조건 증감이 있는 선택 반복문

    ex) 1층을 만드는 설계도가 있는데 4층을 만들고 싶다.

          (시작 조건 종료 조건 증감이 있는 경우 for문 사용)

 

 

  - 1부터 10까지의 합을 구해보자!

for ( 선언; 조건; 증감 ) {}  

누적값과 마지막값을 모두 출력하겠다

		int sum = 0; // 연산에서 사용하기 위해서 초기화 필요하다
		int i = 0;
		for (; i < 10; i++) {
//		System.out.println((i+1)*2);
			sum = sum +(i+1);
			System.out.println("누적진행 값:" + sum);
		}
		System.out.println(i +"번째최종누적 값 :" + sum);

디버깅표

i i < 10 sum 출력 i++
0 T 0 + 1 = 1 1 0
1 T 1 + (1+1) = 3  3 1
2 T 3 + (2 + 1) = 6 6 2
3 T 6 + (3 + 1) = 10 10 3
4 T 10 + (4 + 1) = 15  15 4
5 T 15 + (5 + 1) = 21 21  5
6 T 21 + (6 + 1) = 28 28 6
7 T 28 + (7 + 1) = 36 36 7
8 T 36 + (8 + 1) = 45 45 8
9 T 45 + (9 + 1) = 55 55 9
10 F      

누적진행 값:1
누적진행 값:3
누적진행 값:6
누적진행 값:10
누적진행 값:15
누적진행 값:21
누적진행 값:28
누적진행 값:36
누적진행 값:45

누적진행 값:55
10번째최종누적 값 :55

 - 피보나치수열

package com.min.edu.iterator;

import java.util.Scanner;

public class Fibonachi_Logic {

	/**
	 * 피보나치 수열 만들기
	 * 초기값으로 주어진 두개의 수를 합한 값을 다시 이전의 마지막 수와 더하여 진행되는 수열
	 * @param args
	 */
	public static void main(String[] args) {
		
		System.out.println("피보나치 수열의 갯수를 적어주세요");
		
		Scanner scan = new Scanner(System.in);
		
		int inNum = scan.nextInt();
		
		int num1 = 1;
		int num2 = 2;
		
		System.out.printf("%d \t %d \t", num1, num2);
		
		for (int i = 0; i < inNum-3; i++) {
			int num3 = num1 + num2;
			
			System.out.printf("%d \t",num3);
			
			num1 = num2;
			num2 = num3;

		}
		
	}
}

디버깅표

num1 num2 i i<6-3 num3 i++
1 2 0 0 < 3 T 3  
2 3       0
    1 1 < 3 T 5  
3 5       1
    2 2 < 3 T 8  
5 8       2
    3 3 < 3 F    

 

 2) while문 : 무한 반복문

    ex) 게임을 진행한 후 다시 할거냐?

 

import java.util.Scanner;

public class Game369_Process {

	
	//TODO 03.게임의 진행을 처리해주는 메소드
	public void gameProcess() {
		String ch;
//		int ch;
		do {
			gamePlay();
			Scanner scan = new Scanner(System.in);
			System.out.println("게임을 한번더 하시겠습니까? Y/N");
			ch = scan.nextLine();
//			ch = scan.nextInt();
		} while(ch == "Y");
     }
  }

 

break / continue

public class Statement_if_while_break_continue {

	public static void main(String[] args) {
		
		
		for (int i = 0; i < 100; i++) {
			System.out.println(i+);
			
			
			if(i==50) {
				break;
			}
		}

 0부터 1씩 증가하면서 i를 출력하다가 i가 50이 되면 for문을 빠져나온다

 

public class Statement_if_while_break_continue {

	public static void main(String[] args) {
        int i = 0;
		for (; i < 10; i++) {
			
			if(i > 5) {
				System.out.println("안해");
				continue;
			}	
			System.out.println(i);
		}
		System.out.println("마지막번호 : " + i);

i가 0부터 1씩증가하면서 i를 출력하다가 i가 5보다 커지면 "안해"를 출력한다. int i를 for문 밖에서 선언하여 설정하여 중간에 "안해"가 출력되다가 마지막 번호 10번 출력이 가능하다.

 21) JAVA Statement

증감연산자 for문  while문  break / contiune
++,--
변수의 값을 1씩 증가
변수의 값을 1씩 감소
a = a+1
a = a-1

int a = 100
1) 선처리 후증가(a++)
 : 100
2) 선처리 후감소(a--)
 : 100
3) 선증가 후처리(++a)
 : 101
4) 선감소 후처리(--a)
 : 99 
초기값, 조건, 증감이 있는 선택 반복문

for(int i = 0; i < 5; i++){

연산

}

순서 :
값입력 -> 판단 -> 연산 -> 증감 -> 판단 -> 연산 -> 증감.....판단(false) -> 종료
조건이 있는 무한 반복문
1) 조건을 판단 후 실행
while(조건){
}

2) 실행 후 판단 
do{
}while(조건);
반복문의 제어를 위해서 사용함

break문은 반복문의 종료
반복문을 나옴

continue문은 반복문에서 continue를 실행했을 경우 아래의 연산을 동작하지 않고 처음으로 복귀함

 21) 3 6 9 게임 로직

 1) 1부터 숫자가 1씩 증가하고 종료는 20까지

 2) 숫자중에서 3을 포함하고 있으면 숫자가 아닌 짝 이라고 출력

 

public class CheckNum {
	
	// 0이 아니면서 3의 배수인지 체크하는 메소드
	public boolean checkTest(int num) {
		
		boolean isc = false;
		int temp = num%10;
		if(temp != 0 & temp%3 == 0) {
			isc = true;
		} else {
			
		}
		return isc;
	}
 }

 

	//3 6 9 게임 숫자 출력하는 메소드 
	public void playGame() {
	
		for (int i = 0; i < 20; i++) {
			int num = i + 1;
			 if(checkTest(num)) {
				 System.out.println("짝");
			 } else {
				 System.out.println(num);
			 }
		}
	}

 

public class Game_Main {

	public static void main(String[] args) {
	
		
		CheckNum cn = new CheckNum();
		cn.playGame();
	}

}

1 2 짝 4 5 짝 7 8 짝 10 11 12 짝 14 15 짝 17 18 짝 20  출력됨

반응형