Dev.kerberos
942
2021-09-23 14:06:11
3
142

자바 if문에 메소드를넣고 결과를 받을경우 이런문제가발생할수있을까요?


예를들면

test() <--return true or false

if(test()){

  //

} else {

}

이런경우 테스트의 결과를 계산하기도 전에 엘스로 넘어가버리는경우가있나요?

이럴때는그냥

메소드결과를위로빼야하나요?

뭔가 시간차이로 발생하는거같은데

0
  • 답변 3

  • ruinnel
    557
    2021-09-23 14:13:56

    test() 함수 실행결과에 따라 분기됩니다.

    test() 함수 실행이 완료되기 전에 else 블락이 실행되는건 불가능합니다.

  • monotonicity
    223
    2021-09-23 14:46:11
    일반적으로는 test()가 실행되고 분기되는게 맞습니다만, 모종의 이유로 test()라는 함수가 항상 false를 리턴할 경우 컴파일러에 따라 else 안에 있는 코드만 생성할수도 있습니다. 물론 버그가 아닌 이상 이런 경우는 없겠죠.
  • HJOW
    3k
    2021-09-23 15:28:22

    또 다른 경우일 수 있겠죠.



    test() 메소드가 비동기로 작업을 하는 경우...


    또는


    저 if문 부분이 짧은 시간 내에 여러번 실행되고 있는 경우 (접속자수가 많다거나...)

  • 로그인을 하시면 답변을 등록할 수 있습니다.