개발일지(일간)

22년 11월 07일 자바 기초

move2 2022. 11. 7. 21:56

이전에 잠깐 혼자 공부했었던 자바를 강의로 다시 배웠다.

이전에 공부했던 거지만 복습한다는 생각으로 다시 들어보았다.

강사님이 설명해주시는 것 중에 전에 학습하지 못했던 내용들이 몇개 있었다.

 

int[] intArray = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(intArray));

참조 자료형인 int배열이다. sout(intArray);에서 intArray에 ALT+ENTER하면 자동으로 래핑이 된다.

그 외 변수와 상수, 기본 자료형, 연산자, 조건문, 반복문 등을 복습하고 있었는데 

반복문의 for 문에서 의문이 들었다.

1부터 10까지의 숫자를 더한다고 했을때 내가 아는 코드는

int num;
for(num = 1; num <= 10; num++){
        System.out.println(num);
        }

이런 형식이었다

그런데 강의에서 강사님은 

int sum = 0;
for(int i = 0; i < 10; i++){
    sum += (i+1);
}
System.out.println(sum);

이런 형식으로 쓰셨다. 그랬는데 코드의 결과값은 같았다.

나중에 가면 이런 형식이 더 익숙해진다고 하셨는데, 그에 대해서는 잘 모르겠고, 쓸데없는 의문이 하나 생겼다.

저런 코드면 i 값이 1씩 붙어서 늘어나는데 i 값이 순차적으로 더해지는 코드와 결과가 다르지 않을까 ? 왜 결과값이 같지? 하는 생각이 들었다.

그래서 무식하지만 내가 제일 이해하기 쉬운 방식으로 이해해 봤다.

순서도를 그려보니까 이해가 갔다. 나는 코드를 얼핏 보고 [sum += (i+1)] 에서 i가 +1된다음 i++되는 것인 줄 알았는데, 이렇게 그려놓고 보니 [sum += (i+1)]의 수행문에서만 i에 +1을 하는 것이었다.

결론적으로 [sum += (i+1)]과 i++는 별개로 수행되는 수행문이었는데, 나는 두 수행문이 같이 붙어서 수행되는  것으로 착각을 했던 것이다.

이해하고 보니까 그동안 for문을 잘못 알고 써왔나 하는 생각도 들고,  참 간단한 것이었는데 왜 이해를 못했나 하는 생각도 들었다.