본문 바로가기
Back-End/Java

[면접] 자바 문제 (for문 안에 객체 ????..)

by LeeGangEun 2022. 7. 22.
public class Test {

    public static void main(String args[]) {
        int sum = 0;

        for (int i = 0; i < 10_000_000; i++) {
            sum += i;
            Test test = new Test();
        }
        System.out.println("sum =" + sum);
    }
}

질문: 정상적으로 동작이 될까요?..
 대답:  아니요 (잘된다...)...

3가지의 속임수가 있다..

1. int형은 21억까지 밖에 못받음..(...기본) (눈치못챔)

2. 10_000_000 언더바 표기법은 자바7버전 이후부터 사용 가능 

3. for문안에 test 객체 생성?.. 이건 왜 실행이 될까 모르겠다.. 
답 : 내 생각에는 for문이 돌면서 이름이 겹치기 때문에 에러날줄 ...?

-> for문이 끝나는시점 gc에 의해 삭제 되기때문에?..
-> 찾아보니까 메모리 누수때문에 지양하는 방식이다.
-> gc동작은 메모리가 부족하면 그때 동작한다고 한다.

그럼 무한으로 객체를 생성 하는건가 ?? 뭐지 ??

라고 검색을 해보니 여러가지 의견들이 있군..

더 공부해야겠 .... 다 ,,,,,

https://okky.kr/article/322734

 

OKKY | 이 방식이 무리가 많이 가는 코딩방식일까요?

언어는 자바구요 for 문을 돌릴때마다 String 객체를 생성해서 할당하는 코딩법이 너무나도 많이 보입니다. String 뿐만 아니라 다른 객체들도 종종 보입니다. 예를들면 for(int i 0; i length;; i ) {    Str

okky.kr

https://stackoverflow.com/questions/8803674/declaring-variables-inside-or-outside-of-a-loop

 

Declaring variables inside or outside of a loop

Why does the following work fine? String str; while (condition) { str = calculateStr(); ..... } But this one is said to be dangerous/incorrect: while (condition) { String str =

stackoverflow.com

 

'Back-End > Java' 카테고리의 다른 글

[java] Stream 총정리  (0) 2022.08.09
[java] for-each문 간단 예제  (0) 2022.04.17
[java] 명명 규칙  (0) 2022.03.11
[Java] ArrayList 정리  (0) 2022.02.21
[java] Wraaper 클래스, 박싱(Boxing), 언박싱(Unboxing)  (0) 2022.02.16