Wanna be Brilliant Full-Stack Developer
자바 반복문 For문 본문
무엇을 하고 싶은가? 숫자를 1부터 3까지 출력을 해보자!
sysout(1) ;
sysout(2);
sysout(3); 이렇게 출력하면 되는데 갑자기 3까지가 아니라 100까지 출력을 하라고 요청이 변경되면?
여기서 머리가 아프다.
sysout(1); ~~~~ 이렇게하면 이게 맞나? sysout을 100번찍는것은 굉장히 비효율적이다
그래서 프로그램에서 For() 이라는 반복문을 제공해준다.
우리 메서드 보면 형태가 어떻게 생겼는가?
이름있고 ()가 있는데 이렇게 괄호가 있는것을 메서드라고 불렀다.
for문도 보니까 괄호가 있다. 이것도 메서드인가? 할 수있지만 이건 호출을 할 수가 없다.
메서드는 이름으로 호출이 가능한데 이렇게 호출은할수없는 메서드처럼 생긴 애들을 Expression이라고 한다.
Expression은 무엇인가?
호출하지 않아도 실행되는 메서드라고 생각하면 된다.
for () {
} 이렇게 작성하면 누가봐도 메서드처럼 생겼는데 앞에 void가 없다.
for문에는 3가지 특징이 있다.
첫번째는 시작값이 필요하다.
괄호 안에 적혀있으니까 매개변수 자리이다. i는 지역변수이다.
왜 지역변수인가? 이 for라는 스택 내부 안에서 정의되었기 때문에 지역변수이다.
그리고 세미콜론(;)을 하고 한칸 띄우고
그러면 시작 i값은 0이다. 그러면 i는 언제까지 for문을 도는가? i가 3보다 작을때까지 돈다.
그러면 i는 0이니 3보다 작으니까 영원히 돌거같은데? 그런데 아니다.
이 스택내부가 한번씩 실행될때마다 i가 i+1이 되어서 1씩 증가한다.
값이 0,1,2가 나왔다.
그러면 아까전에 1부터 100까지 출력하라고 했으니까 조금만더 수정해보자!
이렇게 하면 3보다 작을때까지 이 for문이 도니까 1과 2가 값으로 나온다.
이렇게 for()문을 호출하지 않았는데도 이렇게 실행이 된다는것을 expression이라고 한다.
이런걸 표현식이라고 한다.
1부터 100까지 출력하려면 i가 100보다 작으면 되는가? 아니다. 99까지 나온다.
그러면 101까지라고 해야지 100까지 나온다.
그러면 어떻게 실행되었는지 실행 순서를 한번보자!
제일 처음에 i = 1 이다. 그리고 i가 101보다 작나요? 이렇게 조건에 만족하면 제일 처음에
내부를 한번 실행을 한다.
그다음에 종료되지 않고 다시 올라와서
i값을 1 증가시키고 조건 ( i<101 )을 확인한다. 그리고 내부를 실행하고 다시 실행하고
i값을 1 증가시키고 조건을 확인 다시 실행 이런식으로 실행하기 때문에
조금 특이한것이 int i=1;을 초기화는 for문이 시작할때 단 한번만 실행이 된다.
그리고 제일 끝에 있는 i= i+1이 부분은 이걸 증감식이라고 한다.
증감식은 왜 증감식이라고 하는가? 증가할 수도있고 감소할수도 있기 때문이다.
애는 언제 실행하는가? for문이 한번 실행된 이후부터 계속 실행이 된다.
처음에는 실행이 안된다는것이다. 처음에는 초기화 하고 조건확인하고
내부 실행!
그다음부터는 int i= 1;은 실행하지 않고 i<101; , i=i+1이 두개만 실행한다.
즉 가운데에 있는 조건문은 처음부터 끝까지 계속 실행이 된다.
이렇게 구분을 할 수 있는것이 For문이다.
구구단중에 2단을 출력하는 프로그램을 만들어보세요!
sysout("2x1 =2");
sysout(2x2 = 4");
......sysout(2x9=18);
2단을 작성했다. 근데 갑자기 다른 요청이 들어왔다.
근데 3단까지 실행해달라고 하는것이다.
근데 4단도 해달라고 했다?! 근데 또 이렇게 다 작성하기가 귀 찮다.
2단에서는 2가 , 3단에서는 3이 계속 적혀 있다.
그래서 이부분을 다시 안적기 위해서는 조금만 머리를 쓰면 될것같다.
혹시나 내가 4단을 해줬는데 5단을 해달라고 할 수 있으니까!
이렇게 하고 보니까 3단은 n을 적용 못한다. 왜냐하면 2단이 아니니 3단이니까..
이 상태에서 4단을 만들어보자!
이렇게 만든 모습이 굉장히 답답해 보인다.
무엇을 수정하면 될까?
3단과 4단은 그대로 활용하면 된다.
그리고 5단을 만들어보자고 하면?!
그냥 복사 붙여넣기도 할 수 있지만 반복문을 통해서 어떻게하면 쉽게 할 수있을지도 생각해보자!
지금 이걸 코드의 한뭉치 A라고 하면 전부다 똑같은 A가 반복이 되고 있다.
변화하는건 n값 밖에 없다.
그러면 이걸 봤을때 첫번째로 n의 시작 값은 2이다. = int n = 2
n은 1씩 증가한다 = n = n+1
언제까지? n은 10보다 작을때까지 반복한다 = n <10;
이걸 for문 안에 넣어서 이 코드 뭉치를 한번 실행해보자!
근데 여기서 보니까 저 곱해지는 숫자도 똑같이 반복이 된다?!
근데 지금은 안할것이다. 저 부분도 줄일 수 있지만 나중에 해보자!
https://colossus-java-practice.tistory.com/40
'Some Memos > Java' 카테고리의 다른 글
조건문 과 반복문 연습문제를 통해 숙달! (0) | 2023.03.15 |
---|---|
자바 반복문 및 조건문 While 과 IF (0) | 2023.03.15 |
자바 2차원 배열이란? (0) | 2023.03.14 |
자바 배열이란? (0) | 2023.03.13 |
자바객체지향프로그래밍의 이해 SRP와 DIP (1) | 2023.03.13 |